70e3a28ad9458ae12f69bf99db04ad4d3e857792
hiram
  Thu May 21 10:18:45 2026 -0700
send failed doTrackDb logs to stderr email to cron refs #31811

diff --git src/hg/utils/otto/userRequests/ottoRequestWatch.sh src/hg/utils/otto/userRequests/ottoRequestWatch.sh
index 20d85258cd8..37015b2e6eb 100755
--- src/hg/utils/otto/userRequests/ottoRequestWatch.sh
+++ src/hg/utils/otto/userRequests/ottoRequestWatch.sh
@@ -374,59 +374,61 @@
   # GenArk targets use doTrackDb.bash sitting next to the trackData dir;
   # UCSC native targets use chainNetTrackDb.pl which probes axtChain/*.bb
   # in the build dir and writes a stanza into the otto kent clone.
   rm -f "${trackData}/lastz.${queryDb}"
   ln -s "${workDir}" "${trackData}/lastz.${queryDb}"
   case "${targetDb}" in
     GC[AF]_*)
       doTdb="$(dirname "${trackData}")/doTrackDb.bash"
       if [ ! -x "${doTdb}" ]; then
         printf "ERROR: can not find %s\n" "${doTdb}" 1>&2
         setErrorStatus "${reqId}"
         continue
       fi
       if ! "${doTdb}" >> /cluster/home/hiram/kent/src/hg/utils/otto/userRequests/doTdb.log 2>&1; then
         printf "ERROR: %s failed\n" "${doTdb}" 1>&2
+        cat /cluster/home/hiram/kent/src/hg/utils/otto/userRequests/doTdb.log 1>&2
         setErrorStatus "${reqId}"
         continue
       fi
       ;;
     *)
       if ! ( cd "${buildDir}" \
              && "${scriptDir}/chainNetTrackDb.pl" \
                   "${targetDb}" "${queryDb}" ); then
         printf "ERROR: chainNetTrackDb.pl failed for %s/%s\n" \
           "${targetDb}" "${queryDb}" 1>&2
         setErrorStatus "${reqId}"
         continue
       fi
       ;;
   esac
 
   # swap direction: queryDb is target, targetDb is query, work in swapDir
   rm -f "${swapData}/lastz.${targetDb}"
   ln -s "${swapWork}" "${swapData}/lastz.${targetDb}"
   case "${queryDb}" in
     GC[AF]_*)
       swapTdb="$(dirname "${swapData}")/doTrackDb.bash"
       if [ ! -x "${swapTdb}" ]; then
         printf "ERROR: can not find %s\n" "${swapTdb}" 1>&2
         setErrorStatus "${reqId}"
         continue
       fi
-      if ! "${swapTdb}" > /dev/null 2>&1; then
+      if ! "${swapTdb}" >> /cluster/home/hiram/kent/src/hg/utils/otto/userRequests/swapTdb.log 2>&1; then
         printf "ERROR: %s failed\n" "${swapTdb}" 1>&2
+        cat /cluster/home/hiram/kent/src/hg/utils/otto/userRequests/swapTdb.log 1>&2
         setErrorStatus "${reqId}"
         continue
       fi
       ;;
     *)
       if ! ( cd "${swapDir}" \
              && "${scriptDir}/chainNetTrackDb.pl" \
                   "${queryDb}" "${targetDb}" ); then
         printf "ERROR: chainNetTrackDb.pl failed for %s/%s\n" \
           "${queryDb}" "${targetDb}" 1>&2
         setErrorStatus "${reqId}"
         continue
       fi
       ;;
   esac