-
Notifications
You must be signed in to change notification settings - Fork 4k
Description
There is the transparent retry condition:
grpc-java/core/src/main/java/io/grpc/internal/RetriableStream.java
Lines 921 to 923 in ec9b8e0
| if (rpcProgress == RpcProgress.MISCARRIED | |
| || (rpcProgress == RpcProgress.REFUSED | |
| && noMoreTransparentRetry.compareAndSet(false, true))) { |
And then within the transparent retry handling, it surprisingly looks at the hedging/retry policy:
| if (retryPolicy == null || retryPolicy.maxAttempts == 1) { |
That's just... wrong. There should never have been be any early commit in the transparent retry case based on the retry policy. I could understand more if this was in the normal retry/hedging flows, but those don't have the early commit. And it is good they don't, as it would break transparent retries.
Seems we should just remove all the early commits.
It may be fair to have @temawi or @larry-safran work on this, as it is easy/surgical and @YifeiZhuang reviews. Y'all can discuss amongst yoruselves.