da0932abedd063b6e9fe087bc26ab9ef53b6cd2e
braney
  Thu Apr 22 16:43:20 2021 -0700
make hubApi use the trackDb cache.

diff --git src/hg/hubApi/apiUtils.c src/hg/hubApi/apiUtils.c
index b6e5854..98beabf 100644
--- src/hg/hubApi/apiUtils.c
+++ src/hg/hubApi/apiUtils.c
@@ -1,17 +1,18 @@
 /* utility functions for data API business */
 
+#include "trackHub.h"
 #include "dataApi.h"
 
 /* when measureTiming is used */
 static long processingStart = 0;
 
 void startProcessTiming()
 /* for measureTiming, beginning processing */
 {
 processingStart = clock1000();
 }
 
 void apiFinishOutput(int errorCode, char *errorString, struct jsonWrite *jw)
 /* finish json output, potential output an error code other than 200 */
 {
 /* this is the first time any output to stdout has taken place for
@@ -294,35 +295,31 @@
 if (dif < 0)
    return -1;
 else if (dif == 0.0)
    return strcasecmp(a->shortLabel, b->shortLabel);
 else
    return 1;
 }
 
 struct trackDb *obtainTdb(struct trackHubGenome *genome, char *db)
 /* return a full trackDb fiven the hub genome pointer, or ucsc database name */
 {
 struct trackDb *tdb = NULL;
 if (db)
     tdb = hTrackDb(db);
 else
-    {
-    tdb = trackHubTracksForGenome(genome->trackHub, genome, NULL);
-    tdb = trackDbLinkUpGenerations(tdb);
-    tdb = trackDbPolishAfterLinkup(tdb, genome->name);
-    }
+    tdb = trackHubAddTracksGenome(genome);
 slSort(tdb, trackDbTrackCmp);
 // slSort(&tdb, trackDbCmp);
 return tdb;
 }
 
 struct trackDb *findTrackDb(char *track, struct trackDb *tdb)
 /* search tdb structure for specific track, recursion on subtracks */
 {
 struct trackDb *trackFound = NULL;
 
 for (trackFound = tdb; trackFound; trackFound = trackFound->next)
     {
     if (trackFound->subtracks)
 	{
         struct trackDb *subTrack = findTrackDb(track, trackFound->subtracks);