#At file:///home/ksm/sun/repo/WL4641/push-6.0-rpl/ based on revid:aelkin@stripped
2833 Serge Kozlov 2009-03-24
Bug#43828. Fix for rpl_heartbeat_2slaves. Rewritten code for schema A->B->C
modified:
mysql-test/suite/rpl/r/rpl_heartbeat_2slaves.result
mysql-test/suite/rpl/t/disabled.def
mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.cnf
mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.test
=== modified file 'mysql-test/suite/rpl/r/rpl_heartbeat_2slaves.result'
--- a/mysql-test/suite/rpl/r/rpl_heartbeat_2slaves.result 2009-03-16 13:26:41 +0000
+++ b/mysql-test/suite/rpl/r/rpl_heartbeat_2slaves.result 2009-03-24 18:54:58 +0000
@@ -12,6 +12,7 @@ RESET SLAVE;
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.1, MASTER_LOG_FILE='MASTER_BINLOG';
include/start_slave.inc
[on slave1]
+STOP SLAVE;
RESET SLAVE;
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=1, MASTER_LOG_FILE='MASTER_BINLOG';
include/start_slave.inc
@@ -21,33 +22,34 @@ Slave has received heartbeat event
Slave1 has received heartbeat event
Slave has received more heartbeats than Slave1 (1 means 'yes'): 1
-*** Master->heartbeat->Slave Master->data->Slave1: ***
+*** Master->data->Slave1->heartbeat->Slave: ***
+[on slave1]
+RESET MASTER;
+[on slave]
+include/stop_slave.inc
+RESET SLAVE;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=SLAVE1_PORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.2, MASTER_LOG_FILE='SLAVE1_BINLOG';
+include/start_slave.inc
+Slave has received heartbeat event
[on master]
-CREATE DATABASE test_slave1;
-USE test_slave1;
CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10), c LONGTEXT);
INSERT INTO t1 VALUES (1, 'on master', '');
-[on slave]
-SHOW DATABASES LIKE 'test_slave1';
-Database (test_slave1)
+SHOW TABLES;
+Tables_in_test
+t1
[on slave1]
-SHOW DATABASES LIKE 'test_slave1';
-Database (test_slave1)
-test_slave1
-include/stop_slave.inc
+SHOW TABLES;
+Tables_in_test
+t1
+[on slave]
+SHOW TABLES;
+Tables_in_test
[on master]
-creating 1000 updates in binlog
-[on slave1]
-START SLAVE;
-[on slave1]
-USE test_slave1;
-SELECT a FROM t1;
-a
-1000
+creating updates on master and send to slave1 during 5 second
[on slave]
Slave has received heartbeats (1 means 'yes'): 1
*** Clean up ***
-DROP DATABASE test_slave1;
+DROP TABLE t1;
End of 6.0 test
=== modified file 'mysql-test/suite/rpl/t/disabled.def'
--- a/mysql-test/suite/rpl/t/disabled.def 2009-03-23 12:46:20 +0000
+++ b/mysql-test/suite/rpl/t/disabled.def 2009-03-24 18:54:58 +0000
@@ -15,5 +15,4 @@ rpl_extraColmaster_myisam : BUG#41097 2
rpl_binlog_corruption : BUG#41793 2008-12-30 sven rpl_binlog_corruption disabled in main (needs new mtr)
rpl_extraCol_falcon : Bug#40930 2008-11-21 johnemb rpl.rpl_extraCol_falcon fails doing STOP SLAVE (on Windows PB2)
rpl_cross_version : Bug#42311 2009-01-23 aelkin
-rpl_heartbeat_basic : Sporadic failures (Serge.Kozlov@stripped)
-rpl_heartbeat_2slaves : Sporadic failrues (Serge.Kozlov@stripped)
\ No newline at end of file
+rpl_heartbeat_basic : Bug#43828 2009-03-24 skozlov
=== modified file 'mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.cnf'
--- a/mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.cnf 2009-03-16 11:33:16 +0000
+++ b/mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.cnf 2009-03-24 18:54:58 +0000
@@ -5,10 +5,8 @@ server_id=1
[mysqld.2]
server_id=2
-replicate-ignore-db=test_slave1
[mysqld.3]
-log-slave-updates
server_id=3
[ENV]
=== modified file 'mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.test'
--- a/mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.test 2009-03-16 13:26:41 +0000
+++ b/mysql-test/suite/rpl/t/rpl_heartbeat_2slaves.test 2009-03-24 18:54:58 +0000
@@ -21,6 +21,9 @@ eval CHANGE MASTER TO MASTER_HOST='127.0
--connect(slave1,127.0.0.1,root,,test,$SLAVE_MYPORT1,)
--connection slave1
--echo [on slave1]
+--disable_warnings
+STOP SLAVE;
+--enable_warnings
RESET SLAVE;
--replace_result $MASTER_MYPORT MASTER_PORT $binlog_file MASTER_BINLOG
eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=1, MASTER_LOG_FILE='$binlog_file';
@@ -52,60 +55,72 @@ let $result= query_get_value(SELECT ($sl
--echo Slave has received more heartbeats than Slave1 (1 means 'yes'): $result
--echo
-# First slave doesn't receive data from master because it masked by --replicate-ignore-db.
-# Second slave receives data. Check that the 1st can receive heartbeat.
---echo *** Master->heartbeat->Slave Master->data->Slave1: ***
+
+# Create topology A->B->C and check that C receives heartbeat while B gets data
+# Slave1 (B) started w/o --log-slave-updates because B should not send data from A to C
+--echo *** Master->data->Slave1->heartbeat->Slave: ***
+--connection slave1
+--echo [on slave1]
+RESET MASTER;
+let $binlog_file= query_get_value(SHOW MASTER STATUS, File, 1);
+--connection slave
+--echo [on slave]
+--source include/stop_slave.inc
+RESET SLAVE;
+--replace_result $SLAVE_MYPORT1 SLAVE1_PORT $binlog_file SLAVE1_BINLOG
+eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$SLAVE_MYPORT1, MASTER_USER='root', MASTER_HEARTBEAT_PERIOD=0.2, MASTER_LOG_FILE='$binlog_file';
+--source include/start_slave.inc
+# Check heartbeat for new replication channel slave1->slave
+let $status_var= slave_received_heartbeats;
+let $status_var_value= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+let $status_var_comparsion= >;
+--source include/wait_for_status_var.inc
+--echo Slave has received heartbeat event
--connection master
--echo [on master]
-CREATE DATABASE test_slave1;
-USE test_slave1;
CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(10), c LONGTEXT);
INSERT INTO t1 VALUES (1, 'on master', '');
---sync_slave_with_master
---echo [on slave]
-SHOW DATABASES LIKE 'test_slave1';
+--save_master_pos
+SHOW TABLES;
--connection slave1
---sync_with_master
+--sync_with_master 0
--echo [on slave1]
-SHOW DATABASES LIKE 'test_slave1';
---source include/stop_slave.inc
+SHOW TABLES;
+let $slave_pos_before= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1);
+--save_master_pos
+--connection slave
+--sync_with_master 0
+--echo [on slave]
+SHOW TABLES;
--connection master
--echo [on master]
---echo creating 1000 updates in binlog
-# Generate events for binlog on master
-let $i= 1000;
+--echo creating updates on master and send to slave1 during 5 second
+# Generate events on master and send to slave1 during 5 second
+let $i= 1;
let $j= 1;
+let $k= 1;
--disable_query_log
while ($i) {
- eval SET @c_text=REPEAT('1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890', 1000+$j);
+ eval SET @c_text=REPEAT('1234567890', $j);
eval UPDATE t1 SET a=$j, c=@c_text;
- dec $i;
+ --connection slave1
+ let $slave_pos= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1);
+ if (`SELECT ($k*($slave_pos - $slave_pos_before)) > 0`) {
+ --connection slave
+ let $slave_rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+ let $k= 0;
+ let $time_before = `SELECT NOW()`;
+ }
+ if (`SELECT ((1-$k)*TIMESTAMPDIFF(SECOND,'$time_before',NOW())) > 5`) {
+ --connection slave
+ let $slave_rcvd_heartbeats_after= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
+ let $i= 0;
+ }
+ --connection master
inc $j;
+ sleep 0.1;
}
--enable_query_log
-save_master_pos;
-let $binlog_pos= query_get_value(SHOW MASTER STATUS, Position, 1);
---connection slave1
---echo [on slave1]
-START SLAVE;
-let $slave_param= Read_Master_Log_Pos;
-let $slave_param_value= query_get_value(SHOW SLAVE STATUS, Read_Master_Log_Pos, 1);
-let $slave_param_comparison= >;
---source include/wait_for_slave_param.inc
---connection slave
-let $slave_rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
---connection slave1
-let $slave_param= Read_Master_Log_Pos;
-let $slave_param_value= $binlog_pos;
-let $slave_param_comparison= =;
---source include/wait_for_slave_param.inc
---connection slave
-let $slave_rcvd_heartbeats_after= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
---connection slave1
---sync_with_master
---echo [on slave1]
-USE test_slave1;
-SELECT a FROM t1;
--connection slave
--echo [on slave]
let $result= query_get_value(SELECT ($slave_rcvd_heartbeats_after - $slave_rcvd_heartbeats_before) > 0 AS Result, Result, 1);
@@ -117,10 +132,10 @@ let $result= query_get_value(SELECT ($sl
#
--echo *** Clean up ***
--connection master
-DROP DATABASE test_slave1;
---sync_slave_with_master
+DROP TABLE t1;
+--save_master_pos
--connection slave1
---sync_with_master
+--sync_with_master 0
--echo
# End of 6.0 test
| Thread |
|---|
| • bzr commit into mysql-6.0-rpl branch (Serge.Kozlov:2833) Bug#43828 | Serge Kozlov | 24 Mar |