[ 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())) -> 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. > 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)