cdb348c551227ac24dc0fab9f18516459b47b962 braney Sat Sep 5 11:33:32 2026 -0700 hgTrackUi: don't try MySQL for a GenArk quickLift source assembly, refs #38272 The track settings page swaps in the track's quickLiftDb for the database it passes down to the cfg routines. For a GenArk source that is a bare accession with no MySQL database behind it, and asForDb() connected anyway, so the page stopped after the display-mode row. trackHubDatabase() does not catch this because the source hub is not loaded in that request; hgc got the matching isGenArk() guard in #37388. Two filter blocks in the same file guarded with isHubTrack(), a plain hub_ prefix test that a bare accession also slips past. Same guard added there. diff --git src/hg/lib/hui.c src/hg/lib/hui.c index ba3f2b888ac..51caa008e9b 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -7028,31 +7028,31 @@ boolean boxed, boolean parentLevel,char *name, char *title, boolean isHighlight) // Shows all *Filter style filters. Note that these are in random order and have no graceful title { int count = 0; struct trackDbFilter *trackDbFilters = NULL; if (isHighlight) trackDbFilters = tdbGetTrackNumHighlights(tdb); else trackDbFilters = tdbGetTrackNumFilters(tdb); if (trackDbFilters) { puts("<BR>"); struct trackDbFilter *filter = NULL; struct sqlConnection *conn = NULL; - if (!isHubTrack(db)) + if (!isHubTrack(db) && !isGenArk(db)) conn = hAllocConnTrack(db, tdb); struct asObject *as = asForTdb(conn, tdb); hFreeConn(&conn); while ((filter = slPopHead(&trackDbFilters)) != NULL) { char *field = filter->fieldName; char *scoreName = cloneString(filter->name); char *trackDbLabel = getLabelSetting(cart, tdb, field); if (as != NULL) { struct asColumn *asCol = asColumnFind(as, field); if (asCol != NULL) { // Found label so replace field; strip "|..." suffix used for detail page @@ -7172,31 +7172,31 @@ static int textFiltersShowAll(char *db, struct cart *cart, struct trackDb *tdb, boolean isHighlight) /* Show all the text filters for this track. */ { int count = 0; struct trackDbFilter *trackDbFilters = NULL; if (isHighlight) trackDbFilters = tdbGetTrackTextHighlights(tdb); else trackDbFilters = tdbGetTrackTextFilters(tdb); if (trackDbFilters) { puts("<BR>"); struct trackDbFilter *filter = NULL; struct sqlConnection *conn = NULL; - if (!isHubTrack(db)) + if (!isHubTrack(db) && !isGenArk(db)) conn = hAllocConnTrack(db, tdb); struct asObject *as = asForTdb(conn, tdb); hFreeConn(&conn); while ((filter = slPopHead(&trackDbFilters)) != NULL) { char *trackDbLabel = getLabelSetting(cart, tdb, filter->fieldName); char *value = cartUsualStringClosestToHome(cart, tdb, FALSE, filter->name, filter->setting); if (as != NULL) { struct asColumn *asCol = asColumnFind(as, filter->fieldName); if (asCol != NULL) { if (trackDbLabel == NULL) trackDbLabel = asCol->comment; } @@ -10606,31 +10606,33 @@ struct asObject *asObj = NULL; // Wrap some error catching around asForTdbOrDie. if (errCatchStart(errCatch)) { asObj = asForTdbOrDie(conn, tdb); } errCatchEnd(errCatch); errCatchFree(&errCatch); return asObj; } struct asObject *asForDb(struct trackDb *tdb, char* database) /* return asObject given the database. NULL if not found */ { struct sqlConnection *conn = NULL ; -if (!trackHubDatabase(database)) +// database can be a quickLift track's source assembly, which for a GenArk arrives +// here as a bare accession with no MySQL database behind it. +if (!trackHubDatabase(database) && !isGenArk(database)) conn = hAllocConnTrack(database, tdb); struct asObject *as = asForTdb(conn, tdb); hFreeConn(&conn); return as; } #ifdef OLD /* This got moved to main library . */ struct asColumn *asColumnFind(struct asObject *asObj, char *name) // Return named column. { struct asColumn *asCol = NULL; if (asObj!= NULL) { for (asCol = asObj->columnList; asCol != NULL; asCol = asCol->next) if (sameString(asCol->name, name))