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

Mukul Kumar Singh commented on RATIS-336:
-----------------------------------------

Thanks for working on this [~szetszwo]. The patch looks really good to me.

1) I feel getHandler, should be replaced with something like execute, so 
getHandler().run() -> is replaced with execute,
also in place of handler being of executable type, can this be replaced with a 
supplier function.
2) Also wanted to understand in LeaderState#EventProcessor#run, why do we need 
checkStaging.

> LeaderState.isBootStrappingPeer may have NPE
> --------------------------------------------
>
>                 Key: RATIS-336
>                 URL: https://issues.apache.org/jira/browse/RATIS-336
>             Project: Ratis
>          Issue Type: Bug
>          Components: server
>            Reporter: Tsz Wo Nicholas Sze
>            Assignee: Tsz Wo Nicholas Sze
>            Priority: Major
>         Attachments: r336_20180928.patch
>
>
> {code}
> //LeaderState
>   boolean isBootStrappingPeer(RaftPeerId peerId) {
>     return inStagingState() && getStagingState().contains(peerId);
>   }
>   boolean inStagingState() {
>     return stagingState != null;
>   }
>  
>   ConfigurationStagingState getStagingState() {
>     return stagingState;
>   }
> {code}
> Since stagingState is volatile, it could be set to null between 
> inStagingState() and contains(..).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to