Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
As mentioned in https://issues.apache.org/jira/browse/RATIS-1370
During notifyInstallSnapshotFromLeader, StateMachineUpdater may call applyTransactions when StateMachine is in PAUSED state.
Just divide snapshot related work into notifyInstallSnapshotFromLeader and reinitialize for SCMStateMachine.
During notifyInstallSnapshotFromLeader, SCM just downloads snapshot but not modify StateMachine, since StateMachineUpdater is in RUNNING state, may call applyTransactions during this period.
During reinitialize, SCM can safely reload the StateMachine, such as rocksdb and in-memory state. During this period, StateMachineUpdater is in RELOAD state, thus there will be no contention between SCM and StateMachineUpdater.
Attachments
Issue Links
- links to