Skip to content

Seeking ExoPlayer Rapidly with OkHttp with http2 connection causes sockettimeoutexception #4078

@natez0r

Description

@natez0r

Issue description

When using the OkHttp extension and playing media over http/2, if you seek the player rapidly the OkHttp connection pool eventually will contain a connection that is hung and will never work. This is much easier to get to reproduce in our own application, but it's definitely possible to get to happen in a demo app.

I suspect that a connection isn't being closed properly and the following h/2 connections which are multiplexed over the same socket fail.

Reproduction steps

I have emailed the sample app and the stream to the alias. You need to serve the file over http/2. I used https://www.npmjs.com/package/@http2/ to serve the stream from my machine and used genymotion/emulator.

Setup @http2 to have host.js with the IP of your machine and start it pointing at the directory containing your HLS files.

replace "YOUR_IP" in test_app.nroy.twitter.com.exoplayerplayground.MainActivity#M3U8_URL with the IP of your machine

Run the provided app and play the video. Scrub back and forth using the red scrubber at the top quickly until the video no longer continues playing (it may take 30+ seconds). The sample app includes logging to ensure that you're using http/2 (this issue does not manifest unless using http/2). If you connect stetho, you'll see the player attempting to re-request the .ts segment, receiving the 200 response and headers, but never receiving any bytes.

Link to test content

emailed.

Version of ExoPlayer being used

2.7.0

Device(s) and version(s) of Android being used

geny motion emulator 8.0
nexus 5x 8.0

It takes awhile to reproduce in the sample, it happens almost instantly in our app.

A full bug report captured from the device

emailed

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions