0

The QuorumIntersectionChecker has a getPotentialSplit function. It doesn't seem to be documented.

I've tried to use it while experimenting with various quorum configuration. Here is one such configuration:

n0: QuorumConfig(thresh: 3, nodes: ["n0", "n6", "n7"])
n1: QuorumConfig(thresh: 3, nodes: ["n1", "n6", "n7"])
n2: QuorumConfig(thresh: 3, nodes: ["n2", "n6", "n7"])
n3: QuorumConfig(thresh: 3, nodes: ["n3", "n5", "n6", "n7"])
n4: QuorumConfig(thresh: 3, nodes: ["n3", "n4", "n6", "n7"])
n5: QuorumConfig(thresh: 3, nodes: ["n4", "n5", "n7"])
n6: QuorumConfig(thresh: 2, nodes: ["n6", "n7"])
n7: QuorumConfig(thresh: 2, nodes: ["n6", "n7"])

In this case getPotentialSplit returns: Splits: first: [] second: [n6, n7].

I'm trying to understand the return value of getPotentialSplit and why in this configuration n6 and n6 can cause a "potential split". What exactly does it mean that there is a potential split?

1

I can only assume that thresholds are not taken into account and "first" refers to a potential split if one node fails and "second" refers to a potential split if two nodes fail.

  • If any single node fails, all other nodes will still be somehow connected with each other.
  • If any two nodes (except [n6, n7]) fail, all other nodes will still be somehow connected.
  • If [n6, n7] fail, the quorum will be fragmented into [n0], [n1], [n2], [n3, n4, n5] and it would be advisable that those should be better connected. For example n0, n1 and n2 should include one of [n3, n4, n5] in their qset.

With a different qset like this, there should be a potential "first [C]" split, which would result in [A, B], [D, E] fragments:

A: [A, B]
B: [A, B]
C: [A, C, D]
D: [D, E]
E: [D, E]
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.