mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-4605: Failing to load GTID slave position from rpl.gtid_slave_pos
There were several cases where the slave GTID position was not loaded correctly before being used. This caused various failures such as corrupting the position at slave start and empty values of @@gtid_slave_pos and @@gtid_current_pos. Fixed by adding more checks for loaded position, and by always loading the position at server startup.
This commit is contained in:
@ -50,5 +50,15 @@ a
|
||||
3
|
||||
4
|
||||
5
|
||||
*** Test that @@gtid_slave_pos and @@gtid_current_pos are correctly loaded even if slave threads have not started. ***
|
||||
SET @slave_pos2= @@GLOBAL.gtid_slave_pos;
|
||||
SET @current_pos2= @@GLOBAL.gtid_current_pos;
|
||||
SELECT IF(@slave_pos1=@slave_pos2, "OK", CONCAT(@slave_pos1, " != ", @slave_pos2));
|
||||
IF(@slave_pos1=@slave_pos2, "OK", CONCAT(@slave_pos1, " != ", @slave_pos2))
|
||||
OK
|
||||
SELECT IF(@current_pos1=@current_pos2, "OK", CONCAT(@current_pos1, " != ", @current_pos2));
|
||||
IF(@current_pos1=@current_pos2, "OK", CONCAT(@current_pos1, " != ", @current_pos2))
|
||||
OK
|
||||
include/start_slave.inc
|
||||
DROP TABLE t1;
|
||||
include/rpl_end.inc
|
||||
|
@ -93,6 +93,31 @@ INSERT INTO t1 VALUES(5);
|
||||
--source include/wait_condition.inc
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
|
||||
--echo *** Test that @@gtid_slave_pos and @@gtid_current_pos are correctly loaded even if slave threads have not started. ***
|
||||
--let $slave_pos1= `SELECT @@GLOBAL.gtid_slave_pos`
|
||||
--let $current_pos1= `SELECT @@GLOBAL.gtid_current_pos`
|
||||
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
|
||||
wait
|
||||
EOF
|
||||
--shutdown_server 30
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
|
||||
restart: --skip-slave-start=1 --skip-log-bin
|
||||
EOF
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
--disable_query_log
|
||||
eval SET @slave_pos1= "$slave_pos1";
|
||||
eval SET @current_pos1= "$current_pos1";
|
||||
--enable_query_log
|
||||
SET @slave_pos2= @@GLOBAL.gtid_slave_pos;
|
||||
SET @current_pos2= @@GLOBAL.gtid_current_pos;
|
||||
SELECT IF(@slave_pos1=@slave_pos2, "OK", CONCAT(@slave_pos1, " != ", @slave_pos2));
|
||||
SELECT IF(@current_pos1=@current_pos2, "OK", CONCAT(@current_pos1, " != ", @current_pos2));
|
||||
--source include/start_slave.inc
|
||||
|
||||
|
||||
--connection server_1
|
||||
DROP TABLE t1;
|
||||
|
Reference in New Issue
Block a user