Description
When gRPC logAppender fails to install a snapshot to a follower owing to timeout, the onError callback will be invoked and resetClient is called. However, in this resetClient[1] handler, installSnapshotResponseHandler is not set to null (compared to appendLogReponseHandler). In this way, pending RPCs in the old installSnapshot pipe will timeout and call the onError again sometime in the future, disrupting future on-going installSnapshot requests.
Attachments
Issue Links
- duplicates
-
RATIS-1786 Reset the digester of the follower at the beginning of each file transfer during a InstallSnapshot to avoid snapshot transfer failure
- Resolved
-
RATIS-1812 Enforce a outstanding request limit in StreamObserverWithTimeout
- Resolved