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