Skip to content

htsget: broken "File->Load from URL" support #1735

@brainstorm

Description

@brainstorm

While investigating igvteam/igv.js#2023 (comment) today on IGV.js, I wondered how IGV desktop was faring... and found the following issue.

I'm using IGV from homebrew on OSX:

Image Image

When trying to load a simple BAM file from https://htsget-rs.umccr.workers.dev/reads/bam/mt.sorted, the following happens:

Image Image

Console yields the following message:

(...)
INFO [Aug 13,2025 19:09] [TrackLoader] Loading resource:  https://htsget-rs.umccr.workers.dev/reads/bam/mt.sorted
SEVERE [Aug 13,2025 19:10] [HttpUtils] Range header removed by client or ignored by server for url: https://htsget-rs.umccr.workers.dev/reads/bam/mt.sorted

And after clicking ok on that dialog, IGV gets stuck in "Loading..." state until it times out after a while:

Image

With the following backtrace behind the scenes:

SEVERE [Aug 13,2025 19:13] [TrackLoader] Read timed out
SEVERE [Aug 13,2025 19:13] [TrackLoader] java.net.SocketTimeoutException: Read timed out
	at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:278)
	at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:304)
	at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:346)
	at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:796)
	at java.base/java.net.Socket$SocketInputStream.implRead(Socket.java:1116)
	at java.base/java.net.Socket$SocketInputStream.read(Socket.java:1103)
	at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:489)
	at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:483)
	at java.base/sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:70)
	at java.base/sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1462)
	at java.base/sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:1068)
	at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:291)
	at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:347)
	at java.base/java.io.BufferedInputStream.implRead(BufferedInputStream.java:420)
	at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:399)
	at java.base/sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:827)
	at java.base/sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:759)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1706)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1615)
	at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:531)
	at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:307)
	at org.igv/org.broad.igv.util.HttpUtils.openConnection(HttpUtils.java:789)
	at org.igv/org.broad.igv.util.HttpUtils.openConnection(HttpUtils.java:851)
	at org.igv/org.broad.igv.util.HttpUtils.openConnection(HttpUtils.java:804)
	at org.igv/org.broad.igv.util.HttpUtils.openConnection(HttpUtils.java:665)
	at org.igv/org.broad.igv.util.HttpUtils.openConnection(HttpUtils.java:661)
	at org.igv/org.broad.igv.util.stream.IGVSeekableHTTPStream.openInputStreamForRange(IGVSeekableHTTPStream.java:211)
	at org.igv/org.broad.igv.util.stream.IGVSeekableHTTPStream._read(IGVSeekableHTTPStream.java:125)
	at org.igv/org.broad.igv.util.stream.IGVSeekableHTTPStream.read(IGVSeekableHTTPStream.java:85)
	at htsjdk@4.3.0-module/htsjdk.samtools.seekablestream.SeekableStream.readFully(SeekableStream.java:84)
	at org.igv/org.broad.igv.track.FileFormatUtils.isGzip(FileFormatUtils.java:177)
	at org.igv/org.broad.igv.track.FileFormatUtils.determineFormat(FileFormatUtils.java:43)
	at org.igv/org.broad.igv.track.TrackLoader.load(TrackLoader.java:250)
	at org.igv/org.broad.igv.ui.IGV.load(IGV.java:1277)
	at org.igv/org.broad.igv.ui.IGV.loadResources(IGV.java:1202)
	at org.igv/org.broad.igv.ui.IGV$2.run(IGV.java:383)
	at org.igv/org.broad.igv.util.LongRunningTask.call(LongRunningTask.java:73)
	at org.igv/org.broad.igv.util.LongRunningTask.call(LongRunningTask.java:43)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1575)

SEVERE [Aug 13,2025 19:13] [IGV] Error loading track
SEVERE [Aug 13,2025 19:13] [IGV] org.broad.igv.exceptions.DataLoadException: Read timed out
	at org.igv/org.broad.igv.track.TrackLoader.load(TrackLoader.java:314)
	at org.igv/org.broad.igv.ui.IGV.load(IGV.java:1277)
	at org.igv/org.broad.igv.ui.IGV.loadResources(IGV.java:1202)
	at org.igv/org.broad.igv.ui.IGV$2.run(IGV.java:383)
	at org.igv/org.broad.igv.util.LongRunningTask.call(LongRunningTask.java:73)
	at org.igv/org.broad.igv.util.LongRunningTask.call(LongRunningTask.java:43)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1575)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions