f9f813c4330857fed2ed6008e6d6e9eb54d2474a galt Fri Mar 28 04:51:53 2025 -0700 fixing slNameSort in list.c for hubApi, refreshed expected output lists. fixes #26947 diff --git src/hg/lib/hubConnect.c src/hg/lib/hubConnect.c index ac3cb827f49..38a2f70c5c5 100644 --- src/hg/lib/hubConnect.c +++ src/hg/lib/hubConnect.c @@ -921,85 +921,54 @@ { safef(buffer, sizeof buffer, "%s_%s", hub->name, grpList->name); grpList->name = cloneString(buffer); safef(buffer, sizeof buffer, "Hub: %s : %s", hub->shortLabel, grpList->label); grpList->label = cloneString(buffer); } } struct trackDb *hubAddTracks(struct hubConnectStatus *hub, char *database, boolean *foundFirstGenome, struct hash *trackDbNameHash, struct grp **hubGroups) /* Load up stuff from data hub and append to list. The hubUrl points to * a trackDb.ra format file. Only the first example of a genome gets to * populate groups, the others get a group for the trackHub. A particular * trackDb is only read once even if referenced from more than one hub. */ { struct trackDb *tdbList = NULL; +/* Load trackDb.ra file and make it into proper trackDb tree */ struct trackHub *trackHub = hub->trackHub; if (trackHub != NULL) { struct trackHubGenome *hubGenome = trackHubFindGenome(trackHub, database); if ((hubGenome == NULL) || hashLookup(trackDbNameHash, hubGenome->trackDbFile)) hubGenome = NULL; // we already saw this trackDb, so ignore this stanza else hashStore(trackDbNameHash, hubGenome->trackDbFile); if (hubGenome != NULL) { // add groups if ((hubGenome->groups != NULL) && hubsCanAddGroups()) { struct grp *list = readGroupRa(hubGenome->groups); grpListAddHubName(list, hub->trackHub); if (hubGroups) *hubGroups = slCat(*hubGroups, list); } - // now grab tracks - 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 && hubGenome->quickLiftChain) - cacheTdb = fixForQuickLift(cacheTdb, hubGenome, hub); - - if (cacheTdb != NULL) - return cacheTdb; - } - - memCheckPoint(); // we want to know how much memory is used to build the tdbList - } - - struct dyString *incFiles = dyStringNew(4096); - tdbList = trackHubTracksForGenome(trackHub, hubGenome, incFiles, foundFirstGenome); - tdbList = trackDbLinkUpGenerations(tdbList); - tdbList = trackDbPolishAfterLinkup(tdbList, database); - trackDbPrioritizeContainerItems(tdbList); - trackHubPolishTrackNames(trackHub, tdbList); - - if (doCache) - trackDbHubCloneTdbListToSharedMem(hubGenome->trackDbFile, tdbList, memCheckPoint(), incFiles->string); + tdbList = trackHubAddTracksGenome(hubGenome); if (tdbList && hubGenome->quickLiftChain) tdbList = fixForQuickLift(tdbList, hubGenome, hub); } } 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);