[
https://issues.apache.org/jira/browse/RATIS-661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16917069#comment-16917069
]
Tsz Wo Nicholas Sze commented on RATIS-661:
-------------------------------------------
> Since the impl is removed earlier, RaftServer#getGroupIds would not give the
>corresponding groupId ...
When the group is being removed, it is correct to have RaftServer#getGroupIds
not returning that id. Ozone datanode could use notifyGroupRemove() to check
when the server impl is shutdown.
If the group is not removed from the map in the beginning, new calls including
client requests and another groupRemoveAsync(..) call can happen. It will have
race condition.
> 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)