]
Dan Berindei commented on ISPN-4949:
------------------------------------
Yeah, the PR is pretty hairy because the fix included a stress test that uncovered some
other problems.
The solution is the one I described in my previous comment: whenever we receive a new
JGroups view, we request an ACK from all the members of the view. If all the members
confirm they are available, we install the cache topology without the leavers and apply
the partition handling availability check. If a node is suspected, we give up, assuming
that we will receive a new JGroups view soon.
Split brain: inconsistent data after merge
------------------------------------------
Key: ISPN-4949
URL:
https://issues.jboss.org/browse/ISPN-4949
Project: Infinispan
Issue Type: Bug
Components: State Transfer
Affects Versions: 7.0.0.Final
Reporter: Radim Vansa
Assignee: Dan Berindei
Priority: Critical
Fix For: 7.1.0.Alpha1
1) cluster A, B, C, D splits into 2 parts:
A, B (coord A) finds this out immediately and enters degraded mode with CH [A, B, C, D]
C, D (coord D) first detects that B is lost, gets view A, C, D and starts rebalance with
CH [A, C, D]. Segment X is primary owned by C (it had backup on B but this got lost)
2) D detects that A was lost as well, therefore enters degraded mode with CH [A, C, D]
3) C inserts entry into X: all owners (only C) is present, therefore the modification is
allowed
4) cluster is merged and coordinator finds out that the max stable topology has CH [A, B,
C, D] (it is the older of the two partitions' topologies, got from A, B) - logs
'No active or unavailable partitions, so all the partitions must be in degraded
mode' (yes, all partitions are in degraded mode, but write has happened in the
meantime)
5) The old CH is broadcast in newest topology, no rebalance happens
6) Inconsistency: read in X may miss the update