[jboss-jira] [JBoss JIRA] (JGRP-1484) SEQUENCER and merge-views broken
Bela Ban (JIRA)
jira-events at lists.jboss.org
Tue Sep 4 10:08:32 EDT 2012
[ https://issues.jboss.org/browse/JGRP-1484?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12715755#comment-12715755 ]
Bela Ban edited comment on JGRP-1484 at 9/4/12 10:07 AM:
---------------------------------------------------------
OK, so how do you solve this case:
A: {A,B,C,D,E,F}
X: {X,Y,Z}
Merge coordinators are A and X, merge participants are also A and X. The latter will be removed in the MergeTask, so that we send the INSTALL_MERGE_VIEW to A and X. That's 2 unicasts.
- Now X and A multicast the MergeView (1 multicast message, I'm assuming UDP as transport)
- This is 2 unicasts and 2 multicasts
How would your algorithm do this ? Would it find B, C, D, E and F in the first place ? If you look at the comments in the javadoc of Util.determineMergeParticipants(), how would you install the mergeView in member C (member C from the javadoc, not the above example !) ?
was (Author: belaban):
OK, so how do you solve this case:
A: {A,B,C,D,E,F}
X: {X,Y,Z}
Merge coordinators are A and X, merge participants are also A and X. The latter will be removed in the MergeTask, so that we send the INSTALL_MERGE_VIEW to A and X. That's 2 unicasts.
- Now X and A multicast the MergeView (1 multicast message, I'm assuming UDP as transport)
- This is 2 unicasts and 2 multicasts
How would your algorithm do this ? Would it find B, C, D, E and F in the first place ? If you look at Util.determineMergeParticipants(), how would you install the mergeView in member C ?
> SEQUENCER and merge-views broken
> --------------------------------
>
> Key: JGRP-1484
> URL: https://issues.jboss.org/browse/JGRP-1484
> Project: JGroups
> Issue Type: Bug
> Affects Versions: 3.0.10
> Reporter: David Hotham
> Assignee: Bela Ban
> Fix For: 3.2
>
>
> Here's a new way in which putting SEQUENCER below GMS is broken.
> Start with A having view B|4 [B,A], while B, C and D all have view B|7 [B,C,D].
> Now we start a merge, in which B is coordinator. B creates the view C|8 [C, D, A, B].
> (I've opened a pull request saying that B surely shouldn't issue a view where the ViewID says that C was the creator. But I think that this is incidental, and not key to the bug that I'm reporting here).
> Now B sends INSTALL_MERGE_VIEW to B (a coordinator) and A (a merge participant, per Util.determineMergeParticipants).
> B gets this first and broadcasts the new view to [B, C, D]. In particular, B is now not a coordinator.
> Then A gets the INSTALL_MERGE_VIEW, and it too tries broadcasting the new view. SEQUENCER gets involved, and forwards the broadcast to B (as the coordinator in the old view). B discards this; it's no longer a coordinator.
> So the new view is not installed at A. All future broadcasts from A are forwarded to B, who discards them. The group is fractured, and none of A's broadcasts are delivered.
> I'm not sure what the right fix would be. I wonder whether things should be arranged so that in a merge:
> - coordinators behave as today, broadcasting the new view to their own sub-groups
> - but mere participants do not do this: they should just have the new view installed on them.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list