69a23e3d6507ff4d95c8bd99f97615e1159a0c17 braney Fri Apr 17 09:56:19 2026 -0700 hgc: don't try to MySQL-connect to a GenArk source assembly in quickLift paths When a track has a quickLiftDb pointing to a GenArk accession (e.g. GCA_018466835.2), hgc crashed clicking on an item because genericClickHandlerPlus called hAllocConnTrack() on a db name that only exists as a hub assembly, not a MySQL database. The existing guard only skipped trackHubDatabase() entries (hubs registered in hubAssemblyHash), which doesn't include on-demand GenArk assemblies referenced by a quickLift chain. Extend the guard with isGenArk(), and apply the same fix in getTrackHtml() to avoid an "cannot find trackDb tables" warning on the subsequent description-HTML lookup. refs #37388 diff --git src/hg/lib/hui.c src/hg/lib/hui.c index c3554c93cc6..f5973164cf5 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -31,30 +31,31 @@ #include "fileUi.h" #include "bigBed.h" #include "bigRmskUi.h" #include "bigWig.h" #include "regexHelper.h" #include "snakeUi.h" #include "vcfUi.h" #include "vcf.h" #include "errCatch.h" #include "samAlignment.h" #include "makeItemsItem.h" #include "bedDetail.h" #include "pgSnp.h" #include "memgfx.h" #include "trackHub.h" +#include "genark.h" #include "gtexUi.h" #include "genbank.h" #include "htmlPage.h" #include "longRange.h" #include "barChartUi.h" #include "interactUi.h" #include "interact.h" #include "hicUi.h" #include "bigDbSnp.h" #include "customComposite.h" #include "trackVersion.h" #include "hubConnect.h" #include "bigBedFilter.h" #include "bedMethyl.h" @@ -10204,31 +10205,31 @@ } if (tableName) { char *date = firstWordInLine(sqlTableUpdate(conn, tableName)); if (date != NULL) printf("<B>Data last updated at UCSC: </B>%s<BR>\n", date); } hFreeConn(&conn); } char *getTrackHtml(char *db, char *trackName) /* Grab HTML from trackDb in native database for quickLift tracks. */ { char *html = NULL; -if (trackHubDatabase(db)) +if (trackHubDatabase(db) || isGenArk(db)) { // somehow get to the HTML that's not in the quickLift hub, but in the original hub } else { char query[4096]; sqlSafef(query, sizeof query, "tableName = '%s'", trackHubSkipHubName(trackName)); struct trackDb *loadTrackDb(char *db, char *where); struct trackDb *tdb = loadTrackDb(db, query); html = tdb->html; //char *html = tdb->html; if (isEmpty(tdb->html)) {