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("Data last updated at UCSC: %s
\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))
{