diff options
author | Brandon Nesterenko <brandon.nesterenko@mariadb.com> | 2022-12-08 15:04:09 -0700 |
---|---|---|
committer | Brandon Nesterenko <brandon.nesterenko@mariadb.com> | 2022-12-08 15:05:57 -0700 |
commit | b2e79866a85ff4ead2ce65e2d2c6626cbcac888c (patch) | |
tree | 42f645ceb5308e8ff5ea77e40b392b3c9b4d2609 | |
parent | 181780f78c287822c88a59169d19caa48492ba1f (diff) | |
download | mariadb-git-bb-10.5-MDEV-21469-2022.tar.gz |
MDEV-21469 Test and error message fixupsbb-10.5-MDEV-21469-2022
11 files changed, 118 insertions, 13 deletions
diff --git a/mysql-test/suite/rpl/r/rpl_xa_commit_crash_safe.result b/mysql-test/suite/rpl/r/rpl_xa_commit_crash_safe.result index ce7d257690a..8587c33fdf8 100644 --- a/mysql-test/suite/rpl/r/rpl_xa_commit_crash_safe.result +++ b/mysql-test/suite/rpl/r/rpl_xa_commit_crash_safe.result @@ -24,6 +24,8 @@ connection master; connection default; connection server_1; connection master; +include/assert_grep.inc [Binlog XA COMMIT event should be successfully recovered] +include/assert_grep.inc [Binlog XA crash recovery should successfully finish] connection slave; include/start_slave.inc connection master; diff --git a/mysql-test/suite/rpl/r/rpl_xa_event_apply_failure.result b/mysql-test/suite/rpl/r/rpl_xa_event_apply_failure.result index dc9930b77b1..05cc6af963e 100644 --- a/mysql-test/suite/rpl/r/rpl_xa_event_apply_failure.result +++ b/mysql-test/suite/rpl/r/rpl_xa_event_apply_failure.result @@ -3,7 +3,7 @@ include/master-slave.inc connect master2,localhost,root,,; connection master; CALL mtr.add_suppression("Found 1 prepared XA transactions"); -CALL mtr.add_suppression("Failed to execute binlog query event"); +CALL mtr.add_suppression("Failed to execute recovered binlog query event"); CALL mtr.add_suppression("Recovery: Error .Out of memory.."); CALL mtr.add_suppression("Crash recovery failed."); CALL mtr.add_suppression("Can.t init tc log"); @@ -28,6 +28,7 @@ connection master1; connection master; connection default; connection default; +include/assert_grep.inc [Binlog event recovery should fail] connection master; *** must be no 'xa2' commit seen, as it's still prepared: SELECT * FROM t; diff --git a/mysql-test/suite/rpl/r/rpl_xa_prepare_commit_prepare.result b/mysql-test/suite/rpl/r/rpl_xa_prepare_commit_prepare.result index 9ba24716639..59b4f7177a3 100644 --- a/mysql-test/suite/rpl/r/rpl_xa_prepare_commit_prepare.result +++ b/mysql-test/suite/rpl/r/rpl_xa_prepare_commit_prepare.result @@ -23,6 +23,8 @@ connection master; connection default; connection server_1; connection master; +include/assert_grep.inc [Binlog XA PREPARE event should be successfully recovered] +include/assert_grep.inc [Binlog XA crash recovery should successfully finish] connection slave; include/start_slave.inc connection master; diff --git a/mysql-test/suite/rpl/r/rpl_xa_prepare_crash_safe.result b/mysql-test/suite/rpl/r/rpl_xa_prepare_crash_safe.result index 99baf59a3c1..83a49d77ebf 100644 --- a/mysql-test/suite/rpl/r/rpl_xa_prepare_crash_safe.result +++ b/mysql-test/suite/rpl/r/rpl_xa_prepare_crash_safe.result @@ -32,6 +32,8 @@ connection master; connection default; connection server_1; connection master; +include/assert_grep.inc [Binlog XA PREPARE event should be successfully recovered] +include/assert_grep.inc [Binlog XA crash recovery should successfully finish] connection slave; include/start_slave.inc connection master; diff --git a/mysql-test/suite/rpl/r/rpl_xa_rollback_commit_crash_safe.result b/mysql-test/suite/rpl/r/rpl_xa_rollback_commit_crash_safe.result index dc26c224ea9..2520287acc7 100644 --- a/mysql-test/suite/rpl/r/rpl_xa_rollback_commit_crash_safe.result +++ b/mysql-test/suite/rpl/r/rpl_xa_rollback_commit_crash_safe.result @@ -24,6 +24,8 @@ connection master; connection default; connection server_1; connection master; +include/assert_grep.inc [Binlog XA ROLLBACK event should be successfully recovered] +include/assert_grep.inc [Binlog XA crash recovery should successfully finish] connection slave; include/start_slave.inc connection master; diff --git a/mysql-test/suite/rpl/t/rpl_xa_commit_crash_safe.test b/mysql-test/suite/rpl/t/rpl_xa_commit_crash_safe.test index e972e3f09de..959f108e32b 100644 --- a/mysql-test/suite/rpl/t/rpl_xa_commit_crash_safe.test +++ b/mysql-test/suite/rpl/t/rpl_xa_commit_crash_safe.test @@ -78,6 +78,27 @@ connection server_1; --enable_reconnect --source include/wait_until_connected_again.inc +let $log_error_= `SELECT @@GLOBAL.log_error`; +if(!$log_error_) +{ + # MySQL Server on windows is started with --console and thus + # does not know the location of its .err log, use default location + let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err; +} +--let $assert_file= $log_error_ +--let $assert_only_after = CURRENT_TEST: rpl.rpl_xa_commit_crash_safe + +--let $assert_text= Binlog XA COMMIT event should be successfully recovered +--let $assert_select=Recovered binlog event XA COMMIT.*successfully applied\$ +--let $assert_count= 1 +--source include/assert_grep.inc + +--let $assert_text= Binlog XA crash recovery should successfully finish +--let $assert_select=Binlog XA crash recovery finished +--let $assert_count= 1 +--source include/assert_grep.inc + + --connection slave --source include/start_slave.inc --sync_with_master diff --git a/mysql-test/suite/rpl/t/rpl_xa_event_apply_failure.test b/mysql-test/suite/rpl/t/rpl_xa_event_apply_failure.test index 14cebbd9b13..0b333295628 100644 --- a/mysql-test/suite/rpl/t/rpl_xa_event_apply_failure.test +++ b/mysql-test/suite/rpl/t/rpl_xa_event_apply_failure.test @@ -29,7 +29,7 @@ connect (master2,localhost,root,,); --connection master CALL mtr.add_suppression("Found 1 prepared XA transactions"); -CALL mtr.add_suppression("Failed to execute binlog query event"); +CALL mtr.add_suppression("Failed to execute recovered binlog query event"); CALL mtr.add_suppression("Recovery: Error .Out of memory.."); CALL mtr.add_suppression("Crash recovery failed."); CALL mtr.add_suppression("Can.t init tc log"); @@ -79,6 +79,22 @@ connection default; --enable_reconnect --source include/wait_until_connected_again.inc +let $log_error_= `SELECT @@GLOBAL.log_error`; +if(!$log_error_) +{ + # MySQL Server on windows is started with --console and thus + # does not know the location of its .err log, use default location + let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err; +} +--let $assert_file= $log_error_ +--let $assert_only_after = CURRENT_TEST: rpl.rpl_xa_event_apply_failure + +--let $assert_text= Binlog event recovery should fail +--let $assert_select= Failed to execute recovered binlog query +--let $assert_count= 1 +--source include/assert_grep.inc + + --connection master --enable_reconnect --echo *** must be no 'xa2' commit seen, as it's still prepared: diff --git a/mysql-test/suite/rpl/t/rpl_xa_prepare_commit_prepare.test b/mysql-test/suite/rpl/t/rpl_xa_prepare_commit_prepare.test index 7b987c7f29b..b9be3c3bac4 100644 --- a/mysql-test/suite/rpl/t/rpl_xa_prepare_commit_prepare.test +++ b/mysql-test/suite/rpl/t/rpl_xa_prepare_commit_prepare.test @@ -75,6 +75,25 @@ connection server_1; --connection master --enable_reconnect --source include/wait_until_connected_again.inc +let $log_error_= `SELECT @@GLOBAL.log_error`; +if(!$log_error_) +{ + # MySQL Server on windows is started with --console and thus + # does not know the location of its .err log, use default location + let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err; +} +--let $assert_file= $log_error_ +--let $assert_only_after = CURRENT_TEST: rpl.rpl_xa_prepare_commit_prepare + +--let $assert_text= Binlog XA PREPARE event should be successfully recovered +--let $assert_select=Recovered binlog event XA PREPARE.*successfully applied\$ +--let $assert_count= 1 +--source include/assert_grep.inc + +--let $assert_text= Binlog XA crash recovery should successfully finish +--let $assert_select=Binlog XA crash recovery finished +--let $assert_count= 1 +--source include/assert_grep.inc --connection slave --source include/start_slave.inc diff --git a/mysql-test/suite/rpl/t/rpl_xa_prepare_crash_safe.test b/mysql-test/suite/rpl/t/rpl_xa_prepare_crash_safe.test index 9d2c5cce528..3c3777dd024 100644 --- a/mysql-test/suite/rpl/t/rpl_xa_prepare_crash_safe.test +++ b/mysql-test/suite/rpl/t/rpl_xa_prepare_crash_safe.test @@ -6,6 +6,7 @@ # # Steps: # 0 - Generate 3 explicit XA transactions. 'xa1', 'xa2' and 'xa3'. +# 'xa1' is prepared. # Using debug simulation hold the execution of second XA PREPARE # statement after the XA PREPARE is written to the binary log. # With this the prepare will not be done in engine. @@ -95,6 +96,25 @@ connection server_1; --enable_reconnect --source include/wait_until_connected_again.inc +let $log_error_= `SELECT @@GLOBAL.log_error`; +if(!$log_error_) +{ + # MySQL Server on windows is started with --console and thus + # does not know the location of its .err log, use default location + let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err; +} +--let $assert_file= $log_error_ +--let $assert_only_after = CURRENT_TEST: rpl.rpl_xa_prepare_crash_safe + +--let $assert_text= Binlog XA PREPARE event should be successfully recovered +--let $assert_select=Recovered binlog event XA PREPARE.*successfully applied\$ +--let $assert_count= 2 +--source include/assert_grep.inc + +--let $assert_text= Binlog XA crash recovery should successfully finish +--let $assert_select=Binlog XA crash recovery finished +--let $assert_count= 1 +--source include/assert_grep.inc --connection slave --source include/start_slave.inc diff --git a/mysql-test/suite/rpl/t/rpl_xa_rollback_commit_crash_safe.test b/mysql-test/suite/rpl/t/rpl_xa_rollback_commit_crash_safe.test index 1d19f96116e..fbfe98e9e11 100644 --- a/mysql-test/suite/rpl/t/rpl_xa_rollback_commit_crash_safe.test +++ b/mysql-test/suite/rpl/t/rpl_xa_rollback_commit_crash_safe.test @@ -1,6 +1,6 @@ # ==== Purpose ==== # -# Test verifies that XA COMMIT statements are crash safe. +# Test verifies that XA ROLLBACK statements are crash safe. # # ==== Implementation ==== # @@ -77,6 +77,26 @@ connection server_1; --enable_reconnect --source include/wait_until_connected_again.inc +let $log_error_= `SELECT @@GLOBAL.log_error`; +if(!$log_error_) +{ + # MySQL Server on windows is started with --console and thus + # does not know the location of its .err log, use default location + let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err; +} +--let $assert_file= $log_error_ +--let $assert_only_after = CURRENT_TEST: rpl.rpl_xa_rollback_commit_crash_safe + +--let $assert_text= Binlog XA ROLLBACK event should be successfully recovered +--let $assert_select=Recovered binlog event XA ROLLBACK.*successfully applied\$ +--let $assert_count= 1 +--source include/assert_grep.inc + +--let $assert_text= Binlog XA crash recovery should successfully finish +--let $assert_select=Binlog XA crash recovery finished +--let $assert_count= 1 +--source include/assert_grep.inc + --connection slave --source include/start_slave.inc --sync_with_master diff --git a/sql/log.cc b/sql/log.cc index a59fc9467aa..1febec22170 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -11082,14 +11082,14 @@ bool MYSQL_BIN_LOG::recover_explicit_xa_prepare() { if ((err= ev->apply_event(rgi))) { - sql_print_error("Failed to execute binlog query event of type: %s," - " at %s:%llu; error %d %s", ev->get_type_str(), - linfo.log_file_name, - (ev->log_pos - ev->data_written), - thd->get_stmt_da()->sql_errno(), - thd->get_stmt_da()->message()); - delete ev; - goto err1; + sql_print_error( + "Failed to execute recovered binlog query event of type: %s," + " at %s:%llu; error %d %s", + ev->get_type_str(), linfo.log_file_name, + (ev->log_pos - ev->data_written), + thd->get_stmt_da()->sql_errno(), thd->get_stmt_da()->message()); + delete ev; + goto err1; } else if (typ == FORMAT_DESCRIPTION_EVENT) enable_apply_event=false; @@ -11100,7 +11100,7 @@ bool MYSQL_BIN_LOG::recover_explicit_xa_prepare() --recover_xa_count; enable_apply_event=false; - sql_print_information("Binlog event %s at %s:%llu" + sql_print_information("Recovered binlog event %s at %s:%llu" " successfully applied", typ == XA_PREPARE_LOG_EVENT ? static_cast<XA_prepare_log_event *>(ev)->get_query() : @@ -11130,7 +11130,7 @@ err1: */ if (recover_xa_count > 0) goto err2; - sql_print_information("Crash recovery finished."); + sql_print_information("Binlog XA crash recovery finished."); err= false; err2: if (file >= 0) |