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

Failure to detect corruption during backups of Aria table

    XMLWordPrintable

Details

    Description

      There are 3 issues, I noticed while reading the code:

      (1) aria_read_data() checks the wrong error code after maria_page_crc_check() call.
      maria_page_crc_check() returns 0 or 1. But we do check for HA_ERR_WRONG_CRC. This fails to identify the corrupted page in the file.

      (2) IIUC, depends on the aria_pagecache_buffer_size, file could contain page or
      zero-filled pages. aria_read_data() and aria_read_index() should tolerate zero
      filled pages.

      To repeat the scenario after fixing the (1), remove --parallel=10 from
      mariabackup.aria_log_rotate_during_backup test case

      diff --git a/mysql-test/suite/mariabackup/aria_log_rotate_during_backup.test b/mysql-test/suite/mariabackup/aria_log_rotate_during_backup.test
      index 172ade338d5..9b77a5f54b9 100644
      --- a/mysql-test/suite/mariabackup/aria_log_rotate_during_backup.test
      +++ b/mysql-test/suite/mariabackup/aria_log_rotate_during_backup.test
      @@ -34,11 +34,11 @@ CREATE TABLE test.t1(id INT, txt LONGTEXT) ENGINE=Aria;
       --source include/aria_log_control_load.inc
       CALL display_aria_log_control(@aria_log_control);
       
      -
      +let $backuplog= $MYSQLTEST_VARDIR/tmp/backup.log;
       --echo # Running --backup
       --let after_scanning_log_files=CALL test.populate_t1
       --disable_result_log
      ---exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf  --backup --parallel=10  --target-dir=$targetdir  --dbug=+d,mariabackup_events 2>&1
      +--exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf  --backup --target-dir=$targetdir  --dbug=+d,mariabackup_events > $backuplog
       --let after_scanning_log_files=
       --enable_result_log
       
      @@ -77,6 +77,7 @@ CALL display_aria_log_control(@aria_log_control);
       SELECT id, LENGTH(txt) FROM t1 ORDER BY id;
       DROP TABLE t1;
       rmdir $targetdir;
      +remove_file $backuplog;
       
       DROP PROCEDURE populate_t1;
       DROP PROCEDURE display_aria_log_control;
      

      (3) maria_page_crc_check(), condition to check _ma_check_if_zero() is wrong

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              thiru Thirunarayanan Balathandayuthapani
              Votes:
              0 Vote for this issue
              Watchers:
              2 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.