Do not add failed push operations in the BufferedHistory #1323
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes a kind of rare issue that is tricky to reproduce that may happen after a
QuotaExceededError
is encountered when pushing a chunk to the audio and videoSourceBuffer
due to memory limitations.In that situation, we could be left in the following scenario:
SourceBuffer
SourceBuffer
throws aQuotaExceededError
, generally this means that the device needs more memory to add that chunkSegmentInventory
(as it may still have been partially pushed to the SourceBuffer, we're not 100% sure of what happened on the lower-level code) and to thatSegmentInventory
'sBufferedHistory
.SegmentInventory
+BufferedHistory
insertion thing for the same reasonsBufferedHistory
that it already tried to load chunk(s) from it two times, and that in those two times, the browser did not buffer it (there ignoring that there was aQuotaExceededError
involved).This PR fixes the issue by clearly identifying in the
SegmentInventory
chunks whose push operation had an issue. Those are:BufferedHistory
We could also have not added them to the
SegmentInventory
altogether but I still think it's better to do it, as in the very rare chance that chunk still had been at least partially pushed, our logic would be more accurate.