Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-29323

Galera ha_abort_transaction is not honored if there are no InnoDB lock conflicts

    XMLWordPrintable

    Details

      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.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              jplindst Jan Lindström
              Reporter:
              marko Marko Mäkelä
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

                Dates

                Created:
                Updated:

                  Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.