Bug #50313 The test backup_thd_delete has non-deterministic output
Submitted: 13 Jan 2010 18:43 Modified: 25 Feb 2010 1:38
Reporter: Chuck Bell Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Backup Severity:S3 (Non-critical)
Version:6.0.14 OS:Any
Assigned to: Chuck Bell CPU Architecture:Any

[13 Jan 2010 18:43] Chuck Bell
Description:
The test backup_thd_delete has non-deterministic output in pushbuild.

The test fails with:

backup.backup_thd_delete                 [ fail ]
        Test ended at 2010-01-12 17:02:00

CURRENT_TEST: backup.backup_thd_delete
--- /export/home4/pb2/test/sb_2-1169289-1263280831.48/mysql-6.0.14-alpha-linux-x86_64-test/mysql-test/suite/backup/r/backup_thd_delete.result	2010-01-12 02:01:09.000000000 +0300
+++ /export/home4/pb2/test/sb_2-1169289-1263280831.48/mysql-6.0.14-alpha-linux-x86_64-test/mysql-test/suite/backup/r/backup_thd_delete.reject	2010-01-12 19:02:00.000000000 +0300
@@ -33,4 +33,8 @@
 # Cleanup.
 #
 SET DEBUG_SYNC= 'reset';
+Id	User	Host	db	Command	Time	State	Info
+498	root	localhost	db1	Query	1	Writing to net	BACKUP DATABASE db1 TO 'db1.bkp'
+499	root	localhost	test	Query	0	NULL	SHOW PROCESSLIST
+500	system user		NULL	Killed	0	MyISAM backup: terminating	MyISAM driver locking thread
 DROP DATABASE db1;

mysqltest: Result length mismatch

...or something similar...

The offending command is the SHOW PROCESSLIST from line#60 in the test. 

  #
  # Arrange for SHOW PROCESSLIST to stop in the middle of its operation, when
  # it is enumerating processes, and signal BACKUP to continue. When BACKUP
  # terminates, the locking thread will terminate as well and will delete its
  # THD instance.
  #
  SET DEBUG_SYNC= 'sql_show_locked SIGNAL finish_backup WAIT_FOR finish_show';
  send SHOW PROCESSLIST;

In this case, we issue a send SHOW PROCESSLIST and later connect with reap. The point of this is to allow the debug sync point to be reached. 

So it is either a fault of the test originally that the output of SHOW PROCESSLIST is not checked or the output of the command is of no consequence and should be masked.

How to repeat:
Run the test repeatedly or on a system under heavy load like valgrind.

Suggested fix:
Mask the output of SHOW PROCESSLIST or extract the pertinent information (e.g. the backup thread is deleted). 

NOTE: This test also fails in the backport tree so the solution should be merged to the back port tree.
[13 Jan 2010 18:49] Chuck Bell
According to the original bug that created this test, BUG#49342, the test tests a crash condition and not a specific state of the threads in question.

Therefore, I conclude the output of the SHOW PROCESSLIST is not important and should be masked for deterministic test behavior.
[13 Jan 2010 18:54] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/96811

2934 Chuck Bell	2010-01-13
      BUG#50313 : The test backup_thd_delete has non-deterministic output
      
      The output of SHOW PROCESSLIST can be deterministic on some machines
      depending on load and timing of the test sequences.
      
      This patch masks the output of SHOW PROCESSLIST to avoid capture
      of additional processes and states in the output.
     @ mysql-test/suite/backup/t/backup_thd_delete.test
        Mask output of SHOW PROCESSLIST.
        Does not require a new result file.
[14 Jan 2010 10:10] Ingo Strüwing
Please apply a few changes to the patch as discussed on IRC.
[14 Jan 2010 14:12] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/96902

2934 Chuck Bell	2010-01-14
      BUG#50313 : The test backup_thd_delete has non-deterministic output
      
      The output of SHOW PROCESSLIST can be deterministic on some machines
      depending on load and timing of the test sequences.
      
      This patch masks the output of SHOW PROCESSLIST to avoid capture
      of additional processes and states in the output.
     @ mysql-test/suite/backup/t/backup_thd_delete.test
        Mask output of SHOW PROCESSLIST.
        Does not require a new result file.
        Added missing reap.
[14 Jan 2010 14:56] Ingo Strüwing
Approved with request.
[14 Jan 2010 15:04] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/96916

2934 Chuck Bell	2010-01-14
      BUG#50313 : The test backup_thd_delete has non-deterministic output
      
      The output of SHOW PROCESSLIST can be non-deterministic on some machines
      depending on load and timing of the test sequences.
      
      The output of SHOW PROCESSLIST is irrelevant for the test anyway. 
      We just need to prove that it doesn't crash.
     @ mysql-test/suite/backup/t/backup_thd_delete.test
        Mask output of SHOW PROCESSLIST.
        Does not require a new result file.
        Added missing reap.
[14 Jan 2010 15:07] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/96919

3063 Chuck Bell	2010-01-14
      Merge of BUG#50313.
[20 Feb 2010 9:18] Bugs System
Pushed into 6.0.14-alpha (revid:ingo.struewing@sun.com-20100218152520-s4v1ld76bif06eqn) (version source revid:ingo.struewing@sun.com-20100119194038-2cmbu0p2x2t6dxmj) (merge vers: 6.0.14-alpha) (pib:16)
[25 Feb 2010 1:38] Paul DuBois
Changes to test case. No changelog entry needed.