[MDEV-4117] @@global.relay_log_purge not per-master, conflicts between different masters in multisource replication Created: 2013-01-30  Updated: 2014-01-14  Resolved: 2014-01-14

Status: Closed
Project: MariaDB Server
Component/s: None
Affects Version/s: 10.0.0
Fix Version/s: 10.0.8

Type: Bug Priority: Major
Reporter: Kristian Nielsen Assignee: Michael Widenius
Resolution: Fixed Votes: 0
Labels: None


 Description   

CHANGE MASTER sets @@global.relay_log_purge true or false as needed depending
on whether RELAY_LOG_FILE and/or RELAY_LOG_POS is used in the command.

However, with multi-source, this is changed globally, not per-master. This
means that one CHANGE MASTER command can overwrite the value for
another. Thus, we may purge relay logs needed by a different master
connection, or leave dangling relay logs for one that does not need them.

It seems that @@global.relay_log_purge needs to become a per-master-connection
value.

The following test case demonstrates this; mtr will warn that the global
relay_log_purge value changed even though we manipulated only the 'abc' master connection.

--source include/not_embedded.inc
--source include/have_innodb.inc
--error ER_RELAY_LOG_INIT
change master 'abc' to relay_log_file='';



 Comments   
Comment by Michael Widenius [ 2014-01-14 ]

There is no reason to change relay_log_purge as part of CHANGE MASTER.
This is an unwanted side effect that in all like hood the DB didn't want.

I will fix is so that in 10.0 CHANGE MASTER does not change the global variable RELAY_LOG_PURGE anymore. This will fix this issue.

Comment by Michael Widenius [ 2014-01-14 ]

Fix: Don't change relay_log_purge when doing CHANGE MASTER

Generated at Thu Feb 08 06:53:52 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.