New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 592703 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Mar 2016
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android
Pri: 1
Type: Bug



Sign in to add a comment

Improve retry support for media network loading.

Project Member Reported by dalecur...@chromium.org, Mar 7 2016

Issue description

We currently lag Android MediaPlayer by ~7% in pipeline success due to network read failures. This is likely due to much stricter retry logic. Currently we only allow 3 retries with an interval of 250ms between each try.  MediaPlayer on the other hand allows 10 retries with a 3 second wait in between, it also doesn't count some failure retries towards the retry cap.  We probably don't want all of the behavior but we do want some.

We have a couple options for a first cut here:
1. Just do what MediaPlayer does today on mobile-only (all other platforms have <1% read failures).
2. Arbitrarily choose some retry count and delay > existing and < MediaPlayer.
3. Setup a finch experiment with a couple of different delays and record the impact on pipeline status. Use the results to choose a specific value.
 

Comment 1 by hubbe@chromium.org, Mar 8 2016

Is it possible to fail *and* retry? Or do we need to really give up once we report an error back? Or is it ok to just delay error reporting indefinitely?  Stalling and prebuffer statistics is probably better indicators of how good things are going anyways.

I don't follow your suggestion. Can you elaborate?

It's not possible to issue a network read error and continue the pipeline today. And, I think doing that would be hard too since we'd be relying on ffmpeg to handle the failure in a recoverable way.

I think isolating the retry logic within a place where we can ensure it's well tested is likely to be more successful.


Comment 3 by hubbe@chromium.org, Mar 8 2016

I'm more worried about what we report to the javascript. I was wondering if we could tell the javascript that playback failed, but then change our minds later if the network becomes available again. The pipeline would continue to retry the connection, possibly forever.

Hmm, no I think once you report an error that has impacts on the state machine exposed to JavaScript -- it has no concept of a recoverable error at present AFAIK.
Labels: Merge-Request-50

Comment 7 by tin...@google.com, Mar 11 2016

Labels: -Merge-Request-50 Merge-Approved-50 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M50 (branch: 2661)

Comment 8 by gov...@chromium.org, Mar 13 2016


Please merge your change to M50 branch 2661 if you think it is a safe merge. If merge happens by Monday (03/14) 5:00 PM PST, we can take it in for next week beta. Thank you.
Project Member

Comment 9 by bugdroid1@chromium.org, Mar 14 2016

Labels: -merge-approved-50 merge-merged-2661
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/dc4b45b89b72a24bd668cdfd3f5e33aec091c1df

commit dc4b45b89b72a24bd668cdfd3f5e33aec091c1df
Author: Fredrik Hubinette <hubbe@google.com>
Date: Mon Mar 14 22:43:37 2016

Improve retry support for media network loading.

Retry 30 times in 30 seconds instead of 3 times in 750ms.
The retries are spaced so that the first retry is 250ms, second is 300ms, then 350ms, etc.

BUG= 592703 

Review URL: https://codereview.chromium.org/1777153002

Cr-Commit-Position: refs/heads/master@{#380723}
(cherry picked from commit 018c484fd85b3a64ef1037191ca513b389fa21ff)

Review URL: https://codereview.chromium.org/1796973004 .

Cr-Commit-Position: refs/branch-heads/2661@{#227}
Cr-Branched-From: ef6f6ae5e4c96622286b563658d5cd62a6cf1197-refs/heads/master@{#378081}

[modify] https://crrev.com/dc4b45b89b72a24bd668cdfd3f5e33aec091c1df/media/blink/buffered_data_source.cc
[modify] https://crrev.com/dc4b45b89b72a24bd668cdfd3f5e33aec091c1df/media/blink/buffered_data_source.h
[modify] https://crrev.com/dc4b45b89b72a24bd668cdfd3f5e33aec091c1df/media/blink/buffered_data_source_unittest.cc
[modify] https://crrev.com/dc4b45b89b72a24bd668cdfd3f5e33aec091c1df/media/blink/multibuffer_data_source_unittest.cc
[modify] https://crrev.com/dc4b45b89b72a24bd668cdfd3f5e33aec091c1df/media/blink/resource_multibuffer_data_provider.cc
[modify] https://crrev.com/dc4b45b89b72a24bd668cdfd3f5e33aec091c1df/media/blink/resource_multibuffer_data_provider.h

Status: Fixed (was: Assigned)

Sign in to add a comment