Xinyu Tan created RATIS-2019:
--------------------------------
Summary: Fixed abnormal exit of StateMachineUpdater
Key: RATIS-2019
URL: https://issues.apache.org/jira/browse/RATIS-2019
Project: Ratis
Issue Type: Bug
Reporter: Xinyu Tan
Assignee: Xinyu Tan
Fix For: 3.0.1
Attachments: image-2024-01-29-11-36-17-263.png
In some scenarios where Ratis is restarted, we find that there is a certain
probability of an error at startup.
!image-2024-01-29-11-36-17-263.png!
By looking through the code, I found
[here|https://github.com/apache/ratis/blob/master/ratis-server/src/main/java/org/apache/ratis/server/impl/LeaderStateImpl.java#L429]
is a problem with the code
StateMachineUpdater will call this line when applying any member change log
from previous term if the Leader exists, but the startupEntry for the current
term may not have been initialized yet, so the assertion will throw an error.
We should only fire this assertion if the log matches the current term.
In addition, I found that the current implementation triggers notifyLeaderReady
several times in the member change log of the current term, which is not
consistent with the semantics of this interface, because the Leader is always
in the ready state
--
This message was sent by Atlassian Jira
(v8.20.10#820010)