fix: retry stream read errors in SimpleDownloader#432
Open
agoncharov-reef wants to merge 3 commits into
Open
Conversation
kacper-wolkiewicz-reef
left a comment
Collaborator
There was a problem hiding this comment.
There are some doubts worth checking I think?
| logger.debug('Stream read error during download, will retry if needed: %s', exc) | ||
| bytes_read += followup_response.raw.tell() | ||
| retries_left -= 1 | ||
| return bytes_read, digest.hexdigest() |
Collaborator
There was a problem hiding this comment.
It's not intuitive to me that we return here without an error in case all retries are exhausted. Especially that in some cases validation of the downloaded file is skipped.
| digest.update(data) | ||
| decoded_bytes_read += len(data) | ||
| except (ChunkedEncodingError, ContentDecodingError) as exc: | ||
| logger.debug('Stream read error during download, will retry if needed: %s', exc) |
Collaborator
There was a problem hiding this comment.
Should there be some wait time before the next try?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
SimpleDownloaderalready had range-based retry logic for truncated downloads (e.g. when the server closes the connection mid-stream), butChunkedEncodingErrorandContentDecodingErrorraised duringiter_contentbypassed that path and failed the download immediately.This PR catches those exceptions during both the initial read and follow-up range requests, logs them at debug level, and lets the existing retry loop resume from
response.raw.tell().