Skip to content

Support retrying network errors indefinitely #7309

Closed
@DorisGM

Description

[REQUIRED] Issue description

When I played a video for a long time, maybe the network isn't good.so throw HttpDataSource$HttpDataSourceException: java.net.SocketTimeoutException: timeout when invoke read method. I want to catch this error at onPlayerError and to retry play .But I found i can't receive this error at this method. And after throw this error, exoplayer don't play anymore ,freeze at last frame.

[REQUIRED] Reproduction steps

SocketTimeoutException: timeout when read can't catch up by onPlayerError.

[REQUIRED] Link to test content

sorry, the content link is provisional.

[REQUIRED] A full bug report captured from the device

EventLogger: internalError [eventTime=6411.38, mediaPos=0.02, window=0, period=0, loadError
04-27 18:54:23.808 7101 7101 E EventLogger: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: java.net.SocketTimeoutException: timeout
04-27 18:54:23.808 7101 7101 E EventLogger: at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.read(DefaultHttpDataSource.java:359)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.google.android.exoplayer2.upstream.DefaultDataSource.read(DefaultDataSource.java:182)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.google.android.exoplayer2.upstream.StatsDataSource.read(StatsDataSource.java:91)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.google.android.exoplayer2.extractor.DefaultExtractorInput.readFromDataSource(DefaultExtractorInput.java:287)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.google.android.exoplayer2.extractor.DefaultExtractorInput.read(DefaultExtractorInput.java:62)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.google.android.exoplayer2.extractor.ts.TsExtractor.fillBufferWithAtLeastOnePacket(TsExtractor.java:385)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.google.android.exoplayer2.extractor.ts.TsExtractor.read(TsExtractor.java:275)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:982)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:391)
04-27 18:54:23.808 7101 7101 E EventLogger: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
04-27 18:54:23.808 7101 7101 E EventLogger: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
04-27 18:54:23.808 7101 7101 E EventLogger: at java.lang.Thread.run(Thread.java:761)
04-27 18:54:23.808 7101 7101 E EventLogger: Caused by: java.net.SocketTimeoutException: timeout
04-27 18:54:23.808 7101 7101 E EventLogger: at com.android.okhttp.okio.Okio$3.newTimeoutException(Okio.java:212)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.android.okhttp.okio.AsyncTimeout.exit(AsyncTimeout.java:261)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:215)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.android.okhttp.okio.RealBufferedSource.read(RealBufferedSource.java:50)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.android.okhttp.internal.http.HttpConnection$UnknownLengthSource.read(HttpConnection.java:516)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.android.okhttp.okio.RealBufferedSource$1.read(RealBufferedSource.java:371)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.readInternal(DefaultHttpDataSource.java:696)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.read(DefaultHttpDataSource.java:357)
04-27 18:54:23.808 7101 7101 E EventLogger: ... 11 more
04-27 18:54:23.808 7101 7101 E EventLogger: Caused by: java.net.SocketException: Socket closed
04-27 18:54:23.808 7101 7101 E EventLogger: at java.net.SocketInputStream.socketRead0(Native Method)
04-27 18:54:23.808 7101 7101 E EventLogger: at java.net.SocketInputStream.read(SocketInputStream.java:151)
04-27 18:54:23.808 7101 7101 E EventLogger: at java.net.SocketInputStream.read(SocketInputStream.java:120)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.android.okhttp.okio.Okio$2.read(Okio.java:136)
04-27 18:54:23.808 7101 7101 E EventLogger: at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:211)
04-27 18:54:23.808 7101 7101 E EventLogger: ... 16 more
04-27 18:54:23.808 7101 7101 E EventLogger: ]

[REQUIRED] Version of ExoPlayer being used

the latest.

[REQUIRED] Device(s) and version(s) of Android being used

H6, Android 7.1

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions