Enable majority-wins transaction voting by default (Strong Consistency GA)
Problem to solve
Gitaly Cluster allows Git repositories to be replicated on multiple warm Gitaly nodes. This improves fault tolerance by removing single points of failure. Reference transactions, introduced in GitLab 13.3, causes changes to be broadcast to all the Gitaly nodes in the cluster, but only the Gitaly nodes that vote in agreement with the primary node persist the changes to disk. If all the replica nodes dissented, only one copy of the change would be persisted to disk, creating a single point of failure until asynchronous replication completed.
Majority-wins voting improves fault tolerance by requiring a majority of nodes to agree before persisting changes to disk. When the feature flag is enabled, writes must succeed on multiple nodes. Dissenting nodes are automatically brought in sync by asynchronous replication from the nodes that formed the quorum.
Further details
Reference transactions can be enabled using the gitaly_reference_transactions
feature flag, and multiple voting methods currently exist while work is underway to enable quorum based voting by default.
This issue should enable majority-wins voting by default.
Proposal
Reference transactions and majority-wins voting should by enabled by default for Gitaly Cluster