RATIS-2430. Write snapshot to temporary path until finish by spacemonkd · Pull Request #1372 · apache/ratis

What changes were proposed in this pull request?

Today when SnapshotInstallatioHandler#checkAndInstallSnapshot calls state.installSnapshot(request) - it pauses the state machine via ServerState.installSnapshot().

However this means that in case later checks fail or IO fails or any such scenario occurs, then there is no clear rollback option. Followers in this scenario can be left in a partial installation state.

One way to mitigate this is in appendChunk we can write to a temp file without pausing StateMachine. When this is done we can atomically apply the snapshot and reload the statemachine log.

What is the link to the Apache JIRA

https://issues.apache.org/jira/browse/RATIS-2430

How was this patch tested?

Patch was tested using unit tests.