-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: Exclude TIMEOUT errors when disabling streams #7369
Conversation
Incremental code coverage: 100.00% |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For me this is not valid, we should also accept errors of the TIMEOUT or BAD_HTTP_STATUS type, for Low Latency these errors are common and we should treat them as well.
The TIMEOUT error is what triggers the loading loop described in #7368. |
See my latest comments in the issue. |
9b2bb07
to
9e090d2
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't have any objections with this approach; I agree TIMEOUT
events caused by transient network events do not make the stream inherently broken (plus Joey finding out TIMEOUT
errors were initially added as a cautionary measure).
In #7368, we get stuck in a loop loading forever. This regression was introduced in v4.4.0 and affects all v4.4, v4.5, v4.6, v4.7, and v4.8 releases, as well as v4.9.0-28, v4.9.2-caf1, v4.10.0-20, and v4.11.0-6. The loop is composed of these elements: 1. an error that triggers disabling a stream 2. an error that doesn't resolve itself over time 3. an error that is slow enough to trigger that the first streams get re-enabled 4. VOD content that doesn't change while we sit in the loop 5. enough streams to avoid exhausting them during the cycle Only `TIMEOUT` errors can trigger this bug AFAICT, so we should exclude those from the logic to disable streams. Note also that live streaming already retries indefinitely by default, and that normal ABR logic will change streams for us if we timeout due to a lack of bandwidth. Disabling streams on `TIMEOUT` was suggested initially in #4764, but was not a requirement of the OP. It was added out of caution in #4769, but not really vetted. Because it was not ever explicitly needed, excluding it is not a regression. Closes #7368 Backported to v4.9.2-caf Release-As: 4.9.2-caf2
In #7368, we get stuck in a loop loading forever. This regression was introduced in v4.4.0 and affects all v4.4, v4.5, v4.6, v4.7, and v4.8 releases, as well as v4.9.0-28, v4.9.2-caf1, v4.10.0-20, and v4.11.0-6. The loop is composed of these elements: 1. an error that triggers disabling a stream 2. an error that doesn't resolve itself over time 3. an error that is slow enough to trigger that the first streams get re-enabled 4. VOD content that doesn't change while we sit in the loop 5. enough streams to avoid exhausting them during the cycle Only `TIMEOUT` errors can trigger this bug AFAICT, so we should exclude those from the logic to disable streams. Note also that live streaming already retries indefinitely by default, and that normal ABR logic will change streams for us if we timeout due to a lack of bandwidth. Disabling streams on `TIMEOUT` was suggested initially in #4764, but was not a requirement of the OP. It was added out of caution in #4769, but not really vetted. Because it was not ever explicitly needed, excluding it is not a regression. Closes #7368
In #7368, we get stuck in a loop loading forever. This regression was introduced in v4.4.0 and affects all v4.4, v4.5, v4.6, v4.7, and v4.8 releases, as well as v4.9.0-28, v4.9.2-caf1, v4.10.0-20, and v4.11.0-6. The loop is composed of these elements: 1. an error that triggers disabling a stream 2. an error that doesn't resolve itself over time 3. an error that is slow enough to trigger that the first streams get re-enabled 4. VOD content that doesn't change while we sit in the loop 5. enough streams to avoid exhausting them during the cycle Only `TIMEOUT` errors can trigger this bug AFAICT, so we should exclude those from the logic to disable streams. Note also that live streaming already retries indefinitely by default, and that normal ABR logic will change streams for us if we timeout due to a lack of bandwidth. Disabling streams on `TIMEOUT` was suggested initially in #4764, but was not a requirement of the OP. It was added out of caution in #4769, but not really vetted. Because it was not ever explicitly needed, excluding it is not a regression. Closes #7368
In #7368, we get stuck in a loop loading forever. This regression was introduced in v4.4.0 and affects all v4.4, v4.5, v4.6, v4.7, and v4.8 releases, as well as v4.9.0-28, v4.9.2-caf1, v4.10.0-20, and v4.11.0-6. The loop is composed of these elements: 1. an error that triggers disabling a stream 2. an error that doesn't resolve itself over time 3. an error that is slow enough to trigger that the first streams get re-enabled 4. VOD content that doesn't change while we sit in the loop 5. enough streams to avoid exhausting them during the cycle Only `TIMEOUT` errors can trigger this bug AFAICT, so we should exclude those from the logic to disable streams. Note also that live streaming already retries indefinitely by default, and that normal ABR logic will change streams for us if we timeout due to a lack of bandwidth. Disabling streams on `TIMEOUT` was suggested initially in #4764, but was not a requirement of the OP. It was added out of caution in #4769, but not really vetted. Because it was not ever explicitly needed, excluding it is not a regression. Closes #7368
In #7368, we get stuck in a loop loading forever. This regression was introduced in v4.4.0 and affects all v4.4, v4.5, v4.6, v4.7, and v4.8 releases, as well as v4.9.0-28, v4.9.2-caf1, v4.10.0-20, and v4.11.0-6.
The loop is composed of these elements:
Only
TIMEOUT
errors can trigger this bug AFAICT, so we should exclude those from the logic to disable streams. Note also that live streaming already retries indefinitely by default, and that normal ABR logic will change streams for us if we timeout due to a lack of bandwidth.Disabling streams on
TIMEOUT
was suggested initially in #4764, but was not a requirement of the OP. It was added out of caution in #4769, but not really vetted. Because it was not ever explicitly needed, excluding it is not a regression.Closes #7368