You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
IIUC, this grpc_retry for client streaming is just broken ... here is the core retry logic ... where we have
func (s*serverStreamingRetryingStream) receiveMsgAndIndicateRetry(minterface{}) (bool, error) {
s.mu.RLock()
wasGood:=s.receivedGoods.mu.RUnlock()
err:=s.getStream().RecvMsg(m)
iferr==nil||err==io.EOF {
s.mu.Lock()
s.receivedGood=trues.mu.Unlock()
returnfalse, err
} elseifwasGood {
// previous RecvMsg in the stream succeeded, no retry logic should interferereturnfalse, err
}
Note that the wasGood once it is true ... it will be always true ... hence skipping all retry logic even if there is an error. The retry can take place only if the very first call failed with retry-able errors ...
A screenshot from my debug session can demonstrate it more clearly
The text was updated successfully, but these errors were encountered:
IIUC, this
grpc_retry
for client streaming is just broken ... here is the core retry logic ... where we haveNote that the
wasGood
once it is true ... it will be always true ... hence skipping all retry logic even if there is an error. The retry can take place only if the very first call failed with retry-able errors ...A screenshot from my debug session can demonstrate it more clearly
The text was updated successfully, but these errors were encountered: