Bug #45854 Check of testcase failing for rpl.rpl_killed_ddl (all binlog formats)
Submitted: 30 Jun 2009 13:53
Reporter: Patrick Crews Email Updates:
Status: Verified Impact on me:
None 
Category:Tests: Server Severity:S3 (Non-critical)
Version:5.4 OS:Any
Assigned to: CPU Architecture:Any
Tags: check, rpl_killed_ddl, test cleanup, testcase
Triage: Triaged: D3 (Medium)

[30 Jun 2009 13:53] Patrick Crews
Description:
The check of testcase rpl.rpl_killed_ddl is failing for all binlog formats in the azalea tree:
Below is the output most commonly seen, but it should be noted that I did see one incident with 'mixed' format where there was also a +v2 in the failure output.

This was observed on a Mac OSX 10.5 machine, but it is assumed that this isn't platform-specific behavior.

It seems like this failure indicates an actual problem as there are explicit DROP VIEW statements for these 'leftover' views.

MTR's internal check of the test case 'rpl.rpl_killed_ddl' failed.
This means that the test case does not preserve the state that existed
before the test case was executed.  Most likely the test case did not
do a proper clean-up.
This is the diff of the states of the servers before and after the
test case was executed:
<snip>
@@ -274,6 +274,7 @@
 def	mysql	latin1	latin1_swedish_ci	NULL
 def	test	latin1	latin1_swedish_ci	NULL
 tables_in_test
+v1
 tables_in_mysql
 mysql.backup_history
 mysql.backup_progress

It looks like these statements aren't being processed:
I also noted that there is no direct mention of these views in the cleanup portion of the test
######## VIEW ########

let $diff_statement= SHOW TABLES LIKE 'v%';

send CREATE VIEW v2 AS SELECT a FROM t1 WHERE a > 100;
source include/kill_query_and_diff_master_slave.inc;

send DROP VIEW v1;
source include/kill_query_and_diff_master_slave.inc;

send DROP VIEW IF EXISTS v2;
source include/kill_query_and_diff_master_slave.inc;

How to repeat:
Run the testcase in the azalea tree:

./mtr --force rpl.rpl_killed_ddl

Observe the MTR output

Suggested fix:
Ensure that testcases clean up after themselves.
We could do this by running this test in its own database, then dropping the database at cleanup.

While the leftovers could indicate a problem, the test should show this problem in a different manner (ie explicit checks for the VIEWs after issuing a DROP statement) rather than leaving anything at the end of execution.