3268071bb819bc9788b802a461e95cbf3e40b1b3 jcasper Tue Dec 24 00:56:42 2013 -0800 Fixed issue where cron invocation failed because it couldn't write to /dev/stderr. Script now calls bash -c to write to stderr diff --git src/utils/qa/databaseAday.csh src/utils/qa/databaseAday.csh index 1d55ee1..57e3b9c 100755 --- src/utils/qa/databaseAday.csh +++ src/utils/qa/databaseAday.csh @@ -1,141 +1,141 @@ #!/bin/tcsh source `which qaConfig.csh` ######################### # # 01-11-07 # Ann Zweig # # Scrolls through all of the databases on the RR # one per day. Monitoring scripts can call this # script to find out the "database of the day". # ########################## set choice='' set outPath='/usr/local/apache/htdocs-genecats/qa/test-results' set todaysDb='' set yestDb='' set list='' set error="ERROR - no database list. Try this first: databaseAday.csh init" if ( $#argv < 1 || $#argv > 2 ) then echo echo " call with 'today' to find out the database we are monitoring today" echo echo " usage: today | yesterday | init | next [path]" echo " path defaults to /usr/local/apache/htdocs-genecats/qa/test-results" echo exit 1 else set choice="$argv[1]" endif # run only from hgwdev if ( "$HOST" != "hgwdev" ) then echo echo "\n ERROR: you must run this script on hgwdev!\n" exit 1 endif if ( $#argv == 2 ) then set outPath=$argv[2] endif # check values of choice echo $choice | egrep -wq "today|yesterday|init|next" if ( $status ) then echo echo " you must call this script using either 'today', 'yesterday', \ 'init' or 'next'" echo exit 1 endif # this is a 'today' call, just get the top db on the list and exit if ( $choice == "today" ) then # make sure the databaseAdayList exists if (! -e $outPath/databaseAdayList) then echo "\n $error\n" exit 1 endif # return the database at the top of the list set todaysDb=`head -1 $outPath/databaseAdayList` # be sure we haven't completely wrapped around the list # and redo list if so (catches any new dbs since last init) if ( $todaysDb == "DO-OVER" ) then $0 init $outPath set todaysDb=`$0 today $outPath` - echo "starting new db list" > /dev/stderr + bash -c 'echo "starting new db list" >&2' endif # all is good! echo $todaysDb exit 0 endif # this is a 'yesterday' call if ( $choice == "yesterday" ) then if (! -e $outPath/databaseAdayList) then echo "\n $error\n" exit 1 endif # return the database at the bottom of the list set yestDb=`tail -1 $outPath/databaseAdayList` # check to see if it is a new list # an redo list if so if ( $yestDb == "DO-OVER" ) then echo echo " sorry, list is freshly generated." echo " no db available from yesterday." echo exit 1 else echo $yestDb exit 0 endif endif # this is an initialization call -- query the RR to get the # list of active databases (replace the previous list (if any) with this new one) if ( $choice == "init" ) then # remove existing file rm -f $outPath/databaseAdayList # get list of active $gbd databases hgsql -h $sqlrr hgcentral -B -N \ -e "SELECT name FROM dbDb WHERE active = 1 ORDER BY RAND()" \ > $outPath/databaseAdayList # add a tag at the end of the list # (this will show when it's time to create a new list) echo "DO-OVER" >> $outPath/databaseAdayList # give the file the correct permissions chmod 774 $outPath/databaseAdayList exit 0 endif # this is a next call -- edit the list so that the next database is at the top # this call happens automatically each night from a qateam cronjob if ( $choice == "next" ) then # make sure the list exists if (! -e $outPath/databaseAdayList) then echo "\n $error\n" exit 1 endif # get the database at the top of the list set todaysDb=`head -1 $outPath/databaseAdayList` # be sure we haven't completely wrapped around the list # if so, reinitialize list and quit if ( $todaysDb == "DO-OVER" ) then $0 init exit 0 endif # put the top db at the bottom of the list set list=`grep -v $todaysDb $outPath/databaseAdayList` echo $list $todaysDb | sed -e "s/ /\n/g" > $outPath/databaseAdayList exit 0 endif