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

Crashing on a corrupted page is unhelpful

Details

    Description

      Since the very first version, InnoDB was aborting the whole MySQL or MariaDB server when trying to access a corrupted page.

      Earlier, small steps have been taken to improve MariaDB stability, such as MDEV-12253.

      We must enable error handling for corrupted pages instead of allowing the server to crash. This is not only about detecting a checksum failure when reading a corrupted page (like suggested in MySQL Bug#10132 Crashing the server on corrupt InnoDB page is unhelpful, filed on April 25, 2005), but also about performing some operations on corrupted pages whose checksum appears valid.

      In some background operations, such as the purge of committed transaction history, errors may be reported to the server error log only, or silently ignored. While executing SQL, errors should be reported back to the client, and the transaction could be rolled back.

      Attachments

        Issue Links

          Activity

            marko Marko Mäkelä created issue -
            marko Marko Mäkelä made changes -
            Field Original Value New Value
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            Status Open [ 1 ] Confirmed [ 10101 ]
            marko Marko Mäkelä made changes -
            Fix Version/s 10.3 [ 22126 ]
            Fix Version/s 10.4 [ 22408 ]
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            Labels corruption recovery corruption encryption page_compression recovery
            marko Marko Mäkelä made changes -
            julien.fritsch Julien Fritsch made changes -
            Priority Major [ 3 ] Critical [ 2 ]
            GeoffMontee Geoff Montee (Inactive) made changes -
            GeoffMontee Geoff Montee (Inactive) made changes -
            GeoffMontee Geoff Montee (Inactive) made changes -
            GeoffMontee Geoff Montee (Inactive) made changes -
            GeoffMontee Geoff Montee (Inactive) made changes -
            GeoffMontee Geoff Montee (Inactive) made changes -
            GeoffMontee Geoff Montee (Inactive) made changes -
            julien.fritsch Julien Fritsch made changes -
            Support case ID 23523 24286 not-21898 not-22741 not-23404 not-23578 24286 not-21898 not-22741 not-23404 not-23578 not-23523
            julien.fritsch Julien Fritsch made changes -
            Support case ID 24286 not-21898 not-22741 not-23404 not-23523 not-23578 24286 not-21898 not-22741 not-23404 not-23523 not-23578 not-24286
            julien.fritsch Julien Fritsch made changes -
            Support case ID 24286 not-21898 not-22741 not-23404 not-23523 not-23578 not-24286 not-21898 not-22741 not-23404 not-23523 not-23578 not-24286
            julien.fritsch Julien Fritsch made changes -
            Support case ID not-21898 not-22741 not-23404 not-23523 not-23578 not-24286 not-21898 not-22741 not-23404 not-23523 not-23578 not-24286 test
            julien.fritsch Julien Fritsch made changes -
            Support case ID not-21898 not-22741 not-23404 not-23523 not-23578 not-24286 test not-21898 not-22741 not-23404 not-23523 not-23578 not-24286
            marko Marko Mäkelä made changes -
            Assignee Marko Mäkelä [ marko ] Vladislav Lesin [ vlad.lesin ]
            GeoffMontee Geoff Montee (Inactive) made changes -
            marko Marko Mäkelä made changes -
            Richard Richard Stracke made changes -
            Support case ID not-21898 not-22741 not-23404 not-23523 not-23578 not-24286 not-21898 not-22741 not-23404 not-23523 not-23578 not-24286 27019
            marko Marko Mäkelä made changes -
            jira-update-service Jira Update Service made changes -
            Support case ID 27019 not-21898 not-22741 not-23404 not-23523 not-23578 not-24286 not-21898 not-22741 not-23404 not-23523 not-23578 not-24286 not-27019
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            serg Sergei Golubchik made changes -
            marko Marko Mäkelä made changes -
            julien.fritsch Julien Fritsch made changes -
            Fix Version/s 10.6 [ 24028 ]
            julien.fritsch Julien Fritsch made changes -
            Fix Version/s 10.5 [ 23123 ]
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            serg Sergei Golubchik made changes -
            Fix Version/s 10.6 [ 24028 ]
            julien.fritsch Julien Fritsch made changes -
            Assignee Vladislav Lesin [ vlad.lesin ] Marko Mäkelä [ marko ]
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            rob.schwyzer@mariadb.com Rob Schwyzer (Inactive) made changes -
            Labels corruption encryption page_compression recovery ServiceNow corruption encryption page_compression recovery
            rob.schwyzer@mariadb.com Rob Schwyzer (Inactive) made changes -
            Labels ServiceNow corruption encryption page_compression recovery 76qDvLB8Gju6Hs7nk3VY3EX42G795W5z corruption encryption page_compression recovery
            serg Sergei Golubchik made changes -
            serg Sergei Golubchik made changes -
            Labels 76qDvLB8Gju6Hs7nk3VY3EX42G795W5z corruption encryption page_compression recovery corruption encryption page_compression recovery
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 82110 ] MariaDB v4 [ 143964 ]
            marko Marko Mäkelä made changes -
            serg Sergei Golubchik made changes -
            Fix Version/s 10.10 [ 27530 ]
            Fix Version/s 10.2 [ 14601 ]
            Fix Version/s 10.3 [ 22126 ]
            Fix Version/s 10.4 [ 22408 ]
            Fix Version/s 10.5 [ 23123 ]
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            Status Confirmed [ 10101 ] In Progress [ 3 ]
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            mleich Matthias Leich made changes -
            Attachment cursor_restore_supremum.patch [ 63815 ]
            marko Marko Mäkelä made changes -
            Fix Version/s 10.6 [ 24028 ]
            Fix Version/s 10.7 [ 24805 ]
            Fix Version/s 10.8 [ 26121 ]
            Fix Version/s 10.9 [ 26905 ]
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            issue.field.resolutiondate 2022-06-06 14:56:03.0 2022-06-06 14:56:03.901
            marko Marko Mäkelä made changes -
            Fix Version/s 10.6.9 [ 27507 ]
            Fix Version/s 10.7.5 [ 27505 ]
            Fix Version/s 10.8.4 [ 27503 ]
            Fix Version/s 10.9.2 [ 27115 ]
            Fix Version/s 10.6 [ 24028 ]
            Fix Version/s 10.7 [ 24805 ]
            Fix Version/s 10.8 [ 26121 ]
            Fix Version/s 10.9 [ 26905 ]
            Fix Version/s 10.10 [ 27530 ]
            Resolution Fixed [ 1 ]
            Status In Progress [ 3 ] Closed [ 6 ]
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            Description InnoDB is notoriously aborting the whole MariaDB server if it is trying to access a corrupted page.
            MDEV-12253 alleviated the issue somewhat, but not for background processing, such as the purge of no-longer-needed history.
            This bug exists in all InnoDB and XtraDB versions.
            MariaDB essentially must fix [MySQL Bug#10132 Crashing the server on corrupt InnoDB page is unhelpful|https://bugs.mysql.com/bug.php?id=10132] that was filed on April 25, 2005.

            In 10.3 with MDEV-12288 and MDEV-13536, the InnoDB purge threads will access pages more often, causing all sorts of debug assertion failures in the B-tree code. To work around this problem, tests that intentionally cause B-tree pages to be unreadable are amended with the following parameters, so that everything will be purged before the server is restarted to deal with the corruption:
            {noformat}
            --innodb-purge-rseg-truncate-frequency=1
            --skip-innodb-fast-shutdown
            {noformat}
            Since the very first version, InnoDB was aborting the whole MySQL or MariaDB server when trying to access a corrupted page.


            MDEV-12253 alleviated the issue somewhat, but not for background processing, such as the purge of no-longer-needed history.
            This bug exists in all InnoDB and XtraDB versions.
            MariaDB essentially must fix [MySQL Bug#10132 Crashing the server on corrupt InnoDB page is unhelpful|https://bugs.mysql.com/bug.php?id=10132] that was filed on April 25, 2005.

            In 10.3 with MDEV-12288 and MDEV-13536, the InnoDB purge threads will access pages more often, causing all sorts of debug assertion failures in the B-tree code. To work around this problem, tests that intentionally cause B-tree pages to be unreadable are amended with the following parameters, so that everything will be purged before the server is restarted to deal with the corruption:
            {noformat}
            --innodb-purge-rseg-truncate-frequency=1
            --skip-innodb-fast-shutdown
            {noformat}
            marko Marko Mäkelä made changes -
            Description Since the very first version, InnoDB was aborting the whole MySQL or MariaDB server when trying to access a corrupted page.


            MDEV-12253 alleviated the issue somewhat, but not for background processing, such as the purge of no-longer-needed history.
            This bug exists in all InnoDB and XtraDB versions.
            MariaDB essentially must fix [MySQL Bug#10132 Crashing the server on corrupt InnoDB page is unhelpful|https://bugs.mysql.com/bug.php?id=10132] that was filed on April 25, 2005.

            In 10.3 with MDEV-12288 and MDEV-13536, the InnoDB purge threads will access pages more often, causing all sorts of debug assertion failures in the B-tree code. To work around this problem, tests that intentionally cause B-tree pages to be unreadable are amended with the following parameters, so that everything will be purged before the server is restarted to deal with the corruption:
            {noformat}
            --innodb-purge-rseg-truncate-frequency=1
            --skip-innodb-fast-shutdown
            {noformat}
            Since the very first version, InnoDB was aborting the whole MySQL or MariaDB server when trying to access a corrupted page.

            Earlier, small steps have been taken to improve MariaDB stability, such as MDEV-12253.

            We must enable error handling for corrupted pages instead of allowing the server to crash. This is not only about detecting a checksum failure when reading a corrupted page (like suggested in [MySQL Bug#10132 Crashing the server on corrupt InnoDB page is unhelpful|https://bugs.mysql.com/bug.php?id=10132], filed on April 25, 2005), but also about performing some operations on corrupted pages whose checksum appears valid.

            In some background operations, such as the purge of committed transaction history, errors may be reported to the server error log only, or silently ignored. While executing SQL, errors should be reported back to the client, and the transaction could be rolled back.
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            ralf.gebhardt Ralf Gebhardt made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            rob.schwyzer@mariadb.com Rob Schwyzer (Inactive) made changes -
            rob.schwyzer@mariadb.com Rob Schwyzer (Inactive) made changes -
            marko Marko Mäkelä made changes -
            mariadb-jira-automation Jira Automation (IT) made changes -
            Zendesk Related Tickets 201658 110821 114635 110277 135951 119185 118441 132996 109663 161967 179756 175774
            Zendesk active tickets 201658
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            marko Marko Mäkelä made changes -
            ParadoxV5 Jimmy Hú made changes -
            marko Marko Mäkelä made changes -
            alessandro.vetere Alessandro Vetere made changes -
            thiru Thirunarayanan Balathandayuthapani made changes -

            People

              marko Marko Mäkelä
              marko Marko Mäkelä
              Votes:
              7 Vote for this issue
              Watchers:
              25 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.