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

Song Ziyang edited comment on RATIS-1592 at 6/15/22 1:50 PM:
-------------------------------------------------------------

[~liuyaolong]

Consider this:

A group contains original 3 members [A, B, C], and C crashes. [D, E] both 
detect this abnormality, and both volunteer to join the group so that the 
3-copy policy is maintained. Add-mode ends up both D & E joining the group and 
there are 4 copies. But we really want here is strict 3-copy, so the first 
arrived join-request should be permitted, and the rest should be rejected. This 
can be implemented by CAS semantic.

1. D sends setConfigurationCAS(old=[A,B], new=[A,B,D])

2. E sends setConfigurationCAS(old=[A,B], new=[A,B,E])

Only one of the request can be successfully executed, so that we can avoid the 
4-copy situation. 


was (Author: JIRAUSER281912):
[~liuyaolong]

Consider this:

A group contains original 3 members [A, B, C], and C crashes. [D, E] both 
detects this abnormality, and both volunteer to join the group so that the 
3-copy policy is maintained. Add-mode ends up both D & E join the group and 
there are 4 copies. But we really want here is strict 3-copy, so the first 
arrived join-request should be permitted, and the rest should be rejected. This 
can be implemented by CAS semantic.

1. D sends setConfigurationCAS(old=[A,B], new=[A,B,D])

2. E sends setConfigurationCAS(old=[A,B], new=[A,B,E])

Only one of the request can be successfully executed, and avoid the 4-copy 
situation. 

> 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