Skip to content

Commit 983a6d9

Browse files
committed
WL#7374 Performance schema tables to monitor replication lags and queue
This worklog implements the monitoring of replication lags using the replication P_S tables. The new monitoring information added consists of the GTID, the original and the immediate commit timestamps of the transaction that is currently being processed (plus the corresponding start processing timestamp) and of the last to be processed (plus the corresponding start and end processing timestamps) in each of these three tables: - performance_schema.replication_connection status - performance_schema.replication_applier_status_by_coordinator - performance_schema.replication_applier_status_by_worker All timestamp fields in these three tables have microseconds precision, including last_error_timestamp and last_heartbeat_timestamp. The field 'last_seen_transaction' in table performance_schema.replication_applier_status_by_worker was replaced by 'applying_transaction' and 'last_applied_transaction'.
1 parent be8d2a1 commit 983a6d9

File tree

74 files changed

+3030
-326
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+3030
-326
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
# This file is used by rpl.rpl_perfschema_applier_status_by_worker_gtid_skipped_transaction
2+
# and rpl.rpl_perfschema_applier_status_by_worker_gtid_skipped_transaction_mts
3+
#
4+
# Run some transactions on master and apply them on slave. Collect the last
5+
# applied GTID.
6+
# Then run a transaction on master and a transaction on slave, both with the
7+
# same GTID, so that the master's transaction is skipped on slave.
8+
# Check that the master's GTID does not show in LAST_APPLIED_TRANSACTION.
9+
# Also, check that *ing_transaction is cleared in the two (mts, three) tables.
10+
#
11+
# param: $is_mts [0,1] 1 if MTS test
12+
13+
14+
# replicate some transactions to slave
15+
CREATE TABLE t (a int);
16+
DROP TABLE t;
17+
--source include/sync_slave_sql_with_master.inc
18+
19+
--let $last_processed_gtid_before= query_get_value(select LAST_PROCESSED_TRANSACTION from performance_schema.replication_applier_status_by_coordinator, LAST_PROCESSED_TRANSACTION, 1)
20+
--let $last_applied_gtid_before= query_get_value(select LAST_APPLIED_TRANSACTION from performance_schema.replication_applier_status_by_worker, LAST_APPLIED_TRANSACTION, 1)
21+
22+
--source include/stop_slave_sql.inc
23+
24+
--source include/rpl_connection_master.inc
25+
--let $current_gtid= aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa:20
26+
--disable_query_log
27+
eval SET SESSION GTID_NEXT= '$current_gtid';
28+
--enable_query_log
29+
30+
CREATE TABLE t1 (a int);
31+
32+
--source include/rpl_connection_slave.inc
33+
--disable_query_log
34+
eval SET @@SESSION.GTID_NEXT= '$current_gtid';
35+
--enable_query_log
36+
CREATE TABLE t2 (a int);
37+
38+
SET @@SESSION.GTID_NEXT= 'AUTOMATIC';
39+
--source include/start_slave_sql.inc
40+
41+
--source include/rpl_connection_master.inc
42+
--source include/sync_slave_sql_with_master.inc
43+
44+
45+
--let $queueing_gtid_= query_get_value(SELECT QUEUEING_TRANSACTION FROM performance_schema.replication_connection_status, QUEUEING_TRANSACTION, 1)
46+
--let $assert_text= queueing_gtid was cleared after the gtid skipped transactions
47+
--let $assert_cond= "$queueing_gtid" = ""
48+
--source include/assert.inc
49+
50+
if ($is_mts)
51+
{
52+
--let $processing_gtid_= query_get_value(SELECT PROCESSING_TRANSACTION FROM performance_schema.replication_applier_status_by_coordinator, PROCESSING_TRANSACTION, 1)
53+
--let $assert_text= processing_gtid was cleared after the gtid skipped transactions
54+
--let $assert_cond= "$processing_gtid" = ""
55+
--source include/assert.inc
56+
}
57+
58+
--let $applying_gtid= query_get_value(SELECT APPLYING_TRANSACTION FROM performance_schema.replication_applier_status_by_worker, APPLYING_TRANSACTION, 1)
59+
--let $assert_text= applying_gtid was cleared after the gtid skipped transactions
60+
--let $assert_cond= "$applying_gtid" = ""
61+
--source include/assert.inc
62+
63+
--let $last_queued_gtid= query_get_value(SELECT LAST_QUEUED_TRANSACTION FROM performance_schema.replication_connection_status, LAST_QUEUED_TRANSACTION, 1)
64+
--let $assert_text= Assert that the last_queued_gtid is the same as the skipped transaction
65+
--let $assert_cond= "$last_queued_gtid" = "$current_gtid"
66+
--source include/assert.inc
67+
68+
if ( $is_mts )
69+
{
70+
--let $last_processed_gtid_= query_get_value(SELECT LAST_PROCESSED_TRANSACTION FROM performance_schema.replication_applier_status_by_coordinator, LAST_PROCESSED_TRANSACTION, 1)
71+
--let $assert_text= Assert the the last_processed_gtid is clear after the slave skipped the transaction
72+
--let $assert_cond= "$last_processed_gtid" = ""
73+
--source include/assert.inc
74+
75+
--let $last_applied_gtid= query_get_value(SELECT LAST_APPLIED_TRANSACTION FROM performance_schema.replication_applier_status_by_worker, LAST_APPLIED_TRANSACTION, 1)
76+
--let $assert_text= Assert that the last_applied_gtid is clear after the slave skipped the transaction
77+
--let $assert_cond= "$last_applied_gtid" = ""
78+
--source include/assert.inc
79+
}
80+
81+
if ( !$is_mts)
82+
{
83+
--let $last_applied_gtid= query_get_value(SELECT LAST_APPLIED_TRANSACTION FROM performance_schema.replication_applier_status_by_worker, LAST_APPLIED_TRANSACTION, 1)
84+
--let $assert_text= Assert that the last_applied_gtid is kept after the slave skipped the transaction
85+
--let $assert_cond= "$last_applied_gtid" = "$last_applied_gtid_before"
86+
--source include/assert.inc
87+
}
88+
89+
90+
# cleanup
91+
DROP TABLE t2;
92+
--source include/rpl_connection_master.inc
93+
SET SQL_LOG_BIN= 0;
94+
SET @@SESSION.GTID_NEXT= 'AUTOMATIC';
95+
DROP TABLE t1;
96+
SET SQL_LOG_BIN= 1;
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# This file is used by rpl.rpl_perfschema_applier_status_by_worker_slave_skip_counter
2+
# and rpl.rpl_perfschema_applier_status_by_worker_slave_skip_counter_mts
3+
#
4+
# Stop the slave to set the slave_skip_counter to 4 events (two transactions).
5+
# Run the transactions on the master and sync the slave with the master.
6+
# Check that the last_queued_transaction shows the skipped transactions.
7+
# If mts is enabled, check that the slave's ps coordinator table also doesn't
8+
# show any queued transactions.
9+
# Check that the slave's ps worker table does not show any transaction applied.
10+
# Also check that the *ing_transaction was cleared in the two (mts, three)
11+
# tables.
12+
#
13+
# param: $is_mts [0,1] 1 if MTS test
14+
15+
16+
--source include/rpl_connection_slave.inc
17+
--source include/stop_slave_sql.inc
18+
SET GLOBAL sql_slave_skip_counter= 4;
19+
20+
--source include/rpl_connection_master.inc
21+
CREATE TABLE t1 (a int);
22+
DROP TABLE t1;
23+
24+
--source include/rpl_connection_slave.inc
25+
--source include/start_slave_sql.inc
26+
--source include/rpl_connection_master.inc
27+
--source include/sync_slave_sql_with_master.inc
28+
29+
--let $queueing_gtid_= query_get_value(SELECT QUEUEING_TRANSACTION FROM performance_schema.replication_connection_status, QUEUEING_TRANSACTION, 1)
30+
--let $assert_text= queueing_gtid was cleared after the gtid skipped transactions
31+
--let $assert_cond= "$queueing_gtid" = ""
32+
--source include/assert.inc
33+
34+
if ($is_mts)
35+
{
36+
--let $processing_gtid_= query_get_value(SELECT PROCESSING_TRANSACTION FROM performance_schema.replication_applier_status_by_coordinator, PROCESSING_TRANSACTION, 1)
37+
--let $assert_text= processing_gtid was cleared after the gtid skipped transactions
38+
--let $assert_cond= "$processing_gtid" = ""
39+
--source include/assert.inc
40+
}
41+
42+
--let $applying_gtid= query_get_value(SELECT APPLYING_TRANSACTION FROM performance_schema.replication_applier_status_by_worker, APPLYING_TRANSACTION, 1)
43+
--let $assert_text= applying_gtid was cleared after the gtid skipped transactions
44+
--let $assert_cond= "$applying_gtid" = ""
45+
--source include/assert.inc
46+
47+
--let $last_gtid= query_get_value(SELECT LAST_QUEUED_TRANSACTION FROM performance_schema.replication_connection_status, LAST_QUEUED_TRANSACTION, 1)
48+
--let $assert_text= Assert that the queued gtid is not clear even after the slave skipped the two transactions
49+
--let $assert_cond= "$last_gtid" != ""
50+
--source include/assert.inc
51+
52+
if ( $is_mts )
53+
{
54+
--let $last_gtid= query_get_value(SELECT LAST_PROCESSED_TRANSACTION FROM performance_schema.replication_applier_status_by_coordinator, LAST_PROCESSED_TRANSACTION, 1)
55+
--let $assert_text= Assert that the coordinator last_processed gtid is clear after the slave skipped the two transactions
56+
--let $assert_cond= "$last_gtid" = ""
57+
--source include/assert.inc
58+
}
59+
60+
--let $last_gtid= query_get_value(SELECT LAST_APPLIED_TRANSACTION FROM performance_schema.replication_applier_status_by_worker, LAST_APPLIED_TRANSACTION, 1)
61+
--let $assert_text= Assert that the applied gtid is clear after the slave skipped the two transactions
62+
--let $assert_cond= "$last_gtid" = ""
63+
--source include/assert.inc
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# This file is used by extra/rpl_tests/rpl_ps_connection_applier_status.inc
2+
#
3+
# It checks that the monitoring info associated with a GTID event is correctly
4+
# reported in each of the corresponding replication P_S tables.
5+
#
6+
# params: $current_gtid the gtid that is currently being processed
7+
# $last_gtid the gtid that was last processed
8+
# $is_mts [0,1] 1 if MTS test
9+
10+
--source include/rpl_connection_slave.inc
11+
--let $debug_point= rpl_ps_tables_queue
12+
--source include/add_debug_point.inc
13+
--source include/start_slave_io.inc
14+
15+
--let $table= performance_schema.replication_connection_status
16+
--let $now_handling_gtid_column= QUEUEING_TRANSACTION
17+
--let $now_handling_OCT_column= QUEUEING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
18+
--let $now_handling_ICT_column= QUEUEING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
19+
--let $now_handling_start_column= QUEUEING_TRANSACTION_START_QUEUE_TIMESTAMP
20+
--let $last_handled_gtid_column= LAST_QUEUED_TRANSACTION
21+
--let $last_handled_OCT_column= LAST_QUEUED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
22+
--let $last_handled_ICT_column= LAST_QUEUED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
23+
--let $last_handled_start_column= LAST_QUEUED_TRANSACTION_START_QUEUE_TIMESTAMP
24+
--let $last_handled_end_column= LAST_QUEUED_TRANSACTION_END_QUEUE_TIMESTAMP
25+
--let $debug_sync_1= 'now WAIT_FOR signal.rpl_ps_tables_queue_before'
26+
--let $debug_sync_2= 'now SIGNAL signal.rpl_ps_tables_queue_finish'
27+
--let $debug_sync_3= 'now WAIT_FOR signal.rpl_ps_tables_queue_after_finish'
28+
--let $debug_sync_4= 'now SIGNAL signal.rpl_ps_tables_queue_continue'
29+
--let $now_handling_action= queueing
30+
--let $last_handled_action= queued
31+
--let $is_first_check= 1
32+
--source extra/rpl_tests/rpl_check_ps_connection_applier_status_tables_asserts.inc
33+
34+
if ($is_mts)
35+
{
36+
--let $table= performance_schema.replication_applier_status_by_coordinator
37+
--let $now_handling_gtid_column= PROCESSING_TRANSACTION
38+
--let $now_handling_OCT_column= PROCESSING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
39+
--let $now_handling_ICT_column= PROCESSING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
40+
--let $now_handling_start_column= PROCESSING_TRANSACTION_START_BUFFER_TIMESTAMP
41+
--let $last_handled_gtid_column= LAST_PROCESSED_TRANSACTION
42+
--let $last_handled_OCT_column= LAST_PROCESSED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
43+
--let $last_handled_ICT_column= LAST_PROCESSED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
44+
--let $last_handled_start_column= LAST_PROCESSED_TRANSACTION_START_BUFFER_TIMESTAMP
45+
--let $last_handled_end_column= LAST_PROCESSED_TRANSACTION_END_BUFFER_TIMESTAMP
46+
--let $debug_sync_1= 'now WAIT_FOR signal.rpl_ps_tables_process_before'
47+
--let $debug_sync_2= 'now SIGNAL signal.rpl_ps_tables_process_finish'
48+
--let $debug_sync_3= 'now WAIT_FOR signal.rpl_ps_tables_process_after_finish'
49+
--let $debug_sync_4= 'now SIGNAL signal.rpl_ps_tables_process_continue'
50+
--let $now_handling_action= processing
51+
--let $last_handled_action= processed
52+
--let $is_first_check= 0
53+
--source extra/rpl_tests/rpl_check_ps_connection_applier_status_tables_asserts.inc
54+
}
55+
56+
if ($is_first_stmt)
57+
{
58+
--let $last_gtid= $last_gtid_applied
59+
}
60+
--let $table= performance_schema.replication_applier_status_by_worker
61+
--let $now_handling_gtid_column= APPLYING_TRANSACTION
62+
--let $now_handling_OCT_column= APPLYING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
63+
--let $now_handling_ICT_column= APPLYING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
64+
--let $now_handling_start_column= APPLYING_TRANSACTION_START_APPLY_TIMESTAMP
65+
--let $last_handled_gtid_column= LAST_APPLIED_TRANSACTION
66+
--let $last_handled_OCT_column= LAST_APPLIED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP
67+
--let $last_handled_ICT_column= LAST_APPLIED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP
68+
--let $last_handled_start_column= LAST_APPLIED_TRANSACTION_START_APPLY_TIMESTAMP
69+
--let $last_handled_end_column= LAST_APPLIED_TRANSACTION_END_APPLY_TIMESTAMP
70+
--let $debug_sync_1= 'now WAIT_FOR signal.rpl_ps_tables_apply_before'
71+
--let $debug_sync_2= 'now SIGNAL signal.rpl_ps_tables_apply_finish'
72+
--let $debug_sync_3= 'now WAIT_FOR signal.rpl_ps_tables_apply_after_finish'
73+
--let $debug_sync_4= 'now SIGNAL signal.rpl_ps_tables_apply_continue'
74+
--let $now_handling_action= applying
75+
--let $last_handled_action= applied
76+
--let $is_first_check= 0
77+
--source extra/rpl_tests/rpl_check_ps_connection_applier_status_tables_asserts.inc
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# This file is used by extra/rpl_tests/rpl_check_ps_connection_applier_status_tables.inc
2+
#
3+
# Using debug points to track the execution flow of a transaction in the slave,
4+
# this file asserts that the new columns in the queried tables have the
5+
# expected values.
6+
#
7+
# params: $current_gtid the gtid that is currently being processed
8+
# $last_gtid the gtid that was last processed
9+
# $debug_sync_[1-4] the names of the four debug sync points
10+
# $is_first_check 1 if is first table to be queried
11+
# $table table to be queried
12+
# $now_handling_gtid_column name of the column for now handling GTID
13+
# $now_handling_OCT_column name of the column for now handling OCT
14+
# $now_handling_ICT_column name of the column for now handling ICT
15+
# $now_handling_start_column name of the column for now handling start
16+
# $last_handled_gtid_column name of column for last handled GTID
17+
# $last_handled_OCT_column name of column for last handled OCT
18+
# $last_handled_ICT_column name of column for last handled ICT
19+
# $last_handled_start_column name of column for last handled start
20+
# $last_handled_end_column name of column for last handled end
21+
# $now_handling_action trx action this table refers to
22+
# $last_handled_action trx action this table refers to
23+
# $is_first_stmt 1 is this is the first statement of the
24+
# test
25+
26+
eval SET debug_sync= $debug_sync_1;
27+
if ($is_first_check)
28+
{
29+
--source include/remove_debug_point.inc
30+
}
31+
32+
--let $now_handling_before_gtid= query_get_value(SELECT $now_handling_gtid_column FROM $table, $now_handling_gtid_column, 1)
33+
--let $now_handling_before_OCT= query_get_value(SELECT $now_handling_OCT_column FROM $table, $now_handling_OCT_column, 1)
34+
--let $now_handling_before_ICT= query_get_value(SELECT $now_handling_ICT_column FROM $table, $now_handling_ICT_column, 1)
35+
--let $now_handling_before_start= query_get_value(SELECT $now_handling_start_column FROM $table, $now_handling_start_column, 1)
36+
--let $last_handled_before_gtid= query_get_value(SELECT $last_handled_gtid_column FROM $table, $last_handled_gtid_column, 1)
37+
eval SET debug_sync= $debug_sync_2;
38+
39+
eval SET debug_sync= $debug_sync_3;
40+
--let $now_handling_after_gtid= query_get_value(SELECT $now_handling_gtid_column FROM $table, $now_handling_gtid_column, 1)
41+
--let $now_handling_after_OCT= query_get_value(SELECT $now_handling_OCT_column FROM $table, $now_handling_OCT_column, 1)
42+
--let $now_handling_after_ICT= query_get_value(SELECT $now_handling_ICT_column FROM $table, $now_handling_ICT_column, 1)
43+
--let $now_handling_after_start= query_get_value(SELECT $now_handling_start_column FROM $table, $now_handling_start_column, 1)
44+
--let $last_handled_after_gtid= query_get_value(SELECT $last_handled_gtid_column FROM $table, $last_handled_gtid_column, 1)
45+
--let $last_handled_after_OCT= query_get_value(SELECT $last_handled_OCT_column FROM $table, $last_handled_OCT_column, 1)
46+
--let $last_handled_after_ICT= query_get_value(SELECT $last_handled_ICT_column FROM $table, $last_handled_ICT_column, 1)
47+
--let $last_handled_after_start= query_get_value(SELECT $last_handled_start_column FROM $table, $last_handled_start_column, 1)
48+
--let $last_handled_after_end= query_get_value(SELECT $last_handled_end_column FROM $table, $last_handled_end_column, 1)
49+
eval SET debug_sync= $debug_sync_4;
50+
51+
--let $assert_text= Assert that the currently $now_handling_action gtid is equal to current_gtid
52+
--let $assert_cond= "$now_handling_before_gtid" = "$current_gtid"
53+
--source include/assert.inc
54+
55+
--let $assert_text= Assert that the last $last_handled_action gtid is equal to last_gtid
56+
--let $assert_cond= "$last_handled_before_gtid" = "$last_gtid"
57+
--source include/assert.inc
58+
59+
--let $assert_text= Assert that currently $now_handling_action gtid was cleared
60+
--let $assert_cond= "$now_handling_after_gtid" = ""
61+
--source include/assert.inc
62+
63+
--let $assert_text= Assert that currently $now_handling_action OCT was cleared
64+
--let $assert_cond= "$now_handling_after_OCT" = "0000-00-00 00:00:00.000000"
65+
--source include/assert.inc
66+
67+
--let $assert_text= Assert that currently $now_handling_action ICT was cleared
68+
--let $assert_cond= "$now_handling_after_ICT" = "0000-00-00 00:00:00.000000"
69+
--source include/assert.inc
70+
71+
--let $assert_text= Assert that currently $now_handling_action start was cleared
72+
--let $assert_cond= "$now_handling_after_start" = "0000-00-00 00:00:00.000000"
73+
--source include/assert.inc
74+
75+
--let $assert_text= Assert that the last $last_handled_action gtid is equal to current_gtid
76+
--let $assert_cond= "$last_handled_after_gtid" = "$current_gtid"
77+
--source include/assert.inc
78+
79+
--let $assert_text= Assert that currently $now_handling_action OCT exists
80+
--let $assert_cond= "$now_handling_before_OCT" != "0000-00-00 00:00:00.000000"
81+
--source include/assert.inc
82+
83+
--let $assert_text= Assert that currently $now_handling_action ICT exists
84+
--let $assert_cond= "$now_handling_before_ICT" != "0000-00-00 00:00:00.000000"
85+
--source include/assert.inc
86+
87+
--let $assert_text= Assert that currently $now_handling_action start_time exists
88+
--let $assert_cond= "$now_handling_before_start" != "0000-00-00 00:00:00.000000"
89+
--source include/assert.inc
90+
91+
--let $assert_text= Assert that the OCT of the last $last_handled_action and currently $now_handling_action is the same
92+
--let $assert_cond= "$now_handling_before_OCT" = "$last_handled_after_OCT"
93+
--source include/assert.inc
94+
95+
--let $assert_text= Assert that the ICT of the last $last_handled_action and currently $now_handling_action is the same
96+
--let $assert_cond= "$now_handling_before_ICT" = "$last_handled_after_ICT"
97+
--source include/assert.inc
98+
99+
--let $assert_text= Assert that the start time of the last $last_handled_action and currently $now_handling_action is the same
100+
--let $assert_cond= "$now_handling_before_start" = "$last_handled_after_start"
101+
--source include/assert.inc
102+
103+
--let $unix_ts_end= `SELECT UNIX_TIMESTAMP('$last_handled_after_end')`
104+
--let $unix_ts_start= `SELECT UNIX_TIMESTAMP('$last_handled_after_start')`
105+
--let $assert_text= Assert that the end time of the last $last_handled_action is greater than the start time
106+
--let $assert_cond= $unix_ts_end - $unix_ts_start > 0
107+
--source include/assert.inc
108+

mysql-test/extra/rpl_tests/rpl_gtids_restart_slave_io_lost_trx.test

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
# IO thread right after queuing an event of a given type, starting the IO
1111
# thread again to fully retrieve the partially received transaction.
1212
#
13+
####
14+
# param: $using_mts 1 if the test is running with multi-threaded slave
15+
1316

1417
# As this test depends on the use of a User_var_log_event in a DML statement
1518
# we have to use statement based replication.
@@ -87,6 +90,20 @@ while ($i <= 5)
8790
SET GLOBAL DEBUG= @save_debug;
8891

8992
--source include/start_slave_io.inc
93+
94+
if ($i == 2)
95+
{
96+
if ($using_mts == 1)
97+
{
98+
--source include/rpl_connection_master.inc
99+
--source include/sync_slave_sql_with_master.inc
100+
--let $applied_trxs_gtid= query_get_value(SELECT COUNT(LAST_APPLIED_TRANSACTION) FROM performance_schema.replication_applier_status_by_worker WHERE CHAR_LENGTH(LAST_APPLIED_TRANSACTION) > 0, COUNT(LAST_APPLIED_TRANSACTION), 1)
101+
--let $assert_text= Assert that the monitoring recorded the transaction applied by only one worker
102+
--let $assert_cond= "$applied_trxs_gtid" = 1
103+
--source include/assert.inc
104+
}
105+
}
106+
90107
if ($i == 3)
91108
{
92109
--source include/start_slave_sql.inc

0 commit comments

Comments
 (0)