030283b12881d07a2cf7c84b2af320dd9c39b30a
braney
  Sat Feb 28 13:21:59 2026 -0800
fix problem that cause crash if the trackDb cache was turned on and one
of the tables in the hg.conf trackDb setting doesn't exist.  No RM.
Reported by Hillier.

diff --git src/hg/lib/hdb.c src/hg/lib/hdb.c
index 0ebe588d47d..4d861601709 100644
--- src/hg/lib/hdb.c
+++ src/hg/lib/hdb.c
@@ -4294,31 +4294,32 @@
     }
 
 struct trackDb *tdbList = NULL;
 
 boolean doCache = trackDbCacheOn();
 char *tdbPathString = hTrackDbPath();
 
 if (doCache)
     {
     struct slName *tableList = hTrackDbList();
 
     struct sqlConnection *conn = hAllocConn(db);
     time_t newestTime = 0;
     for(; tableList; tableList = tableList->next)
         {
-        time_t tableTime = sqlTableUpdateTime(conn, tableList->name);
+        time_t tableTime = sqlTableMaybeUpdateTime(conn, tableList->name);
+        if (tableTime != 0)
             newestTime = tableTime > newestTime ? tableTime : newestTime;
         }
 
     hFreeConn(&conn);
 
     long now = clock1();
 
     // if the trackDb table has changed in the last five minutes, avoid caching because the table may
     // not be done changing.  Updates are not atomic.
     if (now - newestTime < 5 * 60)
         doCache = 0;
     else
         {
         struct trackDb *cacheTdb = trackDbCache(db, tdbPathString, newestTime);