b02d20dede590203b6ecca10be473e7e22179a51 braney Thu Jan 12 13:12:53 2023 -0800 deal with some weird edge cases in hub that Hiram's hub illicit. Don't read a single trackDb.txt file more than once even if it's referenced from mulitple hubs. Also, only the first time a genome is defined does it get to populate its own groups. Subsequent examples get put into their own group, just like a normal track hub does. diff --git src/hg/hgTracks/searchTracks.c src/hg/hgTracks/searchTracks.c index f6b3441..9bcb722 100644 --- src/hg/hgTracks/searchTracks.c +++ src/hg/hgTracks/searchTracks.c @@ -285,31 +285,33 @@ { pfd = slPopHead(&pfdList); pfd->threadId = threadParam; slAddHead(&pfdRunning, pfd); } pthread_mutex_unlock(&pfdMutex); if (allDone) return NULL; struct hubSearchTracks *hst = pfd->hst; struct track *tracksToAdd = NULL; long startTime = clock1000(); struct errCatch *errCatch = errCatchNew(); if (errCatchStart(errCatch)) { pfd->done = FALSE; - struct trackDb *tdbList = hubAddTracks(hst->hub, database); + boolean foundFirstGenome = FALSE; + struct hash *trackDbNameHash = newHash(5); + struct trackDb *tdbList = hubAddTracks(hst->hub, database, &foundFirstGenome, trackDbNameHash); if (measureTiming) measureTime("After connecting to hub %s: '%d': ", hst->hubUrl, hst->hubId); // get composite and subtracks into trackList hubTdbListToTrackList(tdbList, &tracksToAdd, hst->searchedTracks); hubTdbListAddSupers(tdbList, &tracksToAdd, hst->searchedTracks); pfd->done = TRUE; pfd->tlist = tracksToAdd; pfd->searchTime = clock1000() - startTime;; } errCatchEnd(errCatch); pthread_mutex_lock(&pfdMutex); slRemoveEl(&pfdRunning, pfd); slAddHead(&pfdDone, pfd); if (measureTiming) measureTime("Finished finding tracks for hub '%s': ", pfd->hubName);