mirror of
https://github.com/MariaDB/server.git
synced 2025-12-11 14:55:44 +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).
|
||
|---|---|---|
| .. | ||
| btr | ||
| buf | ||
| data | ||
| dict | ||
| eval | ||
| fil | ||
| fsp | ||
| fts | ||
| fut | ||
| gis | ||
| ha | ||
| handler | ||
| ibuf | ||
| include | ||
| lock | ||
| log | ||
| mem | ||
| mtr | ||
| mysql-test/storage_engine | ||
| os | ||
| page | ||
| pars | ||
| que | ||
| read | ||
| rem | ||
| row | ||
| srv | ||
| sync | ||
| trx | ||
| unittest | ||
| ut | ||
| .clang-format-old | ||
| CMakeLists.txt | ||
| COPYING.Google | ||
| COPYING.Percona | ||