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)