Support Adaptive Retry Strategy in Azure SDKs
- Dominant language
- PowerShell
- Stars
- 597
- Forks
- 374
- Avg merge
- 5d 21h
- Merged PRs (30d)
- 42
Description
Right now in AzureCore there is an[ Exponential Retry](https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/core/Azure.Core/src/RetryMode.cs) strategy supported
Worth exploring expanding the available retry strategies in all languages to include something like AWS's Adaptive Retry Strategy, which uses a dynamic token bucket based approach:
* https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/retry-strategy.html
* https://docs.aws.amazon.com/java/api/latest/software/amazon/awssdk/retries/StandardRetryStrategy.html
* https://github.com/aws/aws-sdk-java-v2/blob/master/core/retries/src/main/java/software/amazon/awssdk/retries/AdaptiveRetryStrategy.java
Would apply to the SDKs of all languages:
* .NET: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/core/Azure.Core/src/RetryMode.cs
* Python: https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/azure/core/pipeline/policies/_retry.py
* Java: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/RetryStrategy.java
* JS/TS: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/core/core-rest-pipeline/src/policies/retryPolicy.ts
* Go: https://github.com/Azure/azure-sdk-for-go/blob/main/sdk/azcore/policy/policy.go
* C++: https://github.com/Azure/azure-sdk-for-cpp/blob/main/sdk/core/azure-core/inc/azure/core/http/policies/policy.hpp
* Rust: https://github.com/Azure/azure-sdk-for-rust/blob/main/sdk/core/typespec_client_core/src/http/options/retry.rs
Contributor guide
Research direction
Start by comparing the listed retry entry points: Azure.Core/src/RetryMode.cs, azure-core/azure/core/pipeline/policies/_retry.py, and the corresponding Java, JS/TS, Go, C++, and Rust files. Read the linked AWS adaptive retry documentation and implementation for reference. Done would require an agreed adaptive retry strategy and support across all listed Azure SDK languages.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- azure, cpp, csharp, go, java, javascript, python, rust, typescript
- Domain
- api
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100