1CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) ENGINE=innodb; 2SELECT variable_value INTO @commits FROM information_schema.global_status 3WHERE variable_name = 'binlog_commits'; 4SELECT variable_value INTO @group_commits FROM information_schema.global_status 5WHERE variable_name = 'binlog_group_commits'; 6connect con1,localhost,root,,; 7connect con2,localhost,root,,; 8connect con3,localhost,root,,; 9connect con4,localhost,root,,; 10connect con5,localhost,root,,; 11connect con6,localhost,root,,; 12connection con1; 13SET DEBUG_SYNC= "commit_before_get_LOCK_after_binlog_sync SIGNAL group1_running WAIT_FOR group2_queued"; 14INSERT INTO t1 VALUES ("con1"); 15connection con2; 16set DEBUG_SYNC= "now WAIT_FOR group1_running"; 17SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL group2_con2"; 18SET DEBUG_SYNC= "commit_before_get_LOCK_after_binlog_sync SIGNAL group2_running"; 19SET DEBUG_SYNC= "commit_after_release_LOCK_log WAIT_FOR group3_committed"; 20SET DEBUG_SYNC= "commit_after_group_run_commit_ordered SIGNAL group2_visible WAIT_FOR group2_checked"; 21INSERT INTO t1 VALUES ("con2"); 22connection con3; 23SET DEBUG_SYNC= "now WAIT_FOR group2_con2"; 24SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL group2_con3"; 25INSERT INTO t1 VALUES ("con3"); 26connection con4; 27SET DEBUG_SYNC= "now WAIT_FOR group2_con3"; 28SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL group2_con4"; 29INSERT INTO t1 VALUES ("con4"); 30connection default; 31SET DEBUG_SYNC= "now WAIT_FOR group2_con4"; 32SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; 33SELECT * FROM t1 ORDER BY a; 34a 35SET DEBUG_SYNC= "now SIGNAL group2_queued"; 36connection con1; 37connection default; 38SELECT * FROM t1 ORDER BY a; 39a 40con1 41connection con5; 42SET DEBUG_SYNC= "commit_before_get_LOCK_after_binlog_sync SIGNAL group3_con5"; 43SET DEBUG_SYNC= "commit_after_get_LOCK_log SIGNAL con5_leader WAIT_FOR con6_queued"; 44set DEBUG_SYNC= "now WAIT_FOR group2_running"; 45INSERT INTO t1 VALUES ("con5"); 46connection con6; 47SET DEBUG_SYNC= "now WAIT_FOR con5_leader"; 48SET DEBUG_SYNC= "commit_after_prepare_ordered SIGNAL con6_queued"; 49INSERT INTO t1 VALUES ("con6"); 50connection default; 51SET DEBUG_SYNC= "now WAIT_FOR group3_con5"; 52SELECT * FROM t1 ORDER BY a; 53a 54con1 55SET DEBUG_SYNC= "now SIGNAL group3_committed"; 56SET DEBUG_SYNC= "now WAIT_FOR group2_visible"; 57SELECT * FROM t1 ORDER BY a; 58a 59con1 60con2 61con3 62con4 63SET DEBUG_SYNC= "now SIGNAL group2_checked"; 64connection con2; 65connection con3; 66connection con4; 67connection con5; 68connection con6; 69connection default; 70SELECT * FROM t1 ORDER BY a; 71a 72con1 73con2 74con3 75con4 76con5 77con6 78SELECT variable_value - @commits FROM information_schema.global_status 79WHERE variable_name = 'binlog_commits'; 80variable_value - @commits 816 82SELECT variable_value - @group_commits FROM information_schema.global_status 83WHERE variable_name = 'binlog_group_commits'; 84variable_value - @group_commits 853 86SET DEBUG_SYNC= 'RESET'; 87DROP TABLE t1; 88