mirror of
https://github.com/MariaDB/server.git
synced 2026-01-19 18:04:53 +01:00
This commit carries changes to Innodb for the user XA's binlog-coordinated
ordered commit. It's the part III of the series aimed at
improving on parallel slave performance and providing crash-recovery.
As the part I has unified binlog coordinated completion (commit and
rollback) of the XA transactions with the normal ones a remained
task is to optimize flush to disk call away from the XA completion execution
in engine like it's done to the normal transaction.
Namely innobase_{rollback,commit}_by_xid()^\footnote{Unlike the normal
transaction case, XA-rollback also needs a similar addressing} now
raise a flag blocking the flush before innobase_commit_low().
The flag is restored upon that, which of course what the normal
transaction does in its execution path past the low-commit.
Tests demonstrate the changes are effectual, e.g
binlog_xa_prepared_disconnect.test " failed ", to require it to
adapted to possible loss of the commit/rollback upon crash.
Binlog recovery in such scenarios is going to be recovered in the part
IV of MDEV-33168. The feasibility of successful recovery of
XA-"COMPLETE" is based on a plain observation, that in order to decide
whether to commit an XA or not it's sufficient to follow
the normal transaction recovery rule: when xid is found in binlog
the transaction gets completed (committed in the normal transaction case).
|
||
|---|---|---|
| .. | ||
| binlog.test | ||
| binlog_cache_stat.test | ||
| binlog_expire_logs_seconds.inc | ||
| binlog_expire_warnings.inc | ||
| binlog_incident-master.opt | ||
| binlog_incident.inc | ||
| binlog_index.inc | ||
| binlog_insert_delayed.test | ||
| binlog_ioerr.inc | ||
| binlog_mysqlbinlog-cp932.inc | ||
| binlog_row_annotate.inc | ||
| binlog_truncate.test | ||
| binlog_xa_prepare_connection.inc | ||
| binlog_xa_prepare_disconnect.inc | ||
| binlog_xa_prepared_do_and_restart.inc | ||
| blackhole.test | ||
| check_binlog_size.inc | ||
| ctype_cp932.test | ||
| ctype_cp932_binlog.test | ||
| ctype_ucs_binlog.test | ||
| database.test | ||
| drop_table.test | ||
| drop_temp_table.test | ||
| implicit.test | ||
| insert_select-binlog.test | ||
| mix_innodb_myisam_binlog.test | ||
| mix_innodb_myisam_side_effects.test | ||
| mysqlbinlog_gtid_strict_mode.inc | ||
| mysqlbinlog_gtid_window_test_cases.inc | ||
| mysqlbinlog_row_engine.inc | ||
| print_optional_metadata.inc | ||
| row_img.test | ||