[jboss-jira] [JBoss JIRA] (JGRP-1901) GMS: view installation by consensus

Radim Vansa (JIRA) issues at jboss.org
Mon Nov 10 08:25:38 EST 2014


    [ https://issues.jboss.org/browse/JGRP-1901?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13018621#comment-13018621 ] 

Radim Vansa commented on JGRP-1901:
-----------------------------------

In that case, it won't completely be a consensus - the node should not ack the PREPARE_VIEW before it can be sure that it was removed from the old one (either gracefully through some kind of leave, or by timeout-based means such as FDx protocols).

If one node is reachable from both partition to another one, the old partition would still think that the node is part of that view (until it gets suspected, and that can take a while), and allow modifications in the old partition, and consequently allow modifications in the new one.

I know I am talking about a use case tailored for Infinispan specifically, but after all, this is why we are dealing with this JIRA.

> 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.1
>
>
> 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.8#6338)


More information about the jboss-jira mailing list