Commit 1532f120 authored by Jan Lindström's avatar Jan Lindström Committed by Julius Goryavsky

MDEV-33898 : Galera test failure on galera.MW-369

Tests using MW-369.inc sometimes hanged after
signaling two debug sync points inside a Galera
library. Replaced Galera library sync point
with server code sync point when possible and
added more wait_conditions to make sure we are
in correct state.

Tests effected: MW-369, MW-402, MDEV-27276, and
mysql-wsrep#332.
Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
parent 288ea9e1
...@@ -19,6 +19,4 @@ galera_as_slave_replay : MDEV-32780 galera_as_slave_replay: assertion in the wsr ...@@ -19,6 +19,4 @@ galera_as_slave_replay : MDEV-32780 galera_as_slave_replay: assertion in the wsr
galera_slave_replay : MDEV-32780 galera_as_slave_replay: assertion in the wsrep::transaction::before_rollback() galera_slave_replay : MDEV-32780 galera_as_slave_replay: assertion in the wsrep::transaction::before_rollback()
galera_sst_mysqldump_with_key : MDEV-32782 galera_sst_mysqldump_with_key test failed galera_sst_mysqldump_with_key : MDEV-32782 galera_sst_mysqldump_with_key test failed
galera_var_ignore_apply_errors : MENT-1997 galera_var_ignore_apply_errors test freezes galera_var_ignore_apply_errors : MENT-1997 galera_var_ignore_apply_errors test freezes
MDEV-22232 : temporarily disabled at the request of Codership
MW-402 : temporarily disabled at the request of Codership
galera_desync_overlapped : MDEV-21538 galera_desync_overlapped MTR failed: Result content mismatch galera_desync_overlapped : MDEV-21538 galera_desync_overlapped MTR failed: Result content mismatch
...@@ -21,6 +21,7 @@ wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#gale ...@@ -21,6 +21,7 @@ wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#gale
wsrep_node_address='127.0.0.1:@mysqld.1.#galera_port' wsrep_node_address='127.0.0.1:@mysqld.1.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port wsrep_node_incoming_address=127.0.0.1:@mysqld.1.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port' wsrep_sst_receive_address='127.0.0.1:@mysqld.1.#sst_port'
auto-increment-offset=1
[mysqld.2] [mysqld.2]
wsrep-on=1 wsrep-on=1
...@@ -32,6 +33,7 @@ wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#gale ...@@ -32,6 +33,7 @@ wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#gale
wsrep_node_address='127.0.0.1:@mysqld.2.#galera_port' wsrep_node_address='127.0.0.1:@mysqld.2.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port wsrep_node_incoming_address=127.0.0.1:@mysqld.2.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port' wsrep_sst_receive_address='127.0.0.1:@mysqld.2.#sst_port'
auto-increment-offset=2
[mysqld.3] [mysqld.3]
wsrep-on=1 wsrep-on=1
...@@ -43,6 +45,7 @@ wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#gale ...@@ -43,6 +45,7 @@ wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#gale
wsrep_node_address='127.0.0.1:@mysqld.3.#galera_port' wsrep_node_address='127.0.0.1:@mysqld.3.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.3.port wsrep_node_incoming_address=127.0.0.1:@mysqld.3.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.3.#sst_port' wsrep_sst_receive_address='127.0.0.1:@mysqld.3.#sst_port'
auto-increment-offset=3
[mysqld.4] [mysqld.4]
wsrep-on=1 wsrep-on=1
...@@ -54,6 +57,7 @@ wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.4.#gale ...@@ -54,6 +57,7 @@ wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.4.#gale
wsrep_node_address='127.0.0.1:@mysqld.4.#galera_port' wsrep_node_address='127.0.0.1:@mysqld.4.#galera_port'
wsrep_node_incoming_address=127.0.0.1:@mysqld.4.port wsrep_node_incoming_address=127.0.0.1:@mysqld.4.port
wsrep_sst_receive_address='127.0.0.1:@mysqld.4.#sst_port' wsrep_sst_receive_address='127.0.0.1:@mysqld.4.#sst_port'
auto-increment-offset=4
[ENV] [ENV]
NODE_MYPORT_1= @mysqld.1.port NODE_MYPORT_1= @mysqld.1.port
......
...@@ -16,17 +16,15 @@ connection node_1a; ...@@ -16,17 +16,15 @@ connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 0;
SET SESSION wsrep_on = 1; SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug='; SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0;
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync';
SET GLOBAL wsrep_provider_options = 'dbug='; SET GLOBAL wsrep_provider_options = 'dbug=';
connection node_1; connection node_1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
connection node_1a;
SET SESSION DEBUG_SYNC = "RESET";
connection node_2; connection node_2;
SELECT * FROM p; SELECT * FROM p;
id f2 id f2
......
...@@ -12,22 +12,20 @@ START TRANSACTION; ...@@ -12,22 +12,20 @@ START TRANSACTION;
DELETE FROM p WHERE f1 = 1; DELETE FROM p WHERE f1 = 1;
connection node_1a; connection node_1a;
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_2; connection node_2;
INSERT INTO c VALUES (1, 1); INSERT INTO c VALUES (1, 1);
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
SET SESSION wsrep_on = 1; SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL DEBUG_DBUG = "";
SET GLOBAL wsrep_provider_options = 'dbug='; SET DEBUG_SYNC = 'RESET';
connection node_1; connection node_1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
connection node_2; connection node_2;
...@@ -54,22 +52,20 @@ START TRANSACTION; ...@@ -54,22 +52,20 @@ START TRANSACTION;
UPDATE p SET f2 = 1 WHERE f1 = 1; UPDATE p SET f2 = 1 WHERE f1 = 1;
connection node_1a; connection node_1a;
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_2; connection node_2;
UPDATE c SET f2 = 1 WHERE f1 = 1; UPDATE c SET f2 = 1 WHERE f1 = 1;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
SET SESSION wsrep_on = 1; SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL DEBUG_DBUG = "";
SET GLOBAL wsrep_provider_options = 'dbug='; SET DEBUG_SYNC = 'RESET';
connection node_1; connection node_1;
connection node_2; connection node_2;
SELECT * FROM p; SELECT * FROM p;
...@@ -94,22 +90,20 @@ START TRANSACTION; ...@@ -94,22 +90,20 @@ START TRANSACTION;
UPDATE p SET f2 = 1 WHERE f1 = 1; UPDATE p SET f2 = 1 WHERE f1 = 1;
connection node_1a; connection node_1a;
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_2; connection node_2;
DELETE FROM c WHERE f1 = 1; DELETE FROM c WHERE f1 = 1;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
SET SESSION wsrep_on = 1; SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL DEBUG_DBUG = "";
SET GLOBAL wsrep_provider_options = 'dbug='; SET DEBUG_SYNC = 'RESET';
connection node_1; connection node_1;
connection node_2; connection node_2;
SELECT * FROM p; SELECT * FROM p;
...@@ -130,22 +124,20 @@ START TRANSACTION; ...@@ -130,22 +124,20 @@ START TRANSACTION;
UPDATE p SET f2 = 1 WHERE f1 = 1; UPDATE p SET f2 = 1 WHERE f1 = 1;
connection node_1a; connection node_1a;
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_2; connection node_2;
INSERT INTO c VALUES (1, 0);; INSERT INTO c VALUES (1, 0);;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
SET SESSION wsrep_on = 1; SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL DEBUG_DBUG = "";
SET GLOBAL wsrep_provider_options = 'dbug='; SET DEBUG_SYNC = 'RESET';
connection node_1; connection node_1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
connection node_2; connection node_2;
...@@ -170,22 +162,20 @@ START TRANSACTION; ...@@ -170,22 +162,20 @@ START TRANSACTION;
DELETE FROM p WHERE f1 = 1; DELETE FROM p WHERE f1 = 1;
connection node_1a; connection node_1a;
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_2; connection node_2;
UPDATE c SET f2 = 1 WHERE f1 = 1; UPDATE c SET f2 = 1 WHERE f1 = 1;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
SET SESSION wsrep_on = 1; SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL DEBUG_DBUG = "";
SET GLOBAL wsrep_provider_options = 'dbug='; SET DEBUG_SYNC = 'RESET';
connection node_1; connection node_1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
connection node_2; connection node_2;
...@@ -215,22 +205,20 @@ START TRANSACTION; ...@@ -215,22 +205,20 @@ START TRANSACTION;
INSERT INTO cf (f1, p_id) VALUES (10, 1); INSERT INTO cf (f1, p_id) VALUES (10, 1);
connection node_1a; connection node_1a;
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_2; connection node_2;
INSERT INTO cf (f1, p_id) VALUES (20, 1); INSERT INTO cf (f1, p_id) VALUES (20, 1);
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
SET SESSION wsrep_on = 1; SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL DEBUG_DBUG = "";
SET GLOBAL wsrep_provider_options = 'dbug='; SET DEBUG_SYNC = 'RESET';
connection node_1; connection node_1;
connection node_2; connection node_2;
SELECT * FROM pf; SELECT * FROM pf;
...@@ -255,22 +243,20 @@ START TRANSACTION; ...@@ -255,22 +243,20 @@ START TRANSACTION;
UPDATE pg SET f2 = 1 WHERE f1 = 1; UPDATE pg SET f2 = 1 WHERE f1 = 1;
connection node_1a; connection node_1a;
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_2; connection node_2;
INSERT INTO cg VALUES (1, 1, 0); INSERT INTO cg VALUES (1, 1, 0);
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
SET SESSION wsrep_on = 1; SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL DEBUG_DBUG = "";
SET GLOBAL wsrep_provider_options = 'dbug='; SET DEBUG_SYNC = 'RESET';
connection node_1; connection node_1;
connection node_2; connection node_2;
SELECT * FROM pg; SELECT * FROM pg;
......
...@@ -15,22 +15,20 @@ START TRANSACTION; ...@@ -15,22 +15,20 @@ START TRANSACTION;
UPDATE c SET f2=1 where f1=1; UPDATE c SET f2=1 where f1=1;
connection node_1a; connection node_1a;
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_2; connection node_2;
DELETE FROM p WHERE f1 = 1; DELETE FROM p WHERE f1 = 1;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
SET SESSION wsrep_on = 1; SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL DEBUG_DBUG = "";
SET GLOBAL wsrep_provider_options = 'dbug='; SET DEBUG_SYNC = 'RESET';
connection node_1; connection node_1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
connection node_2; connection node_2;
...@@ -55,22 +53,20 @@ START TRANSACTION; ...@@ -55,22 +53,20 @@ START TRANSACTION;
UPDATE c SET f2=2 where f1=1; UPDATE c SET f2=2 where f1=1;
connection node_1a; connection node_1a;
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_2; connection node_2;
UPDATE p set f1=11 WHERE f1 = 1; UPDATE p set f1=11 WHERE f1 = 1;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
SET SESSION wsrep_on = 1; SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL DEBUG_DBUG = "";
SET GLOBAL wsrep_provider_options = 'dbug='; SET DEBUG_SYNC = 'RESET';
connection node_1; connection node_1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
connection node_2; connection node_2;
...@@ -97,22 +93,20 @@ START TRANSACTION; ...@@ -97,22 +93,20 @@ START TRANSACTION;
UPDATE c SET p_id=2 where f1=1; UPDATE c SET p_id=2 where f1=1;
connection node_1a; connection node_1a;
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_2; connection node_2;
UPDATE p set f1=11 WHERE f1 = 1; UPDATE p set f1=11 WHERE f1 = 1;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
SET SESSION wsrep_on = 1; SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL DEBUG_DBUG = "";
SET GLOBAL wsrep_provider_options = 'dbug='; SET DEBUG_SYNC = 'RESET';
connection node_1; connection node_1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
connection node_2; connection node_2;
...@@ -130,22 +124,20 @@ START TRANSACTION; ...@@ -130,22 +124,20 @@ START TRANSACTION;
UPDATE p set f1=21 WHERE f1 = 11; UPDATE p set f1=21 WHERE f1 = 11;
connection node_1a; connection node_1a;
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_2; connection node_2;
UPDATE c SET p_id=2 where f1=1; UPDATE c SET p_id=2 where f1=1;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
SET SESSION wsrep_on = 1; SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL DEBUG_DBUG = "";
SET GLOBAL wsrep_provider_options = 'dbug='; SET DEBUG_SYNC = 'RESET';
connection node_1; connection node_1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
connection node_2; connection node_2;
...@@ -176,22 +168,20 @@ START TRANSACTION; ...@@ -176,22 +168,20 @@ START TRANSACTION;
UPDATE p2 SET f2=2 where f1=1; UPDATE p2 SET f2=2 where f1=1;
connection node_1a; connection node_1a;
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_2; connection node_2;
DELETE FROM p1 WHERE f1 = 1; DELETE FROM p1 WHERE f1 = 1;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
SET SESSION wsrep_on = 1; SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL DEBUG_DBUG = "";
SET GLOBAL wsrep_provider_options = 'dbug='; SET DEBUG_SYNC = 'RESET';
connection node_1; connection node_1;
connection node_2; connection node_2;
SELECT * FROM p1; SELECT * FROM p1;
...@@ -223,22 +213,20 @@ START TRANSACTION; ...@@ -223,22 +213,20 @@ START TRANSACTION;
DELETE FROM p2 WHERE f1=1; DELETE FROM p2 WHERE f1=1;
connection node_1a; connection node_1a;
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync'; SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_2; connection node_2;
DELETE FROM p1 WHERE f1=1; DELETE FROM p1 WHERE f1=1;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
SET SESSION wsrep_on = 1; SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync'; SET GLOBAL DEBUG_DBUG = "";
SET GLOBAL wsrep_provider_options = 'dbug='; SET DEBUG_SYNC = 'RESET';
connection node_1; connection node_1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
connection node_2; connection node_2;
......
...@@ -21,14 +21,10 @@ connection node_1a; ...@@ -21,14 +21,10 @@ connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 0;
SET SESSION wsrep_on = 1; SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug='; SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0;
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync';
SET GLOBAL wsrep_provider_options = 'dbug='; SET GLOBAL wsrep_provider_options = 'dbug=';
connection node_1; connection node_1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
...@@ -64,14 +60,10 @@ connection node_1a; ...@@ -64,14 +60,10 @@ connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 0;
SET SESSION wsrep_on = 1; SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug='; SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0;
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync';
SET GLOBAL wsrep_provider_options = 'dbug='; SET GLOBAL wsrep_provider_options = 'dbug=';
connection node_1; connection node_1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
...@@ -112,14 +104,10 @@ connection node_1a; ...@@ -112,14 +104,10 @@ connection node_1a;
SET SESSION wsrep_on = 0; SET SESSION wsrep_on = 0;
SET SESSION wsrep_on = 1; SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug='; SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,local_monitor_master_enter_sync';
connection node_1; connection node_1;
COMMIT; COMMIT;
connection node_1a; connection node_1a;
SET SESSION wsrep_on = 0;
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync'; SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync';
SET GLOBAL wsrep_provider_options = 'signal=local_monitor_master_enter_sync';
SET GLOBAL wsrep_provider_options = 'dbug='; SET GLOBAL wsrep_provider_options = 'dbug=';
connection node_1; connection node_1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
# We use concurrency facility of test MW-369 to setup the conflict between DDL and DML # We use concurrency facility of test MW-369 to setup the conflict between DDL and DML
# #
# Open connection node_1a here, MW-369.inc will use it later # Open connection node_1a here, we will use it later
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
# create FK parent table # create FK parent table
...@@ -28,14 +28,51 @@ CREATE TABLE p (id INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; ...@@ -28,14 +28,51 @@ CREATE TABLE p (id INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB;
--let $mw_369_parent_query = INSERT INTO p VALUES(1,0) --let $mw_369_parent_query = INSERT INTO p VALUES(1,0)
--let $mw_369_child_query = CREATE TABLE c(id INT NOT NULL PRIMARY KEY, p_id INT, FOREIGN KEY (p_id) REFERENCES p(id) ON DELETE CASCADE) ENGINE=InnoDB --let $mw_369_child_query = CREATE TABLE c(id INT NOT NULL PRIMARY KEY, p_id INT, FOREIGN KEY (p_id) REFERENCES p(id) ON DELETE CASCADE) ENGINE=InnoDB
# execute above queries through separate nodes --connection node_1
--source MW-369.inc SET AUTOCOMMIT=ON;
START TRANSACTION;
--eval $mw_369_parent_query
#
# Block the $mw_369_child_query from node_2
#
# --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
--connection node_1a
SET SESSION wsrep_sync_wait = 0;
--let $galera_sync_point = apply_monitor_slave_enter_sync
--source include/galera_set_sync_point.inc
#
# insert client row, which will make it impossible to replay the
# delete on parent
#
--connection node_2
--eval $mw_369_child_query
#
# Wait until $mw_369_child_query from node_2 reaches the sync point and
# block the 'COMMIT' from node_1 before it certifies.
#
--connection node_1a
--source include/galera_wait_sync_point.inc
--source include/galera_clear_sync_point.inc
--connection node_1
--send COMMIT
--connection node_1a
--let $galera_sync_point = apply_monitor_slave_enter_sync
--source include/galera_signal_sync_point.inc
--source include/galera_clear_sync_point.inc
# Expect certification failure # Expect certification failure
--connection node_1 --connection node_1
--error ER_LOCK_DEADLOCK --error ER_LOCK_DEADLOCK
--reap --reap
--connection node_1a
SET SESSION DEBUG_SYNC = "RESET";
--connection node_2 --connection node_2
SELECT * FROM p; SELECT * FROM p;
SELECT * FROM c; SELECT * FROM c;
......
...@@ -12,9 +12,9 @@ ...@@ -12,9 +12,9 @@
# START TRANSACTION; # START TRANSACTION;
# $mw_369_parent_query # $mw_369_parent_query
# node_2 # node_2
# $mw_369_child_query - will be blocked on node_1 in apply monitor # $mw_369_child_query - will be blocked on node_1 in wsrep_apply_cb
# node_1: # node_1:
# COMMIT; - will be blocked on node_1 in local monitor # COMMIT; - will be blocked on node_1 in wsrep_after_certification
# #
# The $mw_369_child_query is always expected to succeed. The caller is # The $mw_369_child_query is always expected to succeed. The caller is
# responsible for checking if the final COMMIT on connection node_1 # responsible for checking if the final COMMIT on connection node_1
...@@ -32,8 +32,7 @@ START TRANSACTION; ...@@ -32,8 +32,7 @@ START TRANSACTION;
# --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 # --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
--connection node_1a --connection node_1a
SET SESSION wsrep_sync_wait = 0; SET SESSION wsrep_sync_wait = 0;
--let $galera_sync_point = apply_monitor_slave_enter_sync SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
--source include/galera_set_sync_point.inc
# #
# insert client row, which will make it impossible to replay the # insert client row, which will make it impossible to replay the
...@@ -47,28 +46,37 @@ SET SESSION wsrep_sync_wait = 0; ...@@ -47,28 +46,37 @@ SET SESSION wsrep_sync_wait = 0;
# block the 'COMMIT' from node_1 before it certifies. # block the 'COMMIT' from node_1 before it certifies.
# #
--connection node_1a --connection node_1a
--source include/galera_wait_sync_point.inc SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
--source include/galera_clear_sync_point.inc
--let $galera_sync_point = local_monitor_master_enter_sync
--source include/galera_set_sync_point.inc
--connection node_1 --connection node_1
SET DEBUG_SYNC = "wsrep_after_certification SIGNAL after_certification_reached WAIT_FOR continue_after_certification";
--send COMMIT --send COMMIT
# #
# Wait until both sync points have been reached # Wait until both sync points have been reached
# #
--connection node_1a --connection node_1a
--let $galera_sync_point = apply_monitor_slave_enter_sync local_monitor_master_enter_sync SET SESSION DEBUG_SYNC = "now WAIT_FOR after_certification_reached";
--source include/galera_wait_sync_point.inc
# #
# both threads are now parked in sync points, signal them to continue # both threads are now parked in sync points, signal them to continue
# #
--let $galera_sync_point = apply_monitor_slave_enter_sync
--source include/galera_signal_sync_point.inc
--let $galera_sync_point = local_monitor_master_enter_sync --let $wait_condition = SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'debug sync point:%'
--source include/galera_signal_sync_point.inc --let $wait_condition_on_error_output = SELECT STATE FROM INFORMATION_SCHEMA.PROCESSLIST
--source include/galera_clear_sync_point.inc --source include/wait_condition_with_debug.inc
SET DEBUG_SYNC = 'now SIGNAL continue_after_certification';
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'debug sync point:%'
--let $wait_condition_on_error_output = SELECT STATE FROM INFORMATION_SCHEMA.PROCESSLIST
--source include/wait_condition_with_debug.inc
SET DEBUG_SYNC = 'now SIGNAL signal.wsrep_apply_cb';
--let $wait_condition = SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE STATE LIKE 'debug sync point:%'
--let $wait_condition_on_error_output = SELECT STATE FROM INFORMATION_SCHEMA.PROCESSLIST
--source include/wait_condition_with_debug.inc
SET GLOBAL DEBUG_DBUG = "";
SET DEBUG_SYNC = 'RESET';
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
--source include/galera_cluster.inc --source include/galera_cluster.inc
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/have_debug_sync.inc --source include/have_debug_sync.inc
--source include/galera_have_debug_sync.inc
CREATE TABLE p (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; CREATE TABLE p (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB;
CREATE TABLE c (f1 INTEGER PRIMARY KEY, p_id INTEGER, CREATE TABLE c (f1 INTEGER PRIMARY KEY, p_id INTEGER,
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
--source include/have_debug_sync.inc --source include/have_debug_sync.inc
--source include/galera_have_debug_sync.inc --source include/galera_have_debug_sync.inc
# Open connection node_1a here, MW-369.inc will use it later # Open connection node_1a here, will use it later
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
# #
...@@ -27,7 +27,42 @@ INSERT INTO c VALUES (2, 2); ...@@ -27,7 +27,42 @@ INSERT INTO c VALUES (2, 2);
--let $mw_369_parent_query = UPDATE p SET f1 = f1 + 100 --let $mw_369_parent_query = UPDATE p SET f1 = f1 + 100
--let $mw_369_child_query = ALTER TABLE c ADD FOREIGN KEY (p_id) REFERENCES p(f1) --let $mw_369_child_query = ALTER TABLE c ADD FOREIGN KEY (p_id) REFERENCES p(f1)
--source MW-369.inc --connection node_1
SET AUTOCOMMIT=ON;
START TRANSACTION;
--eval $mw_369_parent_query
#
# Block the $mw_369_child_query from node_2
#
# --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
--connection node_1a
SET SESSION wsrep_sync_wait = 0;
--let $galera_sync_point = apply_monitor_slave_enter_sync
--source include/galera_set_sync_point.inc
#
# insert client row, which will make it impossible to replay the
# delete on parent
#
--connection node_2
--eval $mw_369_child_query
#
# Wait until $mw_369_child_query from node_2 reaches the sync point and
# block the 'COMMIT' from node_1 before it certifies.
#
--connection node_1a
--source include/galera_wait_sync_point.inc
--source include/galera_clear_sync_point.inc
--connection node_1
--send COMMIT
--connection node_1a
--let $galera_sync_point = apply_monitor_slave_enter_sync
--source include/galera_signal_sync_point.inc
--source include/galera_clear_sync_point.inc
# Expect certification failure # Expect certification failure
--connection node_1 --connection node_1
...@@ -62,7 +97,42 @@ INSERT INTO c VALUES (2, 2, 2); ...@@ -62,7 +97,42 @@ INSERT INTO c VALUES (2, 2, 2);
--let $mw_369_parent_query = UPDATE p1 SET f1 = f1 + 100 --let $mw_369_parent_query = UPDATE p1 SET f1 = f1 + 100
--let $mw_369_child_query = ALTER TABLE c ADD FOREIGN KEY (p_id1) REFERENCES p1(f1), ADD FOREIGN KEY (p_id2) REFERENCES p2(f1) --let $mw_369_child_query = ALTER TABLE c ADD FOREIGN KEY (p_id1) REFERENCES p1(f1), ADD FOREIGN KEY (p_id2) REFERENCES p2(f1)
--source MW-369.inc --connection node_1
SET AUTOCOMMIT=ON;
START TRANSACTION;
--eval $mw_369_parent_query
#
# Block the $mw_369_child_query from node_2
#
# --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
--connection node_1a
SET SESSION wsrep_sync_wait = 0;
--let $galera_sync_point = apply_monitor_slave_enter_sync
--source include/galera_set_sync_point.inc
#
# insert client row, which will make it impossible to replay the
# delete on parent
#
--connection node_2
--eval $mw_369_child_query
#
# Wait until $mw_369_child_query from node_2 reaches the sync point and
# block the 'COMMIT' from node_1 before it certifies.
#
--connection node_1a
--source include/galera_wait_sync_point.inc
--source include/galera_clear_sync_point.inc
--connection node_1
--send COMMIT
--connection node_1a
--let $galera_sync_point = apply_monitor_slave_enter_sync
--source include/galera_signal_sync_point.inc
--source include/galera_clear_sync_point.inc
# Expect certification failure # Expect certification failure
--connection node_1 --connection node_1
...@@ -96,7 +166,42 @@ INSERT INTO c VALUES (2, 2, 2); ...@@ -96,7 +166,42 @@ INSERT INTO c VALUES (2, 2, 2);
--let $mw_369_parent_query = UPDATE p2 SET f1 = f1 + 100 --let $mw_369_parent_query = UPDATE p2 SET f1 = f1 + 100
--let $mw_369_child_query = ALTER TABLE c ADD FOREIGN KEY (p_id1) REFERENCES p1(f1), ADD FOREIGN KEY (p_id2) REFERENCES p2(f1) --let $mw_369_child_query = ALTER TABLE c ADD FOREIGN KEY (p_id1) REFERENCES p1(f1), ADD FOREIGN KEY (p_id2) REFERENCES p2(f1)
--source MW-369.inc --connection node_1
SET AUTOCOMMIT=ON;
START TRANSACTION;
--eval $mw_369_parent_query
#
# Block the $mw_369_child_query from node_2
#
# --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
--connection node_1a
SET SESSION wsrep_sync_wait = 0;
--let $galera_sync_point = apply_monitor_slave_enter_sync
--source include/galera_set_sync_point.inc
#
# insert client row, which will make it impossible to replay the
# delete on parent
#
--connection node_2
--eval $mw_369_child_query
#
# Wait until $mw_369_child_query from node_2 reaches the sync point and
# block the 'COMMIT' from node_1 before it certifies.
#
--connection node_1a
--source include/galera_wait_sync_point.inc
--source include/galera_clear_sync_point.inc
--connection node_1
--send COMMIT
--connection node_1a
--let $galera_sync_point = apply_monitor_slave_enter_sync
--source include/galera_signal_sync_point.inc
--source include/galera_clear_sync_point.inc
# Expect certification failure # Expect certification failure
--connection node_1 --connection node_1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment