diff options
author | Alexander Nozdrin <alik@sun.com> | 2010-04-30 16:12:41 +0400 |
---|---|---|
committer | Alexander Nozdrin <alik@sun.com> | 2010-04-30 16:12:41 +0400 |
commit | 63e6005ac40e5aa894e770287d8bcf45aa9f5198 (patch) | |
tree | c8ef1f1345cfa63c1ebd524afef056504896b4ab /mysql-test/collections | |
parent | 37074b61084606a73fe07ccb5ce801e6ac259c71 (diff) | |
download | mariadb-git-63e6005ac40e5aa894e770287d8bcf45aa9f5198.tar.gz |
Patch for Bug#52356: query_cache_debug fails on Linux.
There were two problems here:
1. misleading error message
2. abusing KILL QUERY in the test case
1. The server reported "'DELETE FROM t1' failed: 1689: Wait on a lock was
aborted due to a pending exclusive lock", while the proper error message
should be "'DELETE FROM t1' failed: 1317: Query execution was interrupted".
The problem is that the server has two different flags for
signalling that a query is being killed: THD::killed and
mysys_var::abort. The test case triggers a race: sometimes
mysys_var::abort is set earlier than THD::killed. That leads
to the following situation:
- thr_lock() checks mysys_var::abort and returns error status,
since mysys_var::abort is set;
- the caller (mysql_lock_tables()) gets an error from thr_lock(),
but THD::killed is not set, so it decides that thr_lock() couldn't
get a lock due to a pending exclusive lock.
This is a known issue with the server and it's not going to be fixed soon.
5.5 differs from 5.1 here as follows: when thr_lock() returns an error:
- 5.1 continues trying thr_lock() until success;
- 5.5 propagates the error
2. The test case uses KILL QUERY is a highly concurent environment.
The fix is to wait for the dying statement to rest in peace before
executing another DELETE FROM t1.
Diffstat (limited to 'mysql-test/collections')
-rw-r--r-- | mysql-test/collections/default.experimental | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/mysql-test/collections/default.experimental b/mysql-test/collections/default.experimental index df835148d26..addb24e1ac7 100644 --- a/mysql-test/collections/default.experimental +++ b/mysql-test/collections/default.experimental @@ -16,7 +16,6 @@ main.mysqlbinlog_row_innodb @solaris # Bug#52202 2010-03-22 alik mysqlbinlog main.mysqlbinlog_row_myisam @solaris # Bug#52202 2010-03-22 alik mysqlbinlog_row* fail in daily-trunk on Sol10 x86_64 debug_max main.outfile_loaddata @solaris # Bug#46895 2010-01-20 alik Test "outfile_loaddata" fails (reproducible) main.plugin* @solaris # Bug#47146 Linking problem with example plugin when dtrace enabled -main.query_cache_debug @linux # Bug#52356 2010-04-10 alik query_cache_debug fails on Linux main.signal_demo3 @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun main.sp @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun main.wait_timeout @solaris # Bug#51244 2010-04-26 alik wait_timeout fails on OpenSolaris |