[ https://issues.apache.org/jira/browse/RATIS-883?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Lokesh Jain resolved RATIS-883. ------------------------------- Fix Version/s: 0.6.0 Resolution: Fixed > Failed UT: testStateMachineMetrics.checkFollowerCommitLagsLeader > ---------------------------------------------------------------- > > Key: RATIS-883 > URL: https://issues.apache.org/jira/browse/RATIS-883 > Project: Ratis > Issue Type: Sub-task > Reporter: runzhiwang > Assignee: runzhiwang > Priority: Major > Fix For: 0.6.0 > > Attachments: screenshot-1.png > > Time Spent: 40m > Remaining Estimate: 0h > > *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)