Skip to content

Retries doesn't help against timeouts on downloads #34919

Open
@mattiasb

Description

@mattiasb
  • Package Name: azure-storage-blob
  • Package Version: 12.19.1
  • Operating System: Fedora Workstation (39)
  • Python Version: 3.12.2

Describe the bug

When experiencing timeouts while downloading a blob with Azure Python SDK the whole download will fail when the network is brought back to normal even if there are retries left for the retry_policy.

I have not been able to reproduce this with uploads.

To Reproduce

See https://github.com/mattiasb/blob-issue for more details on how to reproduce (including an example script).

Steps to reproduce the behavior:

  1. Start downloading a sufficiently large blob using this script.
  2. After a little while induce a really large artificial network latency to your network device. For example with this script.
  3. Wait for two rounds of retries to trigger
  4. Reset the network to normal
  5. Watch the download fail even though the retry policy has retries left and the network is back to normal.

Expected behavior

I would expect the retry policy to trigger also on timeouts, such that when I returned the network to normal a later set of retries would let the script finish downloading the file.

Additional context

Again. The best is to see what I do at https://github.com/mattiasb/blob-issue. But I recorded some logs as well which might be worth looking at.

Metadata

Metadata

Labels

ClientThis issue points to a problem in the data-plane of the library.Service AttentionWorkflow: This issue is responsible by Azure service team.StorageStorage Service (Queues, Blobs, Files)customer-reportedIssues that are reported by GitHub users external to the Azure organization.needs-team-attentionWorkflow: This issue needs attention from Azure service team or SDK teamquestionThe issue doesn't require a change to the product in order to be resolved. Most issues start as that

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions