diff options
author | unknown <knielsen@knielsen-hq.org> | 2013-06-21 21:23:24 +0200 |
---|---|---|
committer | unknown <knielsen@knielsen-hq.org> | 2013-06-21 21:23:24 +0200 |
commit | df66ee7fe9138745a8d5a86f61108217a6d0906f (patch) | |
tree | 319a0a6e79c33207542d809f7b1edb93c2e04d45 /mysql-test/suite/rpl | |
parent | 6e7d7f9bcd25b475b0f399d77e80eee05471cb5c (diff) | |
download | mariadb-git-df66ee7fe9138745a8d5a86f61108217a6d0906f.tar.gz |
MDEV-4692: mysql.gtid_slave_pos accumulates values for a domain
When we load the slave state from the mysql.gtid_slave_pos at server start, we
need to load all the rows into the in-memory hash, not just the most recent
one in each replication domain. Otherwise we accumulate cruft in the form of
old rows each time the server restarts.
Diffstat (limited to 'mysql-test/suite/rpl')
-rw-r--r-- | mysql-test/suite/rpl/r/rpl_gtid_stop_start.result | 21 | ||||
-rw-r--r-- | mysql-test/suite/rpl/t/rpl_gtid_stop_start.test | 43 |
2 files changed, 64 insertions, 0 deletions
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_stop_start.result b/mysql-test/suite/rpl/r/rpl_gtid_stop_start.result index a00bad38378..6d607ff0277 100644 --- a/mysql-test/suite/rpl/r/rpl_gtid_stop_start.result +++ b/mysql-test/suite/rpl/r/rpl_gtid_stop_start.result @@ -134,5 +134,26 @@ SET sql_log_bin= 0; ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM; SET sql_log_bin= 1; include/start_slave.inc +INSERT INTO t1 VALUES (10); +include/stop_slave.inc +CHANGE MASTER TO master_use_gtid= slave_pos; +include/start_slave.inc +*** MDEV-4692: mysql.gtid_slave_pos accumulates values for a domain *** +SELECT domain_id, COUNT(*) FROM mysql.gtid_slave_pos GROUP BY domain_id; +domain_id COUNT(*) +0 2 +1 2 +INSERT INTO t1 VALUES (11); +SELECT domain_id, COUNT(*) FROM mysql.gtid_slave_pos GROUP BY domain_id; +domain_id COUNT(*) +0 2 +1 2 +include/start_slave.inc +INSERT INTO t1 VALUES (12); +INSERT INTO t1 VALUES (13); +SELECT domain_id, COUNT(*) FROM mysql.gtid_slave_pos GROUP BY domain_id; +domain_id COUNT(*) +0 2 +1 2 DROP TABLE t1; include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test b/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test index d4642381ca8..fda310db0da 100644 --- a/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test +++ b/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test @@ -229,6 +229,49 @@ ALTER TABLE mysql.gtid_slave_pos ENGINE=MyISAM; SET sql_log_bin= 1; --source include/start_slave.inc +--connection server_1 +INSERT INTO t1 VALUES (10); +--save_master_pos + +--connection server_2 +--sync_with_master +--source include/stop_slave.inc +CHANGE MASTER TO master_use_gtid= slave_pos; +--source include/start_slave.inc + +--echo *** MDEV-4692: mysql.gtid_slave_pos accumulates values for a domain *** +SELECT domain_id, COUNT(*) FROM mysql.gtid_slave_pos GROUP BY domain_id; + +--connection server_1 +INSERT INTO t1 VALUES (11); +--save_master_pos + +--connection server_2 +--sync_with_master +SELECT domain_id, COUNT(*) FROM mysql.gtid_slave_pos GROUP BY domain_id; + +--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: +EOF +--enable_reconnect +--source include/wait_until_connected_again.inc +--source include/start_slave.inc + +--connection server_1 +INSERT INTO t1 VALUES (12); +INSERT INTO t1 VALUES (13); +--save_master_pos + +--connection server_2 +--sync_with_master +SELECT domain_id, COUNT(*) FROM mysql.gtid_slave_pos GROUP BY domain_id; + --connection server_1 DROP TABLE t1; |