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

Transaction recovery may be broken after upgrade to 10.3

    XMLWordPrintable

Details

    Description

      If an undo log page is reused after upgrading from an earlier version to MariaDB 10.3 or 10.4, the TRX_UNDO_PAGE_HDR + TRX_UNDO_PAGE_TYPE in that page could contain the value 1 (TRX_UNDO_INSERT), identifying that undo log page as insert_undo. This would cause an assertion failure on subsequent InnoDB startup if a transaction that was logged to such a page was persisted in an incomplete state:

      10.3 397b6b13d062b28d12e9263710224bfb2269f19f

      mysqld: /mariadb/10.3/storage/innobase/trx/trx0roll.cc:1034: trx_undo_rec_t *trx_roll_pop_top_rec_of_trx(trx_t *, roll_ptr_t *, mem_heap_t *): Assertion `undo == update || undo == temp' failed.
      

      This can be prevented by initializing the field in trx_undo_reuse_cached(). Unfortunately, we cannot initialize the entire undo log page, because multiple undo log headers may coexist in the same page.

      Attachments

        Issue Links

          Activity

            People

              marko Marko Mäkelä
              marko Marko Mäkelä
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

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