f813e11a4d7798debd5a20c6222eb3a7be1bc0e0
chmalee
  Tue Jul 11 14:21:12 2023 -0700
Fail more gracefully when a genbank table has been left on a server mistakenly, refs #31744

diff --git src/hg/cgilib/cartJson.c src/hg/cgilib/cartJson.c
index 8377856..36c8adf 100644
--- src/hg/cgilib/cartJson.c
+++ src/hg/cgilib/cartJson.c
@@ -76,30 +76,37 @@
 for (table = hgp->tableList; table != NULL; table = table->next)
     {
     if (table->posList != NULL)
         {
         char *trackName = table->name, *tableName = table->name;
         struct trackDb *tdb = NULL;
         // clear the tdb cache if this track is a hub track
         if (! (sameString("trackDb", tableName) || sameString("helpDocs", tableName) ||
                 sameString("publicHubs", tableName)))
             {
             if (isHubTrack(tableName))
                 tdbList = NULL;
             tdb = tdbForTrack(db, tableName, &tdbList);
             if (!tdb && startsWith("all_", tableName))
                 tdb = tdbForTrack(db, tableName+strlen("all_"), &tdbList);
+            if (!tdb && startsWith("xeno", tableName))
+                {
+                // due to genbank track changes over the years, sometimes tables
+                // get left on different servers when their trackDb entry was removed
+                // long ago. In that case skip those hits
+                continue;
+                }
             if (!tdb)
                 errAbort("no track for table \"%s\" found via a findSpec", tableName);
             trackName = tdb->track;
             }
         jsonWriteObjectStart(jw, NULL);
         jsonWriteString(jw, "name", table->name);
         jsonWriteString(jw, "trackName", trackName);
         jsonWriteString(jw, "description", table->description);
         if (tdb != NULL)
             jsonWriteString(jw, "vis", hCarefulTrackOpenVis(db, trackName));
         jsonWriteListStart(jw, "matches");
         struct hgPos *pos;
         for (pos = table->posList; pos != NULL; pos = pos->next)
             {
             char *encMatches = cgiEncode(pos->browserName);