--source include/galera_cluster.inc --source include/have_innodb.inc --source include/have_debug.inc --source include/have_debug_sync.inc --source include/big_test.inc CREATE TABLE t1 ( f1 INT, f2 VARCHAR(255) PRIMARY KEY ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO t1 VALUES(1, 'abc'); --connection node_1 SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES (2,'def'); --connection node_2 SET GLOBAL event_scheduler=ON; DELIMITER |; CREATE PROCEDURE update_table() BEGIN SET AUTOCOMMIT=OFF; DO GET_LOCK('local_lock', 0); SET DEBUG_SYNC = 'innodb_row_update_for_mysql_begin SIGNAL blocked WAIT_FOR continue'; UPDATE t1 SET f2 = 'jkl' WHERE f1 != 2; DO RELEASE_LOCK('local_lock'); END| DELIMITER ;| CREATE DEFINER=current_user EVENT event ON SCHEDULE AT CURRENT_TIMESTAMP ON COMPLETION PRESERVE ENABLE DO CALL update_table(); --connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2 SET DEBUG_SYNC = 'now WAIT_FOR blocked'; # Applier control thread --connect node_2b, 127.0.0.1, root, , test, $NODE_MYPORT_2 SET GLOBAL debug_dbug = "+d,sync.wsrep_apply_cb"; --connection node_1 COMMIT; # Applier control thread --connection node_2b SET DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached"; SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb"; --connection node_2a SET DEBUG_SYNC = 'now SIGNAL continue'; --connection node_2 SET GLOBAL event_scheduler=default; DROP PROCEDURE update_table; DROP EVENT event; SET DEBUG_SYNC='reset'; SET GLOBAL debug_dbug = DEFAULT; --connection node_1 DROP TABLE t1;