[ https://issues.apache.org/jira/browse/RATIS-661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16916965#comment-16916965 ]
Tsz Wo Nicholas Sze commented on RATIS-661: ------------------------------------------- [~ljain], thanks for working on this. - Why changing remove(..) to get(..) below? It could have a race condition when there are multiple groupRemoveAsync(..) calls. {code} } - final CompletableFuture<RaftServerImpl> f = impls.remove(groupId); + final CompletableFuture<RaftServerImpl> f = impls.get(groupId); if (f == null) { {code} - Let's call the new method notifyGroupRemove() in StateMachine. - Let's do not change shutdown(..) since the groupRemoval parameter is always false except for groupRemoveAsync(..). Just make the call there as below. {code} @@ -403,6 +403,7 @@ public class RaftServerProxy implements RaftServer { } return f.thenApply(impl -> { final Collection<CommitInfoProto> commitInfos = impl.getCommitInfos(); + impl.getStateMachine().notifyGroupRemove(); impl.shutdown(deleteDirectory); return new RaftClientReply(request, commitInfos); }); {code} > Add call in state machine to handle group removal > ------------------------------------------------- > > Key: RATIS-661 > URL: https://issues.apache.org/jira/browse/RATIS-661 > Project: Ratis > Issue Type: Bug > Reporter: Lokesh Jain > Assignee: Lokesh Jain > Priority: Major > Attachments: RATIS-661.001.patch, RATIS-661.002.patch, > RATIS-661.003.patch, RATIS-661.004.patch > > > Currently during RaftServerProxy#groupRemoveAsync there is no way for > stateMachine to know that the RaftGroup will be removed. This Jira aims to > add a call in the stateMachine to handle group removal. > It also changes the logic of groupRemoval api to remove the RaftServerImpl > from the RaftServerProxy#impls map after the shutdown is complete. This is > required to synchronize the removal with the corresponding api of > RaftServer#getGroupIds. RaftServer#getGroupIds uses the RaftServerProxy#impls > map to get the groupIds. -- This message was sent by Atlassian Jira (v8.3.2#803003)