Closed artursouza closed 1 year ago
Just sharing this RFC from upstream gRPC on built in retry policies as it is implement in some languages and shows what you can expect from the gRPC clients. https://github.com/grpc/proposal/blob/master/A6-client-retries.md#retryable-status-codes
Also, handling of 429 should ideally respect a Retry-After
header or the user should be able to opt out of retrying on that status code.
If I read this correctly it's up to the SDK to decide on the retry strategy? If the goal is to provide consistency here - why not make this consistent or configurable?
https://github.com/grpc/proposal/blob/master/A6-client-retries.md#retryable-status-codes
I tried using that in the Java SDK and did not perform the retry per request. It did not handle timeout retries if the server side hangs and client times out. I don't mind if this standard implementation works for other SDKs.
Just sharing this RFC from upstream gRPC on built in retry policies as it is implement in some languages and shows what you can expect from the gRPC clients. https://github.com/grpc/proposal/blob/master/A6-client-retries.md#retryable-status-codes
Also, handling of 429 should ideally respect a
Retry-After
header or the user should be able to opt out of retrying on that status code.If I read this correctly it's up to the SDK to decide on the retry strategy? If the goal is to provide consistency here - why not make this consistent or configurable?
Regarding 429, I think SDKs should respect the header. I will mention that. We can make this more configurable too, but I am concerned about it exploding into a huge resiliency spec, like in runtime.
Regarding the resiliency strategy, I did not add it here to reduce the scope of the discussion. We need something today and we can expand into more fine grained details later. My concern, again, is to have this to expand into a full resiliency spec like we have in runtime and this taking far too long to be agreed and implemented. We need something today since the experience is poor already if the API shows any connectivity issues.
I have updated the proposal. Changes:
I have not detailed about how the retry is implemented. Maybe maintainers from SDK have also opinions about this.
+1 Updated proposal looks good.
+1
+1 binding
+1 binding
+1 binding
+1! definitely helpful as it would resolve issues I am having with running on App Service :) (requirement sadly enough)
+1 binding
-1 now means infinity for retries - same behavior as in runtime.
Proposal is approved.
Proposal for https://github.com/dapr/dapr/issues/6609