[MDEV-17048] Galera 4: Inconsistency voting Created: 2018-08-23  Updated: 2021-01-29  Resolved: 2019-08-28

Status: Closed
Project: MariaDB Server
Component/s: Galera
Fix Version/s: 10.5.0

Type: Task Priority: Critical
Reporter: Jan Lindström (Inactive) Assignee: Jan Lindström (Inactive)
Resolution: Fixed Votes: 0
Labels: tests

Issue Links:
Blocks
PartOf
is part of MDEV-16405 Merge Galera 4 changes from mariaDB_w... Closed

 Description   

Galera Cluster version 3, has strict inconsistency policy: all transaction replication errors cause emergency abort for all nodes detecting the inconsistency.

Galera Cluster 4 has more sophisticated inconsistency strategy where cluster runs inconsistency voting protocol and optimizes the way cluster reacts to detected inconsistency. With consistency voting, Galera Cluster can mitigate the harm of inconsistency for the cluster. In the best case, only one node has to abort, and majority can continue operating normally However, if the database has been inconsistent, for indefinitely long period, and application business logic may have been hurt



 Comments   
Comment by Seppo Jaakola [ 2018-12-05 ]

Inconsistency voting is complete in MySQL version, and has been fully integrated in MariaDB 10.4 candidate tree. However, no buildbot testing for this feature has yet been carried out. The related tests are in galera_ee and galera_3_nodes_ee suites.

Comment by Jan Lindström (Inactive) [ 2019-08-12 ]

Yurchenko Yes, we want PR against 10.5

Comment by Jan Lindström (Inactive) [ 2019-08-20 ]

https://github.com/MariaDB/server/pull/1373

Comment by Jan Lindström (Inactive) [ 2019-08-28 ]

High-level decsription.

  • For transactions:
    • if applying slave writeset fails (apply callback), error description is passed back to provider and it initiates voting in the group. All nodes report which result they got for a given action, and if there is a simple majority about a given result, then this result wins and the nodes that have a different result gracefully quit the group. If there is no majority then success wins. If there is no node with success result, then some other node wins.
  • For TOI operations (DDLs):
    • All the same as for transactions, except that master also may initiate a vote if DDL fails.
  • Control:
    • wsrep_ignore_apply_errors bitmask controls whether the error is reported back to provider. E.g. wsrep_ignore_apply_errors=4 will ignore any DDL errors, thus imitating 10.4 behavior. (Otherwise any DDL error will result in a voting round) (a better value would be 1 where only reconciling DDL errors are ignored)
  • gcs.vote_policy defines who wins in a voting round:
    • Default value 0 means simple majority as described above. Any value >= 1 means that if success votes count is >= that value, success wins even if in minority. E.g. gcs.vote_policy=1 will imitate current 10.4 behavior, where only the node that successfully committed transaction would remain (the difference would be that in 10.4 it will end up in non-primary configuration, in 10.5 it will remain primary).
Comment by Jan Lindström (Inactive) [ 2019-08-28 ]

jacob.moorman This is feature to 10.5 see above for description. I can give a example if wanted.

Generated at Thu Feb 08 08:33:31 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.