You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ratis.apache.org by "runzhiwang (Jira)" <ji...@apache.org> on 2020/04/26 10:07:00 UTC

[jira] [Comment Edited] (RATIS-883) Failed UT: testStateMachineMetrics.checkFollowerCommitLagsLeader

    [ https://issues.apache.org/jira/browse/RATIS-883?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17092523#comment-17092523 ] 

runzhiwang edited comment on RATIS-883 at 4/26/20, 10:06 AM:
-------------------------------------------------------------

[~shashikant] [~ljain] Could you help review this patch ? Thank you very much.


was (Author: yjxxtd):
[~shashikant] Could you help review this patch ? Thank you very much.

> 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)