[
https://issues.apache.org/jira/browse/RATIS-563?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16849487#comment-16849487
]
Tsz Wo Nicholas Sze commented on RATIS-563:
-------------------------------------------
Thanks [~msingh].
> a) StateMachineUpdater.java:236, lets add an assert that purgeIndex <=
> lastAppliedIndex to make sure that non applied transaction will never be
> truncated.
That's a good suggestion. The StateMachine implementation should never return
a snapshotIndex > lastAppliedIndex.
> b) RaftLog.java:340, Lets add a assert that index >= lastPurgeIndex, The
> caller i.e. stateMachineUpdater should never call with a lower index.
If index < lastPurgeIndex, it is correct to return a completed future as in the
patch. However, the javadoc is incorrect. Let me update it.
> c) Another unrelated comment is that commitIndex should be set to last
> snapshot index if no metadata entry is found. This is important with purge as
> previous metadata entries might have been truncated.
When the log is created, we set comitIndex as lastIndexInSnapshot; see
ServerState.initLog.
> Purge logs after snapshot only after all the nodes have catught up with the
> index
> ---------------------------------------------------------------------------------
>
> Key: RATIS-563
> URL: https://issues.apache.org/jira/browse/RATIS-563
> Project: Ratis
> Issue Type: Bug
> Components: snapshot
> Affects Versions: 0.3.0
> Reporter: Mukul Kumar Singh
> Assignee: Tsz Wo Nicholas Sze
> Priority: Major
> Attachments: r563_20190522.patch, r563_20190524.patch,
> r563_20190528.patch
>
>
> Leader will purge the snapshot after applying a transaction. A transaction is
> applied after a majority has been reached. This means that a slow follower
> will request for a transaction which has already been purged and for this
> transaction to catchup the leader has to transfer the snapshot. This can be
> detrimental for the performance while replicating.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)