mirror of
https://github.com/MariaDB/server.git
synced 2026-05-13 10:30:10 +02:00
The flags trx->active_commit_ordered and trx->active_prepare got cleared in trx_init() during the fast part of commit (ie. commit_ordered()). This is too early, then the values are lost when processing reaches trx_commit_complete_for_mysql(). This caused the MDEV-232 optimization to be omitted, adding an extra fsync() at the end of commit when using the legacy binlog and causing severe performance regression. The values of trx->active_commit_ordered and trx->active_prepare must persist to the end of commit procesing, same as trx->is_registered. This is done in this patch, active_commit_ordered and active_prepare are cleared in trx_deregister_from_2pc() together with trx->is_registered in trx_deregister_from_2pc(), and asserted to be cleared when trx->is_registered is set for a following transaction. Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org> |
||
|---|---|---|
| .. | ||
| archive | ||
| blackhole | ||
| columnstore | ||
| connect | ||
| csv | ||
| example | ||
| federated | ||
| federatedx | ||
| heap | ||
| innobase | ||
| maria | ||
| mroonga | ||
| myisam | ||
| myisammrg | ||
| oqgraph | ||
| perfschema | ||
| rocksdb | ||
| sequence | ||
| sphinx | ||
| spider | ||
| test_sql_discovery | ||