mirror of
https://github.com/MariaDB/server.git
synced 2025-08-24 14:48:09 +03:00
rpl.rpl_parallel: after-merge fix
* fix the test to pass * rearrange tests in a file to allow it to auto-merge in the future
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads;
|
||||
SET GLOBAL slave_parallel_threads=10;
|
||||
ERROR HY000: This operation cannot be performed as you have a running slave ''; run STOP SLAVE '' first
|
||||
include/stop_slave.inc
|
||||
@@ -923,61 +924,6 @@ a
|
||||
32
|
||||
33
|
||||
34
|
||||
*** MDEV-6676 - test syntax of @@slave_parallel_mode ***
|
||||
Parallel_Mode = 'domain,follow_master_commit'
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL slave_parallel_mode='domain,follow_master_commit,transactional';
|
||||
ERROR HY000: Invalid use of 'transactional' option for slave_parallel_mode
|
||||
SET GLOBAL slave_parallel_mode='waiting,transactional,domain';
|
||||
Parallel_Mode = 'domain,transactional,waiting'
|
||||
SET GLOBAL slave_parallel_mode='domain,follow_master_commit';
|
||||
Parallel_Mode = 'domain,follow_master_commit'
|
||||
*** MDEV-6676 - test that empty parallel_mode does not replicate in parallel ***
|
||||
INSERT INTO t2 VALUES (40);
|
||||
include/save_master_gtid.inc
|
||||
SET GLOBAL slave_parallel_mode='';
|
||||
SET @old_dbug= @@GLOBAL.debug_dbug;
|
||||
SET GLOBAL debug_dbug="+d,slave_crash_if_parallel_apply";
|
||||
include/start_slave.inc
|
||||
include/sync_with_master_gtid.inc
|
||||
SELECT * FROM t2 WHERE a >= 40 ORDER BY a;
|
||||
a
|
||||
40
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL debug_dbug=@old_dbug;
|
||||
*** MDEV-6676 - test disabling domain-based parallel replication ***
|
||||
SET gtid_domain_id = 1;
|
||||
INSERT INTO t2 VALUES (41);
|
||||
INSERT INTO t2 VALUES (42);
|
||||
INSERT INTO t2 VALUES (43);
|
||||
INSERT INTO t2 VALUES (44);
|
||||
INSERT INTO t2 VALUES (45);
|
||||
INSERT INTO t2 VALUES (46);
|
||||
DELETE FROM t2 WHERE a >= 41;
|
||||
SET gtid_domain_id = 2;
|
||||
INSERT INTO t2 VALUES (41);
|
||||
INSERT INTO t2 VALUES (42);
|
||||
INSERT INTO t2 VALUES (43);
|
||||
INSERT INTO t2 VALUES (44);
|
||||
INSERT INTO t2 VALUES (45);
|
||||
INSERT INTO t2 VALUES (46);
|
||||
SET gtid_domain_id = 0;
|
||||
include/save_master_gtid.inc
|
||||
SET GLOBAL slave_parallel_mode=follow_master_commit;
|
||||
include/start_slave.inc
|
||||
include/sync_with_master_gtid.inc
|
||||
SELECT * FROM t2 WHERE a >= 40 ORDER BY a;
|
||||
a
|
||||
40
|
||||
41
|
||||
42
|
||||
43
|
||||
44
|
||||
45
|
||||
46
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL slave_parallel_mode='domain,follow_master_commit';
|
||||
include/start_slave.inc
|
||||
*** MDEV-6775: Wrong binlog order in parallel replication ***
|
||||
DELETE FROM t4;
|
||||
INSERT INTO t4 VALUES (1,NULL), (3,NULL), (4,4), (5, NULL), (6, 6);
|
||||
@@ -1028,7 +974,7 @@ SET GLOBAL slave_parallel_threads=0;
|
||||
SET GLOBAL slave_parallel_threads=10;
|
||||
include/start_slave.inc
|
||||
*** MDEV-7237: Parallel replication: incorrect relaylog position after stop/start the slave ***
|
||||
INSERT INTO t2 VALUES (50);
|
||||
INSERT INTO t2 VALUES (40);
|
||||
include/stop_slave.inc
|
||||
CHANGE MASTER TO master_use_gtid=no;
|
||||
SET @old_dbug= @@GLOBAL.debug_dbug;
|
||||
@@ -1036,41 +982,41 @@ SET GLOBAL debug_dbug="+d,rpl_parallel_scheduled_gtid_0_x_100";
|
||||
SET GLOBAL debug_dbug="+d,rpl_parallel_wait_for_done_trigger";
|
||||
SET GLOBAL slave_parallel_threads=0;
|
||||
SET GLOBAL slave_parallel_threads=10;
|
||||
INSERT INTO t2 VALUES (51);
|
||||
INSERT INTO t2 VALUES (52);
|
||||
INSERT INTO t2 VALUES (41);
|
||||
INSERT INTO t2 VALUES (42);
|
||||
SET @old_format= @@binlog_format;
|
||||
SET binlog_format= statement;
|
||||
DELETE FROM t2 WHERE a=50;
|
||||
DELETE FROM t2 WHERE a=40;
|
||||
SET binlog_format= @old_format;
|
||||
INSERT INTO t2 VALUES (53);
|
||||
INSERT INTO t2 VALUES (54);
|
||||
INSERT INTO t2 VALUES (43);
|
||||
INSERT INTO t2 VALUES (44);
|
||||
FLUSH LOGS;
|
||||
INSERT INTO t2 VALUES (55);
|
||||
INSERT INTO t2 VALUES (45);
|
||||
SET gtid_seq_no=100;
|
||||
INSERT INTO t2 VALUES (56);
|
||||
INSERT INTO t2 VALUES (46);
|
||||
BEGIN;
|
||||
SELECT * FROM t2 WHERE a=50 FOR UPDATE;
|
||||
SELECT * FROM t2 WHERE a=40 FOR UPDATE;
|
||||
a
|
||||
50
|
||||
40
|
||||
include/start_slave.inc
|
||||
SET debug_sync= 'now WAIT_FOR scheduled_gtid_0_x_100';
|
||||
STOP SLAVE;
|
||||
SET debug_sync= 'now WAIT_FOR wait_for_done_waiting';
|
||||
ROLLBACK;
|
||||
include/wait_for_slave_sql_to_stop.inc
|
||||
SELECT * FROM t2 WHERE a >= 50 ORDER BY a;
|
||||
SELECT * FROM t2 WHERE a >= 40 ORDER BY a;
|
||||
a
|
||||
51
|
||||
52
|
||||
41
|
||||
42
|
||||
include/start_slave.inc
|
||||
SELECT * FROM t2 WHERE a >= 50 ORDER BY a;
|
||||
SELECT * FROM t2 WHERE a >= 40 ORDER BY a;
|
||||
a
|
||||
51
|
||||
52
|
||||
53
|
||||
54
|
||||
55
|
||||
56
|
||||
41
|
||||
42
|
||||
43
|
||||
44
|
||||
45
|
||||
46
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL debug_dbug=@old_dbug;
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
@@ -1191,8 +1137,63 @@ SET GLOBAL debug_dbug=@old_dbug;
|
||||
SET GLOBAL slave_parallel_threads=0;
|
||||
SET GLOBAL slave_parallel_threads=10;
|
||||
include/start_slave.inc
|
||||
*** MDEV-6676 - test syntax of @@slave_parallel_mode ***
|
||||
Parallel_Mode = 'domain,follow_master_commit'
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL slave_parallel_threads=0;
|
||||
SET GLOBAL slave_parallel_mode='domain,follow_master_commit,transactional';
|
||||
ERROR HY000: Invalid use of 'transactional' option for slave_parallel_mode
|
||||
SET GLOBAL slave_parallel_mode='waiting,transactional,domain';
|
||||
Parallel_Mode = 'domain,transactional,waiting'
|
||||
SET GLOBAL slave_parallel_mode='domain,follow_master_commit';
|
||||
Parallel_Mode = 'domain,follow_master_commit'
|
||||
*** MDEV-6676 - test that empty parallel_mode does not replicate in parallel ***
|
||||
INSERT INTO t2 VALUES (1040);
|
||||
include/save_master_gtid.inc
|
||||
SET GLOBAL slave_parallel_mode='';
|
||||
SET @old_dbug= @@GLOBAL.debug_dbug;
|
||||
SET GLOBAL debug_dbug="+d,slave_crash_if_parallel_apply";
|
||||
include/start_slave.inc
|
||||
include/sync_with_master_gtid.inc
|
||||
SELECT * FROM t2 WHERE a >= 1040 ORDER BY a;
|
||||
a
|
||||
1040
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL debug_dbug=@old_dbug;
|
||||
*** MDEV-6676 - test disabling domain-based parallel replication ***
|
||||
SET gtid_domain_id = 1;
|
||||
INSERT INTO t2 VALUES (1041);
|
||||
INSERT INTO t2 VALUES (1042);
|
||||
INSERT INTO t2 VALUES (1043);
|
||||
INSERT INTO t2 VALUES (1044);
|
||||
INSERT INTO t2 VALUES (1045);
|
||||
INSERT INTO t2 VALUES (1046);
|
||||
DELETE FROM t2 WHERE a >= 1041;
|
||||
SET gtid_domain_id = 2;
|
||||
INSERT INTO t2 VALUES (1041);
|
||||
INSERT INTO t2 VALUES (1042);
|
||||
INSERT INTO t2 VALUES (1043);
|
||||
INSERT INTO t2 VALUES (1044);
|
||||
INSERT INTO t2 VALUES (1045);
|
||||
INSERT INTO t2 VALUES (1046);
|
||||
SET gtid_domain_id = 0;
|
||||
include/save_master_gtid.inc
|
||||
SET GLOBAL slave_parallel_mode=follow_master_commit;
|
||||
include/start_slave.inc
|
||||
include/sync_with_master_gtid.inc
|
||||
SELECT * FROM t2 WHERE a >= 1040 ORDER BY a;
|
||||
a
|
||||
1040
|
||||
1041
|
||||
1042
|
||||
1043
|
||||
1044
|
||||
1045
|
||||
1046
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL slave_parallel_mode='domain,follow_master_commit';
|
||||
include/start_slave.inc
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL slave_parallel_threads=@old_parallel_threads;
|
||||
include/start_slave.inc
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
DROP function foo;
|
||||
|
@@ -6,7 +6,7 @@
|
||||
# Test various aspects of parallel replication.
|
||||
|
||||
--connection server_2
|
||||
--let $old_parallel_threads=`SELECT @@GLOBAL.slave_parallel_threads`
|
||||
SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads;
|
||||
--error ER_SLAVE_MUST_STOP
|
||||
SET GLOBAL slave_parallel_threads=10;
|
||||
--source include/stop_slave.inc
|
||||
@@ -1465,71 +1465,6 @@ SET sql_slave_skip_counter= 1;
|
||||
SELECT * FROM t2 WHERE a >= 30 ORDER BY a;
|
||||
|
||||
|
||||
--echo *** MDEV-6676 - test syntax of @@slave_parallel_mode ***
|
||||
--connection server_2
|
||||
|
||||
--let $status_items= Parallel_Mode
|
||||
--source include/show_slave_status.inc
|
||||
--source include/stop_slave.inc
|
||||
--error ER_INVALID_SLAVE_PARALLEL_MODE
|
||||
SET GLOBAL slave_parallel_mode='domain,follow_master_commit,transactional';
|
||||
SET GLOBAL slave_parallel_mode='waiting,transactional,domain';
|
||||
--let $status_items= Parallel_Mode
|
||||
--source include/show_slave_status.inc
|
||||
SET GLOBAL slave_parallel_mode='domain,follow_master_commit';
|
||||
--let $status_items= Parallel_Mode
|
||||
--source include/show_slave_status.inc
|
||||
|
||||
|
||||
--echo *** MDEV-6676 - test that empty parallel_mode does not replicate in parallel ***
|
||||
--connection server_1
|
||||
INSERT INTO t2 VALUES (40);
|
||||
--source include/save_master_gtid.inc
|
||||
|
||||
--connection server_2
|
||||
SET GLOBAL slave_parallel_mode='';
|
||||
# Test that we do not use parallel apply, by injecting an unconditional
|
||||
# crash in the parallel apply code.
|
||||
SET @old_dbug= @@GLOBAL.debug_dbug;
|
||||
SET GLOBAL debug_dbug="+d,slave_crash_if_parallel_apply";
|
||||
--source include/start_slave.inc
|
||||
--source include/sync_with_master_gtid.inc
|
||||
SELECT * FROM t2 WHERE a >= 40 ORDER BY a;
|
||||
--source include/stop_slave.inc
|
||||
SET GLOBAL debug_dbug=@old_dbug;
|
||||
|
||||
|
||||
--echo *** MDEV-6676 - test disabling domain-based parallel replication ***
|
||||
--connection server_1
|
||||
# Let's do a bunch of transactions that will conflict if run out-of-order in
|
||||
# domain-based parallel replication mode.
|
||||
SET gtid_domain_id = 1;
|
||||
INSERT INTO t2 VALUES (41);
|
||||
INSERT INTO t2 VALUES (42);
|
||||
INSERT INTO t2 VALUES (43);
|
||||
INSERT INTO t2 VALUES (44);
|
||||
INSERT INTO t2 VALUES (45);
|
||||
INSERT INTO t2 VALUES (46);
|
||||
DELETE FROM t2 WHERE a >= 41;
|
||||
SET gtid_domain_id = 2;
|
||||
INSERT INTO t2 VALUES (41);
|
||||
INSERT INTO t2 VALUES (42);
|
||||
INSERT INTO t2 VALUES (43);
|
||||
INSERT INTO t2 VALUES (44);
|
||||
INSERT INTO t2 VALUES (45);
|
||||
INSERT INTO t2 VALUES (46);
|
||||
SET gtid_domain_id = 0;
|
||||
--source include/save_master_gtid.inc
|
||||
--connection server_2
|
||||
SET GLOBAL slave_parallel_mode=follow_master_commit;
|
||||
--source include/start_slave.inc
|
||||
--source include/sync_with_master_gtid.inc
|
||||
SELECT * FROM t2 WHERE a >= 40 ORDER BY a;
|
||||
--source include/stop_slave.inc
|
||||
SET GLOBAL slave_parallel_mode='domain,follow_master_commit';
|
||||
--source include/start_slave.inc
|
||||
|
||||
|
||||
--echo *** MDEV-6775: Wrong binlog order in parallel replication ***
|
||||
--connection server_1
|
||||
# A bit tricky bug to reproduce. On the master, we binlog in statement-mode
|
||||
@@ -1601,7 +1536,7 @@ SET GLOBAL slave_parallel_threads=10;
|
||||
|
||||
--echo *** MDEV-7237: Parallel replication: incorrect relaylog position after stop/start the slave ***
|
||||
--connection server_1
|
||||
INSERT INTO t2 VALUES (50);
|
||||
INSERT INTO t2 VALUES (40);
|
||||
--save_master_pos
|
||||
|
||||
--connection server_2
|
||||
@@ -1622,28 +1557,28 @@ SET GLOBAL slave_parallel_threads=10;
|
||||
|
||||
--connection server_1
|
||||
# Setup some transaction for the slave to replicate.
|
||||
INSERT INTO t2 VALUES (51);
|
||||
INSERT INTO t2 VALUES (52);
|
||||
INSERT INTO t2 VALUES (41);
|
||||
INSERT INTO t2 VALUES (42);
|
||||
# Need to log the DELETE in statement format, so we can see it in processlist.
|
||||
SET @old_format= @@binlog_format;
|
||||
SET binlog_format= statement;
|
||||
DELETE FROM t2 WHERE a=50;
|
||||
DELETE FROM t2 WHERE a=40;
|
||||
SET binlog_format= @old_format;
|
||||
INSERT INTO t2 VALUES (53);
|
||||
INSERT INTO t2 VALUES (54);
|
||||
INSERT INTO t2 VALUES (43);
|
||||
INSERT INTO t2 VALUES (44);
|
||||
# Force the slave to switch to a new relay log file.
|
||||
FLUSH LOGS;
|
||||
INSERT INTO t2 VALUES (55);
|
||||
INSERT INTO t2 VALUES (45);
|
||||
# Inject a GTID 0-1-100, which will trigger a DEBUG_SYNC signal when this
|
||||
# transaction has been fetched by a worker thread.
|
||||
SET gtid_seq_no=100;
|
||||
INSERT INTO t2 VALUES (56);
|
||||
INSERT INTO t2 VALUES (46);
|
||||
--save_master_pos
|
||||
|
||||
--connection con_temp2
|
||||
# Temporarily block the DELETE on a=40 from completing.
|
||||
BEGIN;
|
||||
SELECT * FROM t2 WHERE a=50 FOR UPDATE;
|
||||
SELECT * FROM t2 WHERE a=40 FOR UPDATE;
|
||||
|
||||
|
||||
--connection server_2
|
||||
@@ -1651,7 +1586,7 @@ SELECT * FROM t2 WHERE a=50 FOR UPDATE;
|
||||
|
||||
# Wait for a worker thread to start on the DELETE that will be blocked
|
||||
# temporarily by the SELECT FOR UPDATE.
|
||||
--let $wait_condition= SELECT count(*) > 0 FROM information_schema.processlist WHERE state='updating' and info LIKE '%DELETE FROM t2 WHERE a=50%'
|
||||
--let $wait_condition= SELECT count(*) > 0 FROM information_schema.processlist WHERE state='updating' and info LIKE '%DELETE FROM t2 WHERE a=40%'
|
||||
--source include/wait_condition.inc
|
||||
|
||||
# The DBUG injection set above will make the worker thread signal the following
|
||||
@@ -1684,13 +1619,13 @@ ROLLBACK;
|
||||
--connection server_2
|
||||
reap;
|
||||
--source include/wait_for_slave_sql_to_stop.inc
|
||||
SELECT * FROM t2 WHERE a >= 50 ORDER BY a;
|
||||
SELECT * FROM t2 WHERE a >= 40 ORDER BY a;
|
||||
# Now restart the slave. With the bug present, this would start at an
|
||||
# incorrect relay log position, causing relay log read error (or if unlucky,
|
||||
# silently skip a number of events).
|
||||
--source include/start_slave.inc
|
||||
--sync_with_master
|
||||
SELECT * FROM t2 WHERE a >= 50 ORDER BY a;
|
||||
SELECT * FROM t2 WHERE a >= 40 ORDER BY a;
|
||||
--source include/stop_slave.inc
|
||||
SET GLOBAL debug_dbug=@old_dbug;
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
@@ -1906,11 +1841,75 @@ SET GLOBAL slave_parallel_threads=0;
|
||||
SET GLOBAL slave_parallel_threads=10;
|
||||
--source include/start_slave.inc
|
||||
|
||||
--echo *** MDEV-6676 - test syntax of @@slave_parallel_mode ***
|
||||
--connection server_2
|
||||
|
||||
--let $status_items= Parallel_Mode
|
||||
--source include/show_slave_status.inc
|
||||
--source include/stop_slave.inc
|
||||
--error ER_INVALID_SLAVE_PARALLEL_MODE
|
||||
SET GLOBAL slave_parallel_mode='domain,follow_master_commit,transactional';
|
||||
SET GLOBAL slave_parallel_mode='waiting,transactional,domain';
|
||||
--let $status_items= Parallel_Mode
|
||||
--source include/show_slave_status.inc
|
||||
SET GLOBAL slave_parallel_mode='domain,follow_master_commit';
|
||||
--let $status_items= Parallel_Mode
|
||||
--source include/show_slave_status.inc
|
||||
|
||||
|
||||
--echo *** MDEV-6676 - test that empty parallel_mode does not replicate in parallel ***
|
||||
--connection server_1
|
||||
INSERT INTO t2 VALUES (1040);
|
||||
--source include/save_master_gtid.inc
|
||||
|
||||
--connection server_2
|
||||
SET GLOBAL slave_parallel_mode='';
|
||||
# Test that we do not use parallel apply, by injecting an unconditional
|
||||
# crash in the parallel apply code.
|
||||
SET @old_dbug= @@GLOBAL.debug_dbug;
|
||||
SET GLOBAL debug_dbug="+d,slave_crash_if_parallel_apply";
|
||||
--source include/start_slave.inc
|
||||
--source include/sync_with_master_gtid.inc
|
||||
SELECT * FROM t2 WHERE a >= 1040 ORDER BY a;
|
||||
--source include/stop_slave.inc
|
||||
SET GLOBAL debug_dbug=@old_dbug;
|
||||
|
||||
|
||||
--echo *** MDEV-6676 - test disabling domain-based parallel replication ***
|
||||
--connection server_1
|
||||
# Let's do a bunch of transactions that will conflict if run out-of-order in
|
||||
# domain-based parallel replication mode.
|
||||
SET gtid_domain_id = 1;
|
||||
INSERT INTO t2 VALUES (1041);
|
||||
INSERT INTO t2 VALUES (1042);
|
||||
INSERT INTO t2 VALUES (1043);
|
||||
INSERT INTO t2 VALUES (1044);
|
||||
INSERT INTO t2 VALUES (1045);
|
||||
INSERT INTO t2 VALUES (1046);
|
||||
DELETE FROM t2 WHERE a >= 1041;
|
||||
SET gtid_domain_id = 2;
|
||||
INSERT INTO t2 VALUES (1041);
|
||||
INSERT INTO t2 VALUES (1042);
|
||||
INSERT INTO t2 VALUES (1043);
|
||||
INSERT INTO t2 VALUES (1044);
|
||||
INSERT INTO t2 VALUES (1045);
|
||||
INSERT INTO t2 VALUES (1046);
|
||||
SET gtid_domain_id = 0;
|
||||
--source include/save_master_gtid.inc
|
||||
--connection server_2
|
||||
SET GLOBAL slave_parallel_mode=follow_master_commit;
|
||||
--source include/start_slave.inc
|
||||
--source include/sync_with_master_gtid.inc
|
||||
SELECT * FROM t2 WHERE a >= 1040 ORDER BY a;
|
||||
--source include/stop_slave.inc
|
||||
SET GLOBAL slave_parallel_mode='domain,follow_master_commit';
|
||||
--source include/start_slave.inc
|
||||
|
||||
|
||||
# Clean up.
|
||||
--connection server_2
|
||||
--source include/stop_slave.inc
|
||||
eval SET GLOBAL slave_parallel_threads=$old_parallel_threads;
|
||||
SET GLOBAL slave_parallel_threads=@old_parallel_threads;
|
||||
--source include/start_slave.inc
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
|
||||
|
Reference in New Issue
Block a user