Quoting the Erlang documentation
As of OTP 25, global will by default prevent overlapping partitions due to network issues by actively disconnecting from nodes that reports that they have lost connections to other nodes. This will cause fully connected partitions to form instead of leaving the network in a state with overlapping partitions.
Now, I ran a set of experiments where 3 nodes A, B, C, forming a fully connected network (so for instance a nodes() on A would evaluate to [B,C]), experience a failure of the link between B and C.
Then, I observed that in some cases the resulting fully connected network was formed by A and B and in other cases it was formed by A and C.
Graphically:
Fully connected After fault Scenario 1 Scenario 2
A A A A
/ \ / \ / \
/ \ / \ / \
/ \ / \ / \
B---------C B C B C B C
I could not find a specification of the algorithm, so the question is: could you provide me with one, more or less formal? Or if it already exists in the documentation, could you point it out to me?
Thanks in advance.