f07f43476ae7ac72bdbd83603c63191bb699104a galt Tue Nov 4 12:05:12 2025 -0800 Allows local curated genomes by checking for /gbdb/$db. Does not allow those local bigDataUrl directories to be used for custom tracks. Allows those hub URLs with local paths to be loaded in the background for better speed. Allows for vcfTabix etc to work with hs1. Removes need for udc.localDir setting in hg.conf for hgwdev, hgwbeta, RR, and mirrors. Warning do not set udc.localDir= to an empty string since it is completely permissive suffix matches all URLs. fixes #rm34544 diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index 253c2e47d55..5ffcd01769c 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -7767,31 +7767,31 @@ 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) && (track->subtracks == NULL); +return customFactoryParallelLoad(bdu, track->tdb->type, database, 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; @@ -7893,31 +7893,31 @@ for (struct trackDb *decoratorTdb = decoratorTdbs; decoratorTdb != NULL; decoratorTdb = decoratorTdb->next) { char *decoratorUrl = trackDbSetting(decoratorTdb, "bigDataUrl"); if (!decoratorUrl) { warn ("Decorator tags are present as %s, but no decorator file specified (bigDataUrl is missing)", decoratorTdb->track); continue; } struct bbiFile *bbi = NULL; struct errCatch *errCatch = errCatchNew(); if (errCatchStart(errCatch)) { - if (isValidBigDataUrl(decoratorUrl,TRUE)) + if (isValidBigDataUrl(decoratorUrl,TRUE, database, TRUE)) bbi = bigBedFileOpenAlias(decoratorUrl, chromAliasFindAliases); } errCatchEnd(errCatch); if (errCatch->gotError) { warn ("Network error while attempting to retrieve decorations from %s (track %s) - %s", decoratorUrl, track->track, dyStringContents(errCatch->message)); continue; } errCatchFree(&errCatch); struct asObject *decoratorFileAsObj = asParseText(bigBedAutoSqlText(bbi)); if (!asColumnNamesMatchFirstN(decoratorFileAsObj, decorationAsObj(), DECORATION_NUM_COLS)) { warn ("Decoration file associated with track %s (%s) does not match the expected format - see decoration.as",