mirror of
https://github.com/MariaDB/server.git
synced 2025-02-05 13:22:17 +01:00
e10f9e6c81
after commit b5615eff0d
119 lines
3.6 KiB
Text
119 lines
3.6 KiB
Text
#
|
|
# Verify that the wsrep XID gets updated in InnoDB rollback segment
|
|
# properly and can be recovered with --wsrep-recover
|
|
#
|
|
# The test runs the following scenarios:
|
|
#
|
|
# 1) The server is started but no SQL is run
|
|
# 2) DDL is executed
|
|
# 3) INSERT is executed
|
|
# 4) Two INSERTs are executed so that the first one in order will be
|
|
# blocked after certification and the second one before entering
|
|
# commit order critical section.
|
|
# 5) Two DMLs are executed so that the prepare step is run out of order.
|
|
# Both transactions are blocked before commit order critical section.
|
|
#
|
|
# After each scenario server is killed and the recovered position
|
|
# is validated.
|
|
#
|
|
|
|
--source include/have_wsrep.inc
|
|
--source include/have_innodb.inc
|
|
--source include/have_wsrep_provider.inc
|
|
--source include/have_debug_sync.inc
|
|
|
|
#
|
|
# Binlog option for recovery run. This must be set in the test because
|
|
# combinations file causes log-bin option to be set from command line,
|
|
# not via my.cnf.
|
|
#
|
|
--let $log_bin = `SELECT @@log_bin`
|
|
if ($log_bin) {
|
|
--let $wsrep_recover_binlog_opt = --log-bin
|
|
}
|
|
|
|
#
|
|
# Scenario 1
|
|
# The expected recovered seqno is 1 corresponding to initial cluster
|
|
# configuration change.
|
|
#
|
|
let $restart_noprint=2;
|
|
|
|
--source include/kill_mysqld.inc
|
|
--source wsrep-recover-step.inc
|
|
--echo Expect seqno 1
|
|
--echo $wsrep_recover_start_position_seqno
|
|
|
|
--let $restart_parameters = --wsrep-start-position=$wsrep_recover_start_position_uuid:$wsrep_recover_start_position_seqno
|
|
--source include/start_mysqld.inc
|
|
--source include/wait_wsrep_ready.inc
|
|
|
|
#
|
|
# Senario 2
|
|
# The expected recovered seqno is 3 corresponding to two configuration
|
|
# changes and CREATE TABLE
|
|
#
|
|
|
|
CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB;
|
|
let $restart_noprint=2;
|
|
--source include/kill_mysqld.inc
|
|
--source wsrep-recover-step.inc
|
|
--echo Expect seqno 3
|
|
--echo $wsrep_recover_start_position_seqno
|
|
|
|
--let $restart_parameters = --wsrep-start-position=$wsrep_recover_start_position_uuid:$wsrep_recover_start_position_seqno
|
|
--source include/start_mysqld.inc
|
|
--source include/wait_wsrep_ready.inc
|
|
|
|
#
|
|
# Scenario 3
|
|
# The expected recovered seqno is 5 corresponding to three configuration
|
|
# changes, CREATE TABLE and INSERT.
|
|
#
|
|
# The expected wsrep_last_committed after the server is restarted is 6.
|
|
#
|
|
|
|
INSERT INTO t1 VALUES (5);
|
|
let $restart_noprint=2;
|
|
--source include/kill_mysqld.inc
|
|
--source wsrep-recover-step.inc
|
|
--echo Expect seqno 5
|
|
--echo $wsrep_recover_start_position_seqno
|
|
--let $restart_parameters = --wsrep-start-position=$wsrep_recover_start_position_uuid:$wsrep_recover_start_position_seqno
|
|
--source include/start_mysqld.inc
|
|
--source include/wait_wsrep_ready.inc
|
|
|
|
SELECT VARIABLE_VALUE `expect 6` FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_last_committed';
|
|
|
|
#
|
|
# Scenario 4
|
|
#
|
|
# The INSERT gets prepared but not committed.
|
|
#
|
|
# This scenario is not applicable if binlog is not on since the
|
|
# commit is not 2PC.
|
|
#
|
|
# If binlog is on, the INSERT
|
|
# should be rolled back during recovery phase since it has not yet
|
|
# been logged into binlog.
|
|
#
|
|
if ($log_bin) {
|
|
--connect con1, localhost, root
|
|
SET DEBUG_SYNC = "ha_commit_trans_after_prepare SIGNAL after_prepare_reached WAIT_FOR continue";
|
|
--send INSERT INTO t1 VALUES (7)
|
|
|
|
--connection default
|
|
let $restart_noprint=2;
|
|
SET DEBUG_SYNC = "now WAIT_FOR after_prepare_reached";
|
|
--source include/kill_mysqld.inc
|
|
--source wsrep-recover-step.inc
|
|
--echo Expect seqno 6
|
|
--echo $wsrep_recover_start_position_seqno
|
|
--let $restart_parameters = --wsrep-start-position=$wsrep_recover_start_position_uuid:$wsrep_recover_start_position_seqno
|
|
--source include/start_mysqld.inc
|
|
--source include/wait_wsrep_ready.inc
|
|
--echo Expect 5
|
|
SELECT * FROM t1;
|
|
}
|
|
|
|
DROP TABLE t1;
|