CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) ENGINE=innodb; INSERT INTO t1 VALUES("default"); SELECT variable_value INTO @commits FROM information_schema.global_status WHERE variable_name = 'binlog_commits'; SELECT variable_value INTO @group_commits FROM information_schema.global_status WHERE variable_name = 'binlog_group_commits'; connect con1,localhost,root,,; connect con2,localhost,root,,; connect con3,localhost,root,,; connect con4,localhost,root,,; connect con5,localhost,root,,; connect con6,localhost,root,,; connection con1; SET DEBUG_SYNC= "commit_before_get_LOCK_after_binlog_sync SIGNAL group1_running WAIT_FOR group2_queued"; INSERT INTO t1 VALUES ("con1"); connection con2; set DEBUG_SYNC= "now WAIT_FOR group1_running"; SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL group2_con2"; SET DEBUG_SYNC= "commit_before_get_LOCK_after_binlog_sync SIGNAL group2_running"; SET DEBUG_SYNC= "commit_after_release_LOCK_log WAIT_FOR group3_committed"; INSERT INTO t1 VALUES ("con2"); connection con3; SET DEBUG_SYNC= "now WAIT_FOR group2_con2"; SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL group2_con3"; INSERT INTO t1 VALUES ("con3"); connection con4; SET DEBUG_SYNC= "now WAIT_FOR group2_con3"; SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL group2_con4"; SET DEBUG_SYNC= "commit_after_group_run_commit_ordered SIGNAL group2_visible WAIT_FOR group2_checked"; INSERT INTO t1 VALUES ("con4"); connection default; SET DEBUG_SYNC= "now WAIT_FOR group2_con4"; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SELECT * FROM t1 ORDER BY a; a default SET DEBUG_SYNC= "now SIGNAL group2_queued"; connection con1; connection default; SELECT * FROM t1 ORDER BY a; a con1 default connection con5; SET DEBUG_SYNC= "commit_before_get_LOCK_after_binlog_sync SIGNAL group3_con5"; SET DEBUG_SYNC= "commit_after_get_LOCK_log SIGNAL con5_leader WAIT_FOR con6_queued"; set DEBUG_SYNC= "now WAIT_FOR group2_running"; INSERT INTO t1 VALUES ("con5"); connection con6; SET DEBUG_SYNC= "now WAIT_FOR con5_leader"; SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL con6_queued"; INSERT INTO t1 VALUES ("con6"); connection default; SET DEBUG_SYNC= "now WAIT_FOR group3_con5"; SELECT * FROM t1 ORDER BY a; a con1 default SET DEBUG_SYNC= "now SIGNAL group3_committed"; SET DEBUG_SYNC= "now WAIT_FOR group2_visible"; SELECT * FROM t1 ORDER BY a; a con1 con2 con3 con4 default SET DEBUG_SYNC= "now SIGNAL group2_checked"; connection con2; connection con3; connection con4; connection con5; connection con6; connection default; SELECT * FROM t1 ORDER BY a; a con1 con2 con3 con4 con5 con6 default SELECT variable_value - @commits FROM information_schema.global_status WHERE variable_name = 'binlog_commits'; variable_value - @commits 6 SELECT variable_value - @group_commits FROM information_schema.global_status WHERE variable_name = 'binlog_group_commits'; variable_value - @group_commits 3 SET DEBUG_SYNC= 'RESET'; DROP TABLE t1;