Azure / Azure/azure-sdk

Support Adaptive Retry Strategy in Azure SDKs

Open
#10,123 0 comments 0 reactions 0 assignees View on GitHub
Azure.Core Client needs-team-triage
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.