mirror of
https://github.com/MariaDB/server.git
synced 2025-12-15 08:21:24 +03:00
The patch also fixes a race in rpl_stop_slave.test. On machines with lots of CPU and memory, something like `mtr --parallel=10` can speed up the test suite enormously. However, we have a few test cases that run for long (several minutes), and if we are unlucky and happen to schedule those towards the end of the test suite, we end up with most workers idle while waiting for the last slow test to end, significantly delaying the finish of the entire suite. Improve this by marking the offending tests as taking "long", and trying to schedule those tests early. This reduces the time towards the end of the test suite run where some workers are waiting with nothing to do for the remaining workers each to finish their last test. Also, the rpl_stop_slave test had a race which could cause it to take a 300 seconds debug_sync timeout; this is fixed. Testing on a 4-core 8GB machine, this patch speeds up the test suite with around 30% for --parallel=10 (debug build), allowing to run the entire suite in 5 minutes.
63 lines
1.4 KiB
Plaintext
63 lines
1.4 KiB
Plaintext
#
|
|
# Auxiliary file which is used to test BUG#56118
|
|
#
|
|
# Slave should apply all statements in the transaction before stop if any
|
|
# temporary table is created or dropped.
|
|
#
|
|
# USEAGE:
|
|
# --let $tmp_table_stm= a SQL statement
|
|
# --source extra/rpl_tests/rpl_stop_slave.test
|
|
#
|
|
|
|
if (`SELECT "$tmp_table_stm" = ''`)
|
|
{
|
|
--echo \$tmp_table_stm is NULL
|
|
--die $tmp_table_stm is NULL
|
|
}
|
|
|
|
--echo
|
|
--echo [ On Master ]
|
|
connection master;
|
|
BEGIN;
|
|
DELETE FROM t1;
|
|
eval $tmp_table_stm;
|
|
INSERT INTO t1 VALUES (1);
|
|
DROP TEMPORARY TABLE tt1;
|
|
COMMIT;
|
|
|
|
--echo
|
|
--echo [ On Slave ]
|
|
connection slave;
|
|
|
|
# To check if slave SQL thread is applying INSERT statement
|
|
let $show_statement= SHOW PROCESSLIST;
|
|
let $field= Info;
|
|
let $condition= LIKE 'INSERT%';
|
|
source include/wait_show_condition.inc;
|
|
|
|
send STOP SLAVE SQL_THREAD;
|
|
|
|
--echo
|
|
--echo [ On Slave1 ]
|
|
connection slave1;
|
|
--echo # To resume slave SQL thread
|
|
SET DEBUG_SYNC= 'now SIGNAL signal.continue';
|
|
SET DEBUG_SYNC= 'now WAIT_FOR signal.continued';
|
|
SET DEBUG_SYNC= 'RESET';
|
|
|
|
--echo
|
|
--echo [ On Slave ]
|
|
connection slave;
|
|
reap;
|
|
source include/wait_for_slave_sql_to_stop.inc;
|
|
|
|
--echo # Slave should stop after the transaction has committed.
|
|
--echo # So t1 on master is same to t1 on slave.
|
|
let diff_table_1=master:test.t1;
|
|
let diff_table_2=slave:test.t1;
|
|
source include/diff_tables.inc;
|
|
|
|
connection slave;
|
|
START SLAVE SQL_THREAD;
|
|
source include/wait_for_slave_sql_to_start.inc;
|