mariadb/mysql-test/suite/rpl/t/parallel_backup_xa_debug.test
Kristian Nielsen 04e114aec0 Fix sporadic failure of rpl.parallel_backup_xa_debug
The test case set debug_sync=RESET without waiting for the server thread to
receive the prior signal. This can cause the signal to be lost, the thread to
not wake up, and thus the test to time out.

Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
2025-03-13 18:58:12 +01:00

66 lines
1.9 KiB
Text

# Verify deadlock between XA-PREPARE and BACKUP on the optimistic slave
--source include/have_debug.inc
--source include/have_debug_sync.inc
--source include/have_innodb.inc
# The test is not format specific, MIXED is required to optimize testing time
--source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
--connection master
CREATE TABLE t (a INT) ENGINE = innodb;
--sync_slave_with_master
--source include/stop_slave.inc
SET STATEMENT sql_log_bin= 0 FOR ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
SET @old_parallel_threads= @@GLOBAL.slave_parallel_threads;
SET @old_parallel_mode = @@GLOBAL.slave_parallel_mode;
SET @@global.slave_parallel_threads= 2;
SET @@global.slave_parallel_mode = 'optimistic';
--connection master
--echo # MDEV-35110
SET @@gtid_seq_no=100;
insert into t set a=1;
xa start 'x';
insert into t set a=2;
xa end 'x';
xa prepare 'x';
--connection slave
SET @@global.debug_dbug="+d,hold_worker_on_schedule";
start slave;
SET debug_sync = 'now WAIT_FOR reached_pause';
--let $wait_condition= SELECT count(*) = 1 FROM information_schema.processlist WHERE state LIKE "Waiting for prior transaction to commit"
--source include/wait_condition.inc
--connection slave1
backup stage start;
backup stage block_commit;
--connection slave
--let $wait_condition= SELECT count(*) = 1 FROM information_schema.processlist WHERE state LIKE "Waiting for backup lock"
SET debug_sync = 'now SIGNAL continue_worker';
--source include/wait_condition.inc
SET debug_sync = RESET;
--connection slave1
backup stage end;
--connection master
xa rollback 'x';
--sync_slave_with_master
--echo # Clean up.
--connection slave
--source include/stop_slave.inc
SET @@global.debug_dbug="";
SET @@global.slave_parallel_threads= @old_parallel_threads;
SET @@global.slave_parallel_mode = @old_parallel_mode;
--source include/start_slave.inc
--connection server_1
DROP TABLE t;
--source include/rpl_end.inc