[ https://issues.apache.org/jira/browse/RATIS-883?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
runzhiwang updated RATIS-883: ----------------------------- Description: *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. was: *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())) -> CommitInfoProto::update. Leader update > 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: 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. -- This message was sent by Atlassian Jira (v8.3.4#803005)