c70c8e495f84b293bd144549053cfe708768441e angie Thu Oct 17 13:58:05 2019 -0700 Use errCatch in bigBedAddLinkedFeaturesFromExt in case there's a transient problem with the bigBed file. tangentially refs #23283 diff --git src/hg/hgTracks/bigBedTrack.c src/hg/hgTracks/bigBedTrack.c index b2b7a06..464fcf5 100644 --- src/hg/hgTracks/bigBedTrack.c +++ src/hg/hgTracks/bigBedTrack.c @@ -409,31 +409,47 @@ freeMem(rest); return field; } void bigBedAddLinkedFeaturesFromExt(struct track *track, char *chrom, int start, int end, int scoreMin, int scoreMax, boolean useItemRgb, int fieldCount, struct linkedFeatures **pLfList, int maxItems) /* Read in items in chrom:start-end from bigBed file named in track->bbiFileName, convert * them to linkedFeatures, and add to head of list. */ { struct lm *lm = lmInit(0); struct trackDb *tdb = track->tdb; struct bigBedInterval *bb, *bbList = bigBedSelectRangeExt(track, chrom, start, end, lm, maxItems); char *mouseOverField = cartOrTdbString(cart, track->tdb, "mouseOverField", NULL); -struct bbiFile *bbi = fetchBbiForTrack(track); +/* protect against temporary network error */ +struct bbiFile *bbi = NULL; +struct errCatch *errCatch = errCatchNew(); +if (errCatchStart(errCatch)) + { + bbi = fetchBbiForTrack(track); + } +errCatchEnd(errCatch); +if (errCatch->gotError) + { + track->networkErrMsg = cloneString(errCatch->message->string); + track->drawItems = bigDrawWarning; + track->totalHeight = bigWarnTotalHeight; + return; + } +errCatchFree(&errCatch); + int seqTypeField = 0; if (sameString(track->tdb->type, "bigPsl")) { seqTypeField = bbExtraFieldIndex(bbi, "seqType"); } int mouseOverIdx = bbExtraFieldIndex(bbi, mouseOverField); track->bbiFile = NULL; struct bigBedFilter *filters = bigBedBuildFilters(cart, bbi, track->tdb) ; if (compositeChildHideEmptySubtracks(cart, track->tdb, NULL, NULL)) labelTrackAsFiltered(track); unsigned filtered = 0;