sporadic failures of rpl.rpl_rewrite_db_sys_vars

first stop the slave, then run commands on the master that are
supposed to fail on the slave, then start the slave.

if you swap first two steps, the slave might get and execute those
commands before it's stopped, which will fail the test.

also, improve debugability
This commit is contained in:
Sergei Golubchik 2024-04-22 21:02:11 +02:00
commit f243c73788
2 changed files with 13 additions and 30 deletions

View file

@ -12,11 +12,9 @@ select @@session.server_id;
create database replica_db1;
create database y;
create database test_replica;
SELECT @@GLOBAL.replicate_rewrite_db;
@@GLOBAL.replicate_rewrite_db
primary_db1->replica_db1,x->y
# Ensuring SHOW SLAVE STATUS produces correct value for Replicate_Rewrite_DB...
# ...success
SELECT @@GLOBAL.replicate_rewrite_db, 'primary_db1->replica_db1,x->y' as 'Replicate_Rewrite_DB from SHOW SLAVE STATUS';
@@GLOBAL.replicate_rewrite_db Replicate_Rewrite_DB from SHOW SLAVE STATUS
primary_db1->replica_db1,x->y primary_db1->replica_db1,x->y
# Create DBs and tables on primary
connection master;
create database primary_db1;
@ -60,15 +58,13 @@ SELECT @@GLOBAL.replicate_rewrite_db;
@@GLOBAL.replicate_rewrite_db
primary_db1->replica_db1,x->y
SET @@GLOBAL.replicate_rewrite_db="test_master->test_replica";
SELECT @@GLOBAL.replicate_rewrite_db;
@@GLOBAL.replicate_rewrite_db
test_master->test_replica
SHOW DATABASES like 'test_replica';
Database (test_replica)
test_replica
include/start_slave.inc
# Ensuring SHOW SLAVE STATUS produces correct value for Replicate_Rewrite_DB...
# ...success
SELECT @@GLOBAL.replicate_rewrite_db, 'test_master->test_replica' as 'Replicate_Rewrite_DB from SHOW SLAVE STATUS';
@@GLOBAL.replicate_rewrite_db Replicate_Rewrite_DB from SHOW SLAVE STATUS
test_master->test_replica test_master->test_replica
# Create DB and tables on primary
connection master;
create database test_master;
@ -94,6 +90,8 @@ t
3
include/diff_tables.inc [master:test_master.my_table,slave:test_replica.my_table]
# Update of values on primary for DB not set in replication_rewrite_db
include/stop_slave.inc
include/reset_slave.inc
connection master;
use x;
insert into my_table values (314);
@ -104,8 +102,6 @@ t
314
include/save_master_gtid.inc
connection slave;
include/stop_slave.inc
include/reset_slave.inc
include/start_slave.inc
SELECT @@GLOBAL.replicate_rewrite_db;
@@GLOBAL.replicate_rewrite_db

View file

@ -19,15 +19,8 @@ create database replica_db1;
create database y;
# This DB will be rewrited from test case
create database test_replica;
SELECT @@GLOBAL.replicate_rewrite_db;
let $rewrite_db_sss= query_get_value(SHOW SLAVE STATUS, Replicate_Rewrite_DB, 1);
--echo # Ensuring SHOW SLAVE STATUS produces correct value for Replicate_Rewrite_DB...
if (`SELECT strcmp(@@global.replicate_rewrite_db, "$rewrite_db_sss") != 0`)
{
die SHOW SLAVE STATUS Replicate_Rewrite_DB value $rewrite_db_sss does not match variable @@GLOBAL.replicate_rewrite_db;
}
--echo # ...success
eval SELECT @@GLOBAL.replicate_rewrite_db, '$rewrite_db_sss' as 'Replicate_Rewrite_DB from SHOW SLAVE STATUS';
--echo # Create DBs and tables on primary
connection master;
@ -63,16 +56,10 @@ source include/stop_slave.inc;
SET @save_replicate_rewrite_db = @@GLOBAL.replicate_rewrite_db;
SELECT @@GLOBAL.replicate_rewrite_db;
SET @@GLOBAL.replicate_rewrite_db="test_master->test_replica";
SELECT @@GLOBAL.replicate_rewrite_db;
SHOW DATABASES like 'test_replica';
source include/start_slave.inc;
let $rewrite_db_sss= query_get_value(SHOW SLAVE STATUS, Replicate_Rewrite_DB, 1);
--echo # Ensuring SHOW SLAVE STATUS produces correct value for Replicate_Rewrite_DB...
if (`SELECT strcmp(@@global.replicate_rewrite_db, "$rewrite_db_sss") != 0`)
{
die SHOW SLAVE STATUS Replicate_Rewrite_DB value $rewrite_db_sss does not match variable @@GLOBAL.replicate_rewrite_db;
}
--echo # ...success
eval SELECT @@GLOBAL.replicate_rewrite_db, '$rewrite_db_sss' as 'Replicate_Rewrite_DB from SHOW SLAVE STATUS';
--echo # Create DB and tables on primary
connection master;
@ -101,6 +88,9 @@ select * from test_replica.my_table;
--source include/diff_tables.inc
--echo # Update of values on primary for DB not set in replication_rewrite_db
--source include/stop_slave.inc
--source include/reset_slave.inc
connection master;
use x;
insert into my_table values (314);
@ -108,9 +98,6 @@ select * from my_table;
--source include/save_master_gtid.inc
connection slave;
--let $rpl_only_running_threads=1
--source include/stop_slave.inc
--source include/reset_slave.inc
--source include/start_slave.inc
SELECT @@GLOBAL.replicate_rewrite_db;
--source include/sync_with_master_gtid.inc