[jboss-jira] [JBoss JIRA] (JGRP-1901) GMS: view installation by consensus
Bela Ban (JIRA)
issues at jboss.org
Tue Feb 17 06:41:50 EST 2015
[ https://issues.jboss.org/browse/JGRP-1901?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13040797#comment-13040797 ]
Bela Ban commented on JGRP-1901:
--------------------------------
Thinking about this, I don't think that installing a view via 2PC is a good idea, that is in JGroups (might make more sense in Infinispan).
In JGroups, it is perfectly OK to install view [A,B,C] (C is partitioned away, but hasn't yet been suspected) before installing [A,B].
Waiting for C to ack the view leads to questions about how long we need to wait etc. For example, in a large cluster with (say) 500 nodes, if we need to install a new view, the chances of receiving acks from 500 nodes in a resonable amount of time are decreasing with increasing cluster size. A node might be garbage collection, its thread pool is busy and discards the message (which is later retransmited), some nodes failed etc.
This could lead to an excessively long wait until we install a new view. All RPCs depending on speedy view installation (to remove failed nodes) would block until the new view is finally installed.
Use of 2PC would also make the code more complex.
Note that I changed the title from consensus to 2PC.
> GMS: view installation by consensus
> -----------------------------------
>
> Key: JGRP-1901
> URL: https://issues.jboss.org/browse/JGRP-1901
> Project: JGroups
> Issue Type: Feature Request
> Reporter: Bela Ban
> Assignee: Bela Ban
> Fix For: 3.6.2
>
>
> Investigate whether view installation should optionally be done via 2PC. Example:
> * View is A,B,C,D, splits into A,B and C,D
> * Before AB is installed in A and B, view A,B,C is installed
> ** (C hasn't been suspected yet. This can happen with {{FD}})
> Infinispan's rebalancing algorithm has problems with this, as it tries to assign state to C which however isn't reachable from the A,B side of the network partition. It would be better if A,B,C,D went directly to A,B and C,D
> Investigate whether we should add a property to {{GMS}} which defines whether to use 2PC for view installation (default would be {{false}}). The algorithm would work as follows:
> * Send a {{PREPARE_VIEW(view)}} message
> * When all responses have been received -> send a {{COMMIT_VIEW}} message
> * Else
> ** Inject SUSPECT(C) event for all misisng acks OR
> ** Set a timer to go off in N ms -> when it fires, send the {{COMMIT_VIEW}} msg
> ** If another view is installed before the tmer goes off (e.g. A,B) -> kill the timer
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
More information about the jboss-jira
mailing list