Commit 92f9be49 authored by Marko Mäkelä's avatar Marko Mäkelä

Work around MDEV-13542 Crashing on a corrupted page is unhelpful

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.

Work around this problem by amending the corruption tests with
--innodb-purge-rseg-truncate-frequency=1 --skip-innodb-fast-shutdown
so that everything will be purged before the server
is restarted to deal with the corruption.
parent f4b379d6
--innodb-purge-rseg-truncate-frequency=1
--skip-innodb-fast-shutdown
--innodb-purge-rseg-truncate-frequency=1
--skip-innodb-fast-shutdown
...@@ -2,3 +2,5 @@ ...@@ -2,3 +2,5 @@
--loose-innodb-buffer-page --loose-innodb-buffer-page
--loose-innodb-buffer-page-lru --loose-innodb-buffer-page-lru
--innodb-defragment=1 --innodb-defragment=1
--innodb-purge-rseg-truncate-frequency=1
--skip-innodb-fast-shutdown
[crc32] [crc32]
loose-innodb-tablespaces-encryption
loose-innodb-encrypt-tables=on
loose-innodb-encryption-threads=4
max_allowed_packet=64K
loose-innodb-checksum-algorithm=crc32 loose-innodb-checksum-algorithm=crc32
[none] [none]
loose-innodb-tablespaces-encryption
loose-innodb-encrypt-tables=on
loose-innodb-encryption-threads=4
max_allowed_packet=64K
loose-innodb-checksum-algorithm=none loose-innodb-checksum-algorithm=none
--max-allowed-packet=64K
--innodb-tablespaces-encryption
--innodb-encrypt-tables=on
--innodb-encryption-threads=4
--innodb-purge-rseg-truncate-frequency=1
--skip-innodb-fast-shutdown
--innodb-purge-rseg-truncate-frequency=1
--skip-innodb-fast-shutdown
--innodb-purge-rseg-truncate-frequency=1
--skip-innodb-fast-shutdown
...@@ -2,4 +2,5 @@ ...@@ -2,4 +2,5 @@
--innodb-encryption-rotate-key-age=15 --innodb-encryption-rotate-key-age=15
--innodb-encryption-threads=4 --innodb-encryption-threads=4
--innodb-tablespaces-encryption --innodb-tablespaces-encryption
--innodb-purge-rseg-truncate-frequency=1
--skip-innodb-fast-shutdown
...@@ -3,3 +3,5 @@ ...@@ -3,3 +3,5 @@
--innodb-tablespaces-encryption --innodb-tablespaces-encryption
--innodb-encryption-threads=2 --innodb-encryption-threads=2
--innodb-default-encryption-key-id=4 --innodb-default-encryption-key-id=4
--innodb-purge-rseg-truncate-frequency=1
--skip-innodb-fast-shutdown
# Ensure that purge will not crash on the table after we corrupt it.
SET GLOBAL innodb_purge_rseg_truncate_frequency = 1;
SET GLOBAL innodb_fast_shutdown=0;
# Create and populate the table to be corrupted # Create and populate the table to be corrupted
set global innodb_file_per_table=ON; set global innodb_file_per_table=ON;
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB; CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB;
......
...@@ -16,6 +16,10 @@ call mtr.add_suppression("mysqld: Index for table 't1' is corrupt; try to repair ...@@ -16,6 +16,10 @@ call mtr.add_suppression("mysqld: Index for table 't1' is corrupt; try to repair
call mtr.add_suppression("mysqld.exe: Index for table 't1' is corrupt; try to repair it"); call mtr.add_suppression("mysqld.exe: Index for table 't1' is corrupt; try to repair it");
--enable_query_log --enable_query_log
--echo # Ensure that purge will not crash on the table after we corrupt it.
SET GLOBAL innodb_purge_rseg_truncate_frequency = 1;
SET GLOBAL innodb_fast_shutdown=0;
--echo # Create and populate the table to be corrupted --echo # Create and populate the table to be corrupted
set global innodb_file_per_table=ON; set global innodb_file_per_table=ON;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment