mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
416f267a7a
The problem is that the binlog position is updated before Executed_log_entries and Slave_SQL_State. So, it's possible to hit the moment when MASTER_POS_WAIT (and hence sync_with_master) already returned success, but Slave_SQL_State and Executed_log_entries were not modified yet. Fixing it by adding a wait on the expected Executed_log_entries value.
81 lines
2.2 KiB
Text
81 lines
2.2 KiB
Text
#
|
|
# Simple multi-master test
|
|
#
|
|
|
|
--source include/not_embedded.inc
|
|
--let $rpl_server_count= 0
|
|
|
|
--connect (slave,127.0.0.1,root,,,$SERVER_MYPORT_3)
|
|
--connect (master1,127.0.0.1,root,,,$SERVER_MYPORT_1)
|
|
--connect (master2,127.0.0.1,root,,,$SERVER_MYPORT_2)
|
|
--connection slave
|
|
|
|
--replace_result $SERVER_MYPORT_1 MYPORT_1
|
|
eval change master 'slave1' to master_port=$SERVER_MYPORT_1, master_host='127.0.0.1', master_user='root';
|
|
--replace_result $SERVER_MYPORT_2 MYPORT_2
|
|
eval change master 'slave2' to master_port=$SERVER_MYPORT_2, master_host='127.0.0.1', master_user='root';
|
|
start slave 'slave1';
|
|
set default_master_connection = 'slave1';
|
|
--source include/wait_for_slave_to_start.inc
|
|
set default_master_connection = 'slave2';
|
|
start all slaves;
|
|
|
|
--source include/wait_for_slave_to_start.inc
|
|
set default_master_connection = '';
|
|
|
|
# Ensure that all data is in the relay log
|
|
--connection master1
|
|
--save_master_pos
|
|
--connection slave
|
|
--sync_with_master 0,'slave1'
|
|
--connection master2
|
|
--save_master_pos
|
|
--connection slave
|
|
--sync_with_master 0,'slave2'
|
|
|
|
# MDEV-7074 (Sporadic test failure due to a race condition)
|
|
let $show_statement = SHOW ALL SLAVES STATUS;
|
|
let $field = Executed_log_entries;
|
|
let $condition = = 7;
|
|
let $wait_for_all = 1;
|
|
--source include/wait_show_condition.inc
|
|
|
|
--replace_result $SERVER_MYPORT_1 MYPORT_1 $SERVER_MYPORT_2 MYPORT_2
|
|
show all slaves status;
|
|
|
|
# Ensure that start all slaves doesn't do anything as all slaves are started
|
|
start all slaves;
|
|
|
|
stop slave 'slave1';
|
|
|
|
--replace_result $SERVER_MYPORT_1 MYPORT_1 $SERVER_MYPORT_2 MYPORT_2
|
|
query_vertical show slave 'slave1' status;
|
|
|
|
reset slave 'slave1';
|
|
--replace_result $SERVER_MYPORT_1 MYPORT_1 $SERVER_MYPORT_2 MYPORT_2
|
|
show all slaves status;
|
|
|
|
reset slave 'slave1' all;
|
|
--replace_result $SERVER_MYPORT_1 MYPORT_1 $SERVER_MYPORT_2 MYPORT_2
|
|
show all slaves status;
|
|
|
|
stop all slaves;
|
|
--replace_result $SERVER_MYPORT_1 MYPORT_1 $SERVER_MYPORT_2 MYPORT_2
|
|
show all slaves status;
|
|
|
|
# Ensure that start all slaves doesn't do anything as all slaves are stopped
|
|
stop all slaves;
|
|
|
|
#
|
|
# clean up
|
|
#
|
|
|
|
--source reset_master_slave.inc
|
|
--disconnect slave
|
|
--connection master1
|
|
--source reset_master_slave.inc
|
|
--disconnect master1
|
|
--connection master2
|
|
--source reset_master_slave.inc
|
|
--disconnect master2
|
|
|