19f16e7908a8bca3aedae90340d499bce4ae8535
hiram
  Thu May 21 11:48:50 2026 -0700
reentrant save log files for the doTrackDb steps refs #31811

diff --git src/hg/utils/otto/userRequests/ottoRequestWatch.sh src/hg/utils/otto/userRequests/ottoRequestWatch.sh
index 37015b2e6eb..78868ee3593 100755
--- src/hg/utils/otto/userRequests/ottoRequestWatch.sh
+++ src/hg/utils/otto/userRequests/ottoRequestWatch.sh
@@ -372,66 +372,70 @@
 
   # target direction: targetDb is target, queryDb is query, work in buildDir.
   # 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
+      if ! "${doTdb}" >> /dev/shm/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
+        cat /dev/shm/doTdb.$$.log 1>&2
+        rm -f /dev/shm/doTdb.$$.log
         setErrorStatus "${reqId}"
         continue
       fi
+      rm -f /dev/shm/doTdb.$$.log
       ;;
     *)
       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}" >> /cluster/home/hiram/kent/src/hg/utils/otto/userRequests/swapTdb.log 2>&1; then
+      if ! "${swapTdb}" >> /dev/shm/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
+        cat /dev/shm/swapTdb.$$.log 1>&2
+        rm -f /dev/shm/swapTdb.$$.log
         setErrorStatus "${reqId}"
         continue
       fi
+      rm -f /dev/shm/swapTdb.$$.log
       ;;
     *)
       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
 
   # install liftOver and quickLift symlinks + register in hgcentraltest,
   # for both directions