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

record_gtid() for non-transactional event group calls wakeup_subsequent_commits() too early, causing slave hang

    XMLWordPrintable

    Details

      Description

      This was found together with MDEV-7888, but it is a logically different bug,
      so filing separately.

      The parallel replication worker threads can hang in some cases with
      non-transactional event groups. The symptom is that worker threads are stuck
      in "waiting for prior transaction to start commit".

      The problem is when record_gtid() runs at the end of the non-transactional
      update. Then it needs to create its own transaction to update the
      mysql.gtid_slave_pos table. This causes ha_commit_trans() to call
      wakeup_subsequent_commits(). But this is wrong, it is too early.

      The hang then occurs because a following transaction things the prior
      non-transactional event group is already done - so it deallocates the
      corresponding group_commit_orderer object. Then a following worker thread does
      not get its wakeup, and the slave gets stuck.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              knielsen Kristian Nielsen
              Reporter:
              knielsen Kristian Nielsen
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: