Skip to content
/ server Public

Commit 70e71e2

Browse files
committed
Support innodb_log_archive=ON in no_checkpoint_end.inc
no_checkpoint_prepare.inc: A new file, to prepare for subsequent inclusion of no_checkpoint_end.inc. We will invoke the server to parse the log and to determine the latest checkpoint. FIXME: The following tests must not be skipped for --mysqld=--innodb-log-archive: innodb.corrupterd_during_recovery: Fails to report an error message encryption.doublewrite_debug: Crashes Also, all --suite=encryption tests that use innodb_encrypt_log are being skipped for innodb_log_encrypt=ON.
1 parent 1a7ac4b commit 70e71e2

18 files changed

+51
-39
lines changed

mysql-test/suite/encryption/t/corrupted_during_recovery.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
--source include/have_innodb.inc
2-
--source ../../suite/innodb/include/skip_innodb_log_archive.inc # FIXME
2+
--source ../../suite/innodb/include/no_checkpoint_prepare.inc
33
--source include/have_file_key_management_plugin.inc
44

55
--disable_query_log

mysql-test/suite/encryption/t/doublewrite_debug.test

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
--source include/have_innodb.inc
2-
--source ../../suite/innodb/include/skip_innodb_log_archive.inc # FIXME
2+
--source ../../suite/innodb/include/skip_innodb_log_archive.inc # FIXME: crashes
3+
--source ../../suite/innodb/include/no_checkpoint_prepare.inc
34
--source include/have_debug.inc
45
--source include/not_embedded.inc
56
--source include/have_file_key_management_plugin.inc

mysql-test/suite/encryption/t/file_creation.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
--source include/have_innodb.inc
2-
--source ../../suite/innodb/include/skip_innodb_log_archive.inc # FIXME
2+
--source ../../suite/innodb/include/no_checkpoint_prepare.inc
33
--source include/have_example_key_management_plugin.inc
44
let $restart_noprint=2;
55
# embedded does not support restart

mysql-test/suite/encryption/t/innochecksum.test

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
# Require InnoDB
88
-- source include/have_innodb.inc
99
-- source include/have_file_key_management_plugin.inc
10+
-- source include/skip_innodb_log_archive.inc # depends on innodb_log_archive=OFF checkpoint logic
1011
-- source include/innodb_page_size_small.inc
1112
-- source include/innodb_checksum_algorithm.inc
1213
-- source include/maybe_debug.inc

mysql-test/suite/encryption/t/innodb-redo-badkey.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- source include/have_innodb.inc
2-
--source ../../suite/innodb/include/skip_innodb_log_archive.inc # FIXME
2+
--source ../../suite/innodb/include/no_checkpoint_prepare.inc
33
-- source include/have_file_key_management_plugin.inc
44
# embedded does not support restart
55
-- source include/not_embedded.inc

mysql-test/suite/encryption/t/innodb-redo-nokeys.test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- source include/have_innodb.inc
2-
--source ../../suite/innodb/include/skip_innodb_log_archive.inc # FIXME
2+
--source ../../suite/innodb/include/no_checkpoint_prepare.inc
33
-- source include/have_file_key_management_plugin.inc
44
# embedded does not support restart
55
-- source include/not_embedded.inc

mysql-test/suite/innodb/include/no_checkpoint_end.inc

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,33 @@
11
# Check that the latest checkpoint in the redo log files
22
# is not newer than the checkpoint sampled by no_checkpoint_start.inc
33

4-
if (!$no_checkpoint_kill) {
54
--source include/kill_mysqld.inc
6-
}
5+
--error 2
6+
--exec $MYSQLD_CMD --innodb --innodb-read-only --innodb-invalid-option --innodb-page-size=$INNODB_PAGE_SIZE --innodb-buffer-pool-size=21m
77

88
perl;
9-
my $cp = $ENV{CHECKPOINT_LSN};
10-
$cp =~ s/^InnoDB\t\t//;
11-
my $log = "$ENV{MYSQLD_DATADIR}ib_logfile0";
12-
open(LOG, "<$log") || die "Unable to open $log";
13-
seek(LOG, 4096, 0) || die "Unable to seek $log";
14-
die unless read(LOG, $_, 8) == 8;
15-
my ($cp1hi,$cp1lo) = unpack("NN", $_);
16-
seek(LOG, 8192, 0) || die "Unable to seek $log";
17-
die unless read(LOG, $_, 8) == 8;
18-
my ($cp2hi,$cp2lo) = unpack("NN", $_);
19-
close(LOG);
20-
21-
my $cp1 = $cp1hi << 32 | $cp1lo;
22-
my $cp2 = $cp2hi << 32 | $cp2lo;
23-
9+
my $cp=0;
10+
my $search_file= "$ENV{MYSQLTEST_VARDIR}/log/mysqld.1.err";
11+
open(FILE, '<', $search_file) || die("Can't open file $search_file: $!");
12+
while(<FILE>)
13+
{
14+
if (/^CURRENT_TEST:/)
15+
{
16+
$cp=0;
17+
}
18+
elsif (!$cp && /\[Warning\] innodb_read_only prevents crash recovery between (\d+) and/o)
19+
{
20+
$cp=$1;
21+
}
22+
}
23+
close(FILE);
2424
open(OUT, ">$ENV{MYSQLTEST_VARDIR}/log/check.txt") || die;
25-
26-
if ($cp1 > $cp || $cp2 > $cp) {
27-
print OUT "--source include/start_mysqld.inc\n"
28-
unless $ENV{no_checkpoint_kill};
25+
if ($cp != $ENV{CHECKPOINT_LSN})
26+
{
27+
print OUT "--source include/start_mysqld.inc\n";
2928
print OUT "$ENV{CLEANUP_IF_CHECKPOINT}\n";
30-
print OUT "--skip Extra checkpoint 1 after $cp ($cp1,$cp2)\n";
29+
print OUT "--skip Unexpected checkpoint $cp != $ENV{CHECKPOINT_LSN}\n";
3130
}
32-
3331
close(OUT);
3432
EOF
3533

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
--disable_query_log
2+
call mtr.add_suppression("InnoDB: innodb_read_only prevents crash recovery");
3+
call mtr.add_suppression("InnoDB: Plugin initialization aborted");
4+
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
5+
call mtr.add_suppression("unknown option '--innodb-invalid-option'");
6+
call mtr.add_suppression("\\[ERROR\\] Aborting");
7+
let $INNODB_PAGE_SIZE=`SELECT @@GLOBAL.innodb_page_size`;
8+
--enable_query_log

mysql-test/suite/innodb/t/alter_kill.test

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
--source include/have_innodb.inc
2-
--source include/skip_innodb_log_archive.inc # FIXME: fix no_checkpoint_end.inc
32
# The embedded server does not support restarting in mysql-test-run.
43
-- source include/not_embedded.inc
54
-- source include/no_valgrind_without_big.inc
65
-- source include/innodb_checksum_algorithm.inc
6+
--source include/no_checkpoint_prepare.inc
77

88
let MYSQLD_DATADIR=`select @@datadir`;
99
let PAGE_SIZE=`select @@innodb_page_size`;
@@ -161,6 +161,7 @@ XA END 'x';
161161
XA PREPARE 'x';
162162
--connection default
163163
--let CLEANUP_IF_CHECKPOINT=XA ROLLBACK 'x';DROP TABLE bug16735660;
164+
164165
--source ../include/no_checkpoint_end.inc
165166

166167
-- disconnect con1

mysql-test/suite/innodb/t/corrupted_during_recovery.test

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
--source include/have_innodb.inc
2-
--source include/skip_innodb_log_archive.inc # FIXME: fix no_checkpoint_end.inc
2+
--source include/skip_innodb_log_archive.inc # FIXME: issue impossible innodb_log_recovery_start=
3+
--source include/no_checkpoint_prepare.inc
34

45
--disable_query_log
56
call mtr.add_suppression("InnoDB: Plugin initialization aborted");

0 commit comments

Comments
 (0)