0b7b4c7700268abd9705dc8feef9f284ffdff350 braney Fri May 1 09:01:40 2026 -0700 hgTracks: let quickLift tracks join the parallel-fetch worker pool When a track has a quickLiftDb setting, validate its bigDataUrl against the source db rather than the current target db, so the /gbdb/<sourceDb>/ prefix check in customFactoryParallelLoad accepts it. Previously quickLift tracks fell through to serial load, costing ~5 s per track on the main thread. refs #37470 diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index d236a9cb0dd..399f739f5bf 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -7940,32 +7940,42 @@ } struct paraFetchData { struct paraFetchData *next; struct track *track; boolean done; boolean doLoadSummary; }; static boolean isTrackForParallelLoad(struct track *track) /* Is this a track that should be loaded in parallel ? */ { char *bdu = trackDbSetting(track->tdb, "bigDataUrl"); - -return customFactoryParallelLoad(bdu, track->tdb->type, database, TRUE) && (track->subtracks == NULL); +char *db = database; + +// quickLifted tracks fetch from the source assembly via the chain in +// quickLiftUrl, so their bigDataUrl is /gbdb/<sourceDb>/... -- the source +// db, not the current target db. customFactoryParallelLoad's bigDataUrl +// validity check requires /gbdb/<X>/ to match its db argument, so when +// the track declares its source via quickLiftDb, validate against that. +char *quickLiftDb = trackDbSetting(track->tdb, "quickLiftDb"); +if (quickLiftDb != NULL) + db = quickLiftDb; + +return customFactoryParallelLoad(bdu, track->tdb->type, db, TRUE) && (track->subtracks == NULL); } static void findLeavesForParallelLoad(struct track *trackList, struct paraFetchData **ppfdList, boolean doLoadSummary) /* Find leaves of track tree that are remote network resources for parallel-fetch loading */ { struct track *track; if (!trackList) return; for (track = trackList; track != NULL; track = track->next) { char *quickLiftFile = trackDbSetting(track->tdb, "quickLiftUrl"); if (doLoadSummary && quickLiftFile) continue;