[MDEV-29323] Galera ha_abort_transaction is not honored if there are no InnoDB lock conflicts Created: 2022-08-18  Updated: 2023-11-28

Status: Open
Project: MariaDB Server
Component/s: Galera
Affects Version/s: 10.6, 10.7, 10.8, 10.9, 10.10, 10.11
Fix Version/s: 10.6, 10.11

Type: Bug Priority: Major
Reporter: Marko Mäkelä Assignee: Seppo Jaakola
Resolution: Unresolved Votes: 1
Labels: performance

Issue Links:
Relates
relates to MDEV-29293 MariaDB stuck on starting commit stat... Closed
relates to MDEV-29860 Simplify transaction rollback initiat... Closed
relates to MDEV-29081 trx_t::lock.was_chosen_as_deadlock_vi... Closed

 Description   

This came up while I was reviewing MDEV-29081. It is possible that also older versions than 10.6 are affected by this, but I did not check it.

If Galera invokes ha_abort_transaction() (from wsrep_abort_thd() or wsrep_handle_mdl_conflict()), it will set a flag to have an InnoDB transaction in another thread to be aborted and rolled back.

If no InnoDB conflicts occur, lock_wait() will not be executed and the chosen victim may neglect the request for a long time.

I see that ha_innobase::write_row(), ha_innobase::update_row(), ha_innobase::delete_row() are already doing something extra if trx_t::is_wsrep() holds. I think that those functions need to check the Galera asynchronous kill status.



 Comments   
Comment by Marko Mäkelä [ 2022-11-07 ]

Implementing MDEV-29860 may affect this.

Generated at Thu Feb 08 10:07:38 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.