Consider how to handle default polling interval for LROs #14683
Labels
Azure.Core
blocking-release
Blocks release
Client
This issue points to a problem in the data-plane of the library.
design-discussion
An area of design currently under discussion and open to team and community feedback.
feature-request
This issue requires a new behavior in the product in order be resolved.
Milestone
The current track 2 implementation requires that callers pass a polling interval to be used if the service doesn't return a retry-after header. While this is an improvement over track 1, there is a concern that customers might have a difficult time in selecting an appropriate value. To add to the complexity, there really is no universal one-size-fits-all value. For reference, the ARM RPC spec specifies a default value of 60 seconds in absence of a retry-after header, however some teams have expressed concerns that this value is too high in some scenarios (this comes back to the no universal value problem). Conversely, polling too frequently can lead to quota exhaustion (thus throttling) when performing operations at scale (e.g. Terraform). Finding the right balance is often context-dependent, which is why we required callers to provide a value in the first place (e.g. AKS wants complete control over this, and finds our current track 1 design cumbersome).
One idea, provided by the AKS team, is that different RPs would specify their own, appropriate, default polling interval. How this would be integrated with the SDK is TBD. And we'd have to decide how to handle the case where RPs don't supply a value.
Ideally, RPs would always return an appropriate retry-after header value. All SDKs would benefit from such a solution.
The text was updated successfully, but these errors were encountered: