bcf1004e0ab1faed65f32f2dc399fd539fb5aa34
braney
  Sat Apr 24 12:25:03 2021 -0700
Revert "make hubApi use the trackDb cache."

This reverts commit da0932abedd063b6e9fe087bc26ab9ef53b6cd2e.

diff --git src/hg/lib/hubConnect.c src/hg/lib/hubConnect.c
index 73aa820..18505fc 100644
--- src/hg/lib/hubConnect.c
+++ src/hg/lib/hubConnect.c
@@ -722,39 +722,70 @@
     // users may include quotes in their hub names requiring escaping
     sqlSafef(query, sizeof(query),
 	"update %s set shortLabel=\"%s\",longLabel=\"%s\",dbCount=\"%d\",dbList=\"%s\",errorMessage=\"\",lastOkTime=now() where id=%d",
 	getHubStatusTableName(), tHub->shortLabel, tHub->longLabel, 
 	dbCount, dbList,
 	hub->id);
     sqlUpdate(conn, query);
     }
 hDisconnectCentral(&conn);
 }
 
 struct trackDb *hubAddTracks(struct hubConnectStatus *hub, char *database)
 /* Load up stuff from data hub and return list. */
 {
 /* Load trackDb.ra file and make it into proper trackDb tree */
+struct trackDb *tdbList = NULL;
 struct trackHub *trackHub = hub->trackHub;
 
 if (trackHub != NULL)
     {
     struct trackHubGenome *hubGenome = trackHubFindGenome(trackHub, database);
     if (hubGenome != NULL)
-        return trackHubAddTracksGenome(hubGenome);
+	{
+        boolean doCache = trackDbCacheOn();
+
+        if (doCache)
+            {
+            // we have to open the trackDb file to get the udc cache to check for an update
+            struct udcFile *checkCache = udcFileMayOpen(hubGenome->trackDbFile, NULL);
+            if (checkCache != NULL)
+                {
+                time_t time = udcUpdateTime(checkCache);
+                udcFileClose(&checkCache);
+
+                struct trackDb *cacheTdb = trackDbHubCache(hubGenome->trackDbFile, time);
+
+                if (cacheTdb != NULL)
+                    return cacheTdb;
                 }
-return NULL;
+
+            memCheckPoint(); // we want to know how much memory is used to build the tdbList
+            }
+
+        struct dyString *incFiles = newDyString(4096);
+        tdbList = trackHubTracksForGenome(trackHub, hubGenome, incFiles);
+        tdbList = trackDbLinkUpGenerations(tdbList);
+        tdbList = trackDbPolishAfterLinkup(tdbList, database);
+        trackDbPrioritizeContainerItems(tdbList);
+        trackHubPolishTrackNames(trackHub, tdbList);
+
+        if (doCache)
+            trackDbHubCloneTdbListToSharedMem(hubGenome->trackDbFile, tdbList, memCheckPoint(), incFiles->string);
+	}
+    }
+return tdbList;
 }
 
 static struct grp *grpFromHub(struct hubConnectStatus *hub)
 /* Make up a grp structur from hub */
 {
 struct grp *grp;
 AllocVar(grp);
 char name[16];
 safef(name, sizeof(name), "hub_%d", hub->id);
 grp->name = cloneString(name);
 grp->label = cloneString(hub->trackHub->shortLabel);
 return grp;
 }
 
 struct trackDb *hubCollectTracks( char *database,  struct grp **pGroupList)