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

Yaolong Liu commented on RATIS-1592:
------------------------------------

I have an idea whether it is possible to add a mode to setConfiguration, called 
concurrent mode, in this mode: we only add members to the new member list that 
are temporarily not in the current list, and do not delete existing members. 
Consider the following scenarios:
Suppose there are now three members A B C in the cluster,

D called setConfiguration(newPeers=[A, B, C, D])
E called setConfiguration(newPeers=[A, B, C, E])
In the current code logic, the cluster members will end up being A, B, C, D or 
A, B, C, E, but what we want is A, B, C, D, E

In concurrent mode:
We assume that E's request is executed successfully first, and the current 
members of the cluster are A, B, C, E, and then start to execute D's request. 
At this time, we find that D is not in the list, so we just add D instead of 
deleting E. The clusters eventually become A, B, C, D, E
In addition, we can hand over to the user whether to use concurrent mode to 
execute setConfiguration.

> Concurrent setConfiguration
> ---------------------------
>
>                 Key: RATIS-1592
>                 URL: https://issues.apache.org/jira/browse/RATIS-1592
>             Project: Ratis
>          Issue Type: Improvement
>            Reporter: Song Ziyang
>            Priority: Major
>




--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to