Commit 2ccb5370 authored by Shivji Kumar Jha's avatar Shivji Kumar Jha

BUG#16580366- MTR TESTS FAILING SPORADICALLY ON PB2 (5.5, 5.6 AND 5.7)

              DURING INNODB RECOVERY

Problem:
=======
The connection 'master' is dropped by mysqltest after
rpl_end.inc. At this point, dropping temporary tables
at the connection 'master' are not synced at slave.
So, the temporary tables replicated from master remain
on slave leading to an inconsistent close of the test.
The following test thus complains about the presence of
temporary table(s) left over from the previous test.

Fix:
===
- Put explicit drop commands in replication tests so
  that the temporary tables are dropped at slave as well.
- Added the check for Slave_open_temp_tables in
  mtr_check.sql to warn about the remaining temporary
  table, if any, at the close of a test.
parent 5a5024a6
...@@ -150,10 +150,9 @@ if (`SELECT HEX(@commands) = HEX('configure')`) ...@@ -150,10 +150,9 @@ if (`SELECT HEX(@commands) = HEX('configure')`)
} }
# #
# Drops tables and synchronizes master and slave. Note that temporary # Drops tables and synchronizes master and slave.
# tables are not explitcily dropped as they will be dropped while
# closing the connection.
# #
if (`SELECT HEX(@commands) = HEX('clean')`) if (`SELECT HEX(@commands) = HEX('clean')`)
{ {
connection master; connection master;
...@@ -162,10 +161,15 @@ if (`SELECT HEX(@commands) = HEX('clean')`) ...@@ -162,10 +161,15 @@ if (`SELECT HEX(@commands) = HEX('clean')`)
DROP TABLE IF EXISTS nt_xx_1; DROP TABLE IF EXISTS nt_xx_1;
DROP TEMPORARY TABLE IF EXISTS tt_tmp_xx_1;
DROP TEMPORARY TABLE IF EXISTS nt_tmp_xx_1;
--let $n= $tot_table --let $n= $tot_table
while ($n) while ($n)
{ {
--eval DROP TABLE IF EXISTS nt_$n --eval DROP TABLE IF EXISTS nt_$n
--eval DROP TEMPORARY TABLE IF EXISTS tt_tmp_$n
--eval DROP TEMPORARY TABLE IF EXISTS nt_tmp_$n
--dec $n --dec $n
} }
......
...@@ -112,7 +112,7 @@ FLUSH LOGS; ...@@ -112,7 +112,7 @@ FLUSH LOGS;
--echo -------- switch to master -------- --echo -------- switch to master --------
connection master; connection master;
FLUSH LOGS; FLUSH LOGS;
DROP TEMPORARY TABLE IF EXISTS mysqltest1.tmp2;
DROP DATABASE mysqltest1; DROP DATABASE mysqltest1;
--echo End of 5.1 tests --echo End of 5.1 tests
......
...@@ -38,6 +38,9 @@ reset slave; ...@@ -38,6 +38,9 @@ reset slave;
source include/start_slave.inc; source include/start_slave.inc;
sync_with_master; sync_with_master;
show status like 'slave_open_temp_tables'; show status like 'slave_open_temp_tables';
connection master;
drop temporary table if exists t1;
sync_slave_with_master;
# #
#Bug#34654 RESET SLAVE does not clear LAST_IO_Err* #Bug#34654 RESET SLAVE does not clear LAST_IO_Err*
......
...@@ -72,6 +72,8 @@ BEGIN ...@@ -72,6 +72,8 @@ BEGIN
mysql.time_zone_transition_type, mysql.time_zone_transition_type,
mysql.user; mysql.user;
show status like 'slave_open_temp_tables';
END|| END||
-- --
......
...@@ -15,4 +15,7 @@ master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS t ...@@ -15,4 +15,7 @@ master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS t
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp1 LIKE tmp
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp
DROP TEMPORARY TABLE tmp;
DROP TEMPORARY TABLE tmp1;
DROP TEMPORARY TABLE tmp2;
include/rpl_end.inc include/rpl_end.inc
...@@ -42,4 +42,5 @@ t5 CREATE TABLE `t5` ( ...@@ -42,4 +42,5 @@ t5 CREATE TABLE `t5` (
`created` datetime DEFAULT NULL `created` datetime DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t2,t3,t5; drop table t2,t3,t5;
drop temporary table t4;
include/rpl_end.inc include/rpl_end.inc
...@@ -1554,8 +1554,14 @@ master-bin.000001 # Query # # COMMIT ...@@ -1554,8 +1554,14 @@ master-bin.000001 # Query # # COMMIT
SET @commands= 'clean'; SET @commands= 'clean';
DROP TABLE IF EXISTS tt_xx_1; DROP TABLE IF EXISTS tt_xx_1;
DROP TABLE IF EXISTS nt_xx_1; DROP TABLE IF EXISTS nt_xx_1;
DROP TEMPORARY TABLE IF EXISTS tt_tmp_xx_1;
DROP TEMPORARY TABLE IF EXISTS nt_tmp_xx_1;
DROP TABLE IF EXISTS nt_2; DROP TABLE IF EXISTS nt_2;
DROP TEMPORARY TABLE IF EXISTS tt_tmp_2;
DROP TEMPORARY TABLE IF EXISTS nt_tmp_2;
DROP TABLE IF EXISTS nt_1; DROP TABLE IF EXISTS nt_1;
DROP TEMPORARY TABLE IF EXISTS tt_tmp_1;
DROP TEMPORARY TABLE IF EXISTS nt_tmp_1;
DROP TABLE IF EXISTS tt_2; DROP TABLE IF EXISTS tt_2;
DROP TABLE IF EXISTS tt_1; DROP TABLE IF EXISTS tt_1;
SET @commands= ''; SET @commands= '';
......
...@@ -85,6 +85,7 @@ lock tables t3 read; ...@@ -85,6 +85,7 @@ lock tables t3 read;
include/assert.inc [Table t3 should contain 100 lines on the slave] include/assert.inc [Table t3 should contain 100 lines on the slave]
unlock tables; unlock tables;
drop table if exists t1,t2,t3,t4; drop table if exists t1,t2,t3,t4;
drop temporary table temp_table;
End of 4.1 tests End of 4.1 tests
show binlog events in 'non existing_binlog_file'; show binlog events in 'non existing_binlog_file';
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Could not find target log
......
...@@ -1619,8 +1619,14 @@ master-bin.000001 # Query # # COMMIT ...@@ -1619,8 +1619,14 @@ master-bin.000001 # Query # # COMMIT
SET @commands= 'clean'; SET @commands= 'clean';
DROP TABLE IF EXISTS tt_xx_1; DROP TABLE IF EXISTS tt_xx_1;
DROP TABLE IF EXISTS nt_xx_1; DROP TABLE IF EXISTS nt_xx_1;
DROP TEMPORARY TABLE IF EXISTS tt_tmp_xx_1;
DROP TEMPORARY TABLE IF EXISTS nt_tmp_xx_1;
DROP TABLE IF EXISTS nt_2; DROP TABLE IF EXISTS nt_2;
DROP TEMPORARY TABLE IF EXISTS tt_tmp_2;
DROP TEMPORARY TABLE IF EXISTS nt_tmp_2;
DROP TABLE IF EXISTS nt_1; DROP TABLE IF EXISTS nt_1;
DROP TEMPORARY TABLE IF EXISTS tt_tmp_1;
DROP TEMPORARY TABLE IF EXISTS nt_tmp_1;
DROP TABLE IF EXISTS tt_2; DROP TABLE IF EXISTS tt_2;
DROP TABLE IF EXISTS tt_1; DROP TABLE IF EXISTS tt_1;
SET @commands= ''; SET @commands= '';
......
...@@ -23,6 +23,7 @@ include/start_slave.inc ...@@ -23,6 +23,7 @@ include/start_slave.inc
show status like 'slave_open_temp_tables'; show status like 'slave_open_temp_tables';
Variable_name Value Variable_name Value
Slave_open_temp_tables 0 Slave_open_temp_tables 0
drop temporary table if exists t1;
include/stop_slave.inc include/stop_slave.inc
reset slave; reset slave;
include/check_slave_no_error.inc include/check_slave_no_error.inc
......
...@@ -48,6 +48,7 @@ select (@id := id) - id from t2; ...@@ -48,6 +48,7 @@ select (@id := id) - id from t2;
0 0
kill @id; kill @id;
drop table t2; drop table t2;
drop temporary table t3;
Got one of the listed errors Got one of the listed errors
include/wait_for_slave_sql_error_and_skip.inc [errno=1053] include/wait_for_slave_sql_error_and_skip.inc [errno=1053]
select count(*) from t1; select count(*) from t1;
......
...@@ -1604,8 +1604,14 @@ master-bin.000001 # Query # # ROLLBACK ...@@ -1604,8 +1604,14 @@ master-bin.000001 # Query # # ROLLBACK
SET @commands= 'clean'; SET @commands= 'clean';
DROP TABLE IF EXISTS tt_xx_1; DROP TABLE IF EXISTS tt_xx_1;
DROP TABLE IF EXISTS nt_xx_1; DROP TABLE IF EXISTS nt_xx_1;
DROP TEMPORARY TABLE IF EXISTS tt_tmp_xx_1;
DROP TEMPORARY TABLE IF EXISTS nt_tmp_xx_1;
DROP TABLE IF EXISTS nt_2; DROP TABLE IF EXISTS nt_2;
DROP TEMPORARY TABLE IF EXISTS tt_tmp_2;
DROP TEMPORARY TABLE IF EXISTS nt_tmp_2;
DROP TABLE IF EXISTS nt_1; DROP TABLE IF EXISTS nt_1;
DROP TEMPORARY TABLE IF EXISTS tt_tmp_1;
DROP TEMPORARY TABLE IF EXISTS nt_tmp_1;
DROP TABLE IF EXISTS tt_2; DROP TABLE IF EXISTS tt_2;
DROP TABLE IF EXISTS tt_1; DROP TABLE IF EXISTS tt_1;
SET @commands= ''; SET @commands= '';
......
...@@ -79,6 +79,7 @@ COUNT(*) ...@@ -79,6 +79,7 @@ COUNT(*)
FLUSH LOGS; FLUSH LOGS;
-------- switch to master -------- -------- switch to master --------
FLUSH LOGS; FLUSH LOGS;
DROP TEMPORARY TABLE IF EXISTS mysqltest1.tmp2;
DROP DATABASE mysqltest1; DROP DATABASE mysqltest1;
End of 5.1 tests End of 5.1 tests
# #
......
...@@ -23,6 +23,7 @@ include/start_slave.inc ...@@ -23,6 +23,7 @@ include/start_slave.inc
show status like 'slave_open_temp_tables'; show status like 'slave_open_temp_tables';
Variable_name Value Variable_name Value
Slave_open_temp_tables 1 Slave_open_temp_tables 1
drop temporary table if exists t1;
include/stop_slave.inc include/stop_slave.inc
reset slave; reset slave;
include/check_slave_no_error.inc include/check_slave_no_error.inc
......
...@@ -38,4 +38,8 @@ CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp; ...@@ -38,4 +38,8 @@ CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp; CREATE TEMPORARY TABLE IF NOT EXISTS tmp2 SELECT * FROM tmp;
source include/show_binlog_events.inc; source include/show_binlog_events.inc;
DROP TEMPORARY TABLE tmp;
DROP TEMPORARY TABLE tmp1;
DROP TEMPORARY TABLE tmp2;
--source include/rpl_end.inc --source include/rpl_end.inc
...@@ -43,6 +43,7 @@ show create table t3; ...@@ -43,6 +43,7 @@ show create table t3;
show create table t5; show create table t5;
connection master; connection master;
drop table t2,t3,t5; drop table t2,t3,t5;
drop temporary table t4;
sync_slave_with_master; sync_slave_with_master;
# End of 4.1 tests # End of 4.1 tests
......
...@@ -218,6 +218,7 @@ unlock tables; ...@@ -218,6 +218,7 @@ unlock tables;
#clean up #clean up
connection master; connection master;
drop table if exists t1,t2,t3,t4; drop table if exists t1,t2,t3,t4;
drop temporary table temp_table;
sync_slave_with_master; sync_slave_with_master;
--echo End of 4.1 tests --echo End of 4.1 tests
......
...@@ -91,8 +91,8 @@ connection master1; ...@@ -91,8 +91,8 @@ connection master1;
sleep 3; sleep 3;
select (@id := id) - id from t2; select (@id := id) - id from t2;
kill @id; kill @id;
# We don't drop t3 as this is a temporary table
drop table t2; drop table t2;
drop temporary table t3;
connection master; connection master;
# The get_lock function causes warning for unsafe statement. # The get_lock function causes warning for unsafe statement.
--disable_warnings --disable_warnings
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment