423e2e498d9be057b15a342d1059b969ed303bad
markd
  Tue Apr 27 17:54:55 2021 -0700
Don't call halOpenLOD when bigDataUrl is NULL.  This happens when hgTrackUi cfgHalSnake is called on a composite track in an assembly hub.  It is not clear by this first check for isNameAtParentLevel does cause this function to skip the open.  However, in previous versions of HAL, passing in a a NULL file name returned a file handle of -1.  cfgHalSnake then continue to call HAL function s with -1, and they returned empty values.  Amazing this ever worked

diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c
index a9973d3..d58f75e 100644
--- src/hg/hgTrackUi/hgTrackUi.c
+++ src/hg/hgTrackUi/hgTrackUi.c
@@ -2799,33 +2799,35 @@
     printDataVersion(database, tdb);
     //printf("&nbsp;&nbsp;<EM style='color:#666666; font-size:smaller;'>%s</EM>", dataVersion);
     printf("</TD></TR>");
     }
 printf("</TABLE>");
 }
 
 #ifdef USE_HAL
 static void cfgHalSnake(struct trackDb *tdb, char *name)
 {
 boolean parentLevel = isNameAtParentLevel(tdb, name);
 if (parentLevel)
     return;
 char *fileName = trackDbSetting(tdb, "bigDataUrl");
 if (fileName == NULL)
-    errAbort("bigDataUrl track setting not found for HAL track %s", tdb->track);
+     return;
 char *errString;
 int handle = halOpenLOD(fileName, &errString);
+if (handle < 0)
+    errAbort("can't open HAL file: %s", fileName);
 struct hal_species_t *speciesList, *sp;
 char *otherSpecies = trackDbSetting(tdb, "otherSpecies");
 extern char *database;
 
 speciesList = halGetPossibleCoalescenceLimits(handle, otherSpecies, 
     trackHubSkipHubName(database), &errString);
 
 int count = 0;
 for(sp=speciesList; sp; sp = sp->next)
     count++;
 
 if (count == 0)
     return;
 char codeVarName[1024];
 safef(codeVarName, sizeof codeVarName, "%s.coalescent", tdb->track);