[ 
https://issues.apache.org/jira/browse/RATIS-883?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

runzhiwang updated RATIS-883:
-----------------------------
    Attachment: RATIS-883.001.patch

> Failed UT: testStateMachineMetrics.checkFollowerCommitLagsLeader
> ----------------------------------------------------------------
>
>                 Key: RATIS-883
>                 URL: https://issues.apache.org/jira/browse/RATIS-883
>             Project: Ratis
>          Issue Type: Bug
>            Reporter: runzhiwang
>            Assignee: runzhiwang
>            Priority: Major
>         Attachments: RATIS-883.001.patch, screenshot-1.png
>
>
> *What's the problem ?*
>  !screenshot-1.png! 
> *What's the reason ?*
> The reason is follower update commitInfoCache after leader.
> The stack of follower update commitInfoCache is: 
> RaftServerImpl::appendEntriesAsync
> -> state.updateStateMachine 
> -> StateMachineUpdater::applyLog 
> -> RaftServerImpl::applyLogToStateMachine
> -> RaftServerImpl::replyPendingRequest 
> -> RaftServerImpl::getCommitInfos 
> -> infos.add(commitInfoCache.update(getPeer(), 
> state.getLog().getLastCommittedIndex())) 
> -> CommitInfoCache::update.
> The stack of leader update commitInfoCache is: 
> follower finish RaftServerImpl::appendEntriesAsync and return reply
> -> GrpcLogAppender::runAppenderImpl 
> -> GrpcLogAppender::appendLog 
> ->LogAppender::createRequest 
> ->LeaderState::newAppendEntriesRequestProto 
> ->RaftServerImpl::getCommitInfos 
> ->LeaderState::updateFollowerCommitInfos
> ->CommitInfoCache::update.
> Because follower need to notify thread StateMachineUpdater to update 
> CommitInfoCache, we can not ensure follower update CommitInfoCache before 
> leader.
> *How to fix ?*
> Follower update CommitInfoCache before return reply to leader.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to