diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2017-02-16 09:18:46 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2017-02-16 09:18:46 +0200 |
commit | 34bbc76f1c1f6968cdcf65dee2d887ab71557e5c (patch) | |
tree | 7f3a15f6c2c5127ac9089424197039fc8fcaa8c3 /mysql-test | |
parent | 7a5288015c8afeaaef4d5dd04057f78c7978eeee (diff) | |
download | mariadb-git-34bbc76f1c1f6968cdcf65dee2d887ab71557e5c.tar.gz |
Simplify a WL#6494/WL#7142 test.mariadb-10.2.4
The test innodb.log_file_size_checkpoint was originally added to
MySQL 5.7 by me in a bug fix, to fix the interaction of WL#6494
(redo log resizing, introduced in MySQL 5.6) and WL#7142
(data file discovery based on MLOG_FILE_NAME records,
introduced in MySQL 5.7):
commit 70f9ef4e1220827132b50275ca7272f2bcca1864
Author: Marko Mäkelä <marko.makela@oracle.com>
Date: Wed May 21 13:31:29 2014 +0300
Bug#18755095 REDO LOG SIZE CHANGE AFTER CRASH RESULTS IN CHECKPOINT AGE
ERROR MESSAGE
This is a regression from fixing
Bug#18730524 REPEATED KILL+RESTART FAILS DUE TO MISSING MLOG_FILE_NAME
RECORD
innobase_start_or_create_for_mysql(): Invoke fil_names_clear() before
creating the "checkpoint" when changing redo log files.
Approved by Jimmy Yang on IM.
The relevant part of the test is that fil_names_clear() is invoked to
emit an MLOG_CHECKPOINT record before the redo log files are deleted.
In case the server is killed before ib_logfile0 has been deleted,
the old (not-yet-resized) redo log will be treated as valid. We do not
need to create a large number of tables for that.
Diffstat (limited to 'mysql-test')
4 files changed, 28 insertions, 35 deletions
diff --git a/mysql-test/suite/innodb/r/log_file_name_debug.result b/mysql-test/suite/innodb/r/log_file_name_debug.result index e82feef870c..e33ce36d1f2 100644 --- a/mysql-test/suite/innodb/r/log_file_name_debug.result +++ b/mysql-test/suite/innodb/r/log_file_name_debug.result @@ -5,4 +5,10 @@ SET GLOBAL DEBUG_DBUG='+d,fil_names_write_bogus'; CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB; # Kill the server +SELECT * FROM t1; +ERROR 42000: Unknown storage engine 'InnoDB' +FOUND /InnoDB: Tablespace 4294967280 was not found at .*, but there were no modifications either/ in mysqld.1.err +SELECT * FROM t1; +ERROR 42000: Unknown storage engine 'InnoDB' +FOUND /srv_prepare_to_delete_redo_log_files: ib_log: MLOG_CHECKPOINT.* written/ in mysqld.1.err DROP TABLE t1; diff --git a/mysql-test/suite/innodb/r/log_file_size_checkpoint.result b/mysql-test/suite/innodb/r/log_file_size_checkpoint.result deleted file mode 100644 index 068b1368e1e..00000000000 --- a/mysql-test/suite/innodb/r/log_file_size_checkpoint.result +++ /dev/null @@ -1,4 +0,0 @@ -CREATE DATABASE logtest; -USE logtest; -# Kill and restart: --innodb-log-files-in-group=2 --innodb-log-file-size=4M --innodb-buffer-pool-size=50M -DROP DATABASE logtest; diff --git a/mysql-test/suite/innodb/t/log_file_name_debug.test b/mysql-test/suite/innodb/t/log_file_name_debug.test index 41d7ec2e53e..44012d38c8e 100644 --- a/mysql-test/suite/innodb/t/log_file_name_debug.test +++ b/mysql-test/suite/innodb/t/log_file_name_debug.test @@ -10,9 +10,15 @@ SET GLOBAL DEBUG_DBUG='+d,fil_names_write_bogus'; --disable_query_log +call mtr.add_suppression("InnoDB: Plugin initialization aborted"); +call mtr.add_suppression("Plugin 'InnoDB' init function returned error"); +call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed"); FLUSH TABLES; --enable_query_log +--let $n_logs=`SELECT if(@@innodb_log_files_in_group = 1, 2, 1)` +--let $resize= --innodb-log-files-in-group=$n_logs --innodb-log-file-size=4M + --source include/no_checkpoint_start.inc CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB; @@ -20,12 +26,24 @@ CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB; --let CLEANUP_IF_CHECKPOINT=DROP TABLE t1; --source include/no_checkpoint_end.inc +--let $restart_parameters= --debug=d,innodb_log_abort_1 $resize --source include/start_mysqld.inc - -DROP TABLE t1; +--error ER_UNKNOWN_STORAGE_ENGINE +SELECT * FROM t1; --let SEARCH_FILE = $MYSQLTEST_VARDIR/log/mysqld.1.err ---let SEARCH_PATTERN = InnoDB: Tablespace 4294967280 was not found at .*, but there were no modifications either ---let SEARCH_ABORT = NOT FOUND --let SEARCH_RANGE = -50000 +--let SEARCH_PATTERN = InnoDB: Tablespace 4294967280 was not found at .*, but there were no modifications either --source include/search_pattern_in_file.inc + +--let $restart_parameters= --debug=d,innodb_log_abort_3,ib_log $resize +--source include/restart_mysqld.inc +--error ER_UNKNOWN_STORAGE_ENGINE +SELECT * FROM t1; +--let SEARCH_PATTERN= srv_prepare_to_delete_redo_log_files: ib_log: MLOG_CHECKPOINT.* written +--source include/search_pattern_in_file.inc + +--let $restart_parameters= +--source include/restart_mysqld.inc +DROP TABLE t1; + diff --git a/mysql-test/suite/innodb/t/log_file_size_checkpoint.test b/mysql-test/suite/innodb/t/log_file_size_checkpoint.test deleted file mode 100644 index 16b71bfd1f4..00000000000 --- a/mysql-test/suite/innodb/t/log_file_size_checkpoint.test +++ /dev/null @@ -1,27 +0,0 @@ ---source include/have_innodb.inc ---source include/not_embedded.inc ---source include/no_valgrind_without_big.inc - -CREATE DATABASE logtest; -USE logtest; -let $n=250; -let $t=veryLongTableNameToCreateMLOG_FILE_NAMErecords; - ---disable_query_log -let $i=$n; -while ($i) -{ ---eval CREATE TABLE $t$i(a INT PRIMARY KEY) ENGINE=InnoDB; -dec $i; -} - -# If we set above n to 500, this test case could fail easily, because -# the inndob buffer pool is too small, some of which would be occupied -# by the recv*. With n=250, this test case could sporadically fail too. -# So we have to set buffer pool size to 50M which should be enough for this -# test case. Once we fix the bug#22179133 and bug#22186325, we should use -# the default innodb buffer pool(or the smaller one). -let $restart_parameters = --innodb-log-files-in-group=2 --innodb-log-file-size=4M --innodb-buffer-pool-size=50M; ---source include/kill_and_restart_mysqld.inc - -DROP DATABASE logtest; |