Description
Due to the fact that grpc streaming snapshot sending sends all requests at once, error handling is performed after all are sent, and the last snapshot request is used as a completion flag, which may lead to the successful receipt of the last request, but the previous request has failed. The sender handles the failure event during the retransmission of the snapshot. The receiver triggers state.reloadStateMachine because it successfully receives the last request, but due to incomplete snapshot reception
An md5 mismatch exception occurred before the last SnapshotRequest was received
The last snapshot request arrived, then successfully received, and then updated the index.
However, the snapshot reception is incomplete and triggers the reloadStateMachine.
I suggest using a flag to identify whether the entire snapshot request is abnormal.
If an exception occurs, the subsequent content of the request will not be processed.
Or the sender will wait for the receiver's reply. If there is a release error, resend it.
Finally, the current error retry level is the entire snapshot directory rather than a single chunk, which will cause a large number of snapshot files to be sent repeatedly, which can be optimized later
Attachments
Attachments
Issue Links
- links to