From: Jon Olav Hauglid Date: December 15 2010 10:35am Subject: bzr commit into mysql-5.5-bugteam branch (jon.hauglid:3195) Bug#58933 List-Archive: http://lists.mysql.com/commits/126908 X-Bug: 58933 Message-Id: <201012151037.oBFAbPfe019367@rcsinet13.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0873275557668817170==" --===============0873275557668817170== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///export/home/x/mysql-5.5-bugteam-bug58933/ based on revid:gleb.shchepa@stripped 3195 Jon Olav Hauglid 2010-12-15 Bug #58933 Assertion `thd- >is_error()' fails on shutdown with ongoing OPTIMIZE TABLE OPTIMIZE TABLE for InnoDB tables is handled as recreate + analyze. The triggered assert checked that an error had been reported if either recreate or analyze failed. However the assert failed to take into account that they could have failed because OPTIMIZE TABLE had been victim of KILL QUERY, KILL CONNECTION or server shutdown. This patch adjusts the assert to take this possibility into account. The problem was only noticeable on debug versions of the server. Test case added to innodb_mysql_sync.test. modified: mysql-test/r/innodb_mysql_sync.result mysql-test/t/innodb_mysql_sync.test sql/sql_admin.cc === modified file 'mysql-test/r/innodb_mysql_sync.result' --- a/mysql-test/r/innodb_mysql_sync.result 2010-06-25 07:07:18 +0000 +++ b/mysql-test/r/innodb_mysql_sync.result 2010-12-15 10:35:45 +0000 @@ -66,3 +66,27 @@ SELECT ((@id := id) - id) FROM t2; KILL @id; SET DEBUG_SYNC= "now SIGNAL killed"; DROP TABLE t1, t2; +SET DEBUG_SYNC= "RESET"; +# +# Bug#58933 Assertion `thd- >is_error()' fails on shutdown with ongoing +# OPTIMIZE TABLE +# +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1), (2); +# Connection con1 +SET DEBUG_SYNC= 'ha_admin_open_ltable SIGNAL waiting WAIT_FOR killed'; +# Sending: +OPTIMIZE TABLE t1; +# Connection default +SET DEBUG_SYNC= 'now WAIT_FOR waiting'; +KILL QUERY ID; +SET DEBUG_SYNC= 'now SIGNAL killed'; +# Connection con1 +# Reaping: OPTIMIZE TABLE t1 +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status Operation failed +# Connection default +DROP TABLE t1; +SET DEBUG_SYNC= 'RESET'; === modified file 'mysql-test/t/innodb_mysql_sync.test' --- a/mysql-test/t/innodb_mysql_sync.test 2010-06-25 07:07:18 +0000 +++ b/mysql-test/t/innodb_mysql_sync.test 2010-12-15 10:35:45 +0000 @@ -104,6 +104,47 @@ SELECT ((@id := id) - id) FROM t2; KILL @id; SET DEBUG_SYNC= "now SIGNAL killed"; DROP TABLE t1, t2; +disconnect con1; +--source include/wait_until_count_sessions.inc +SET DEBUG_SYNC= "RESET"; + + +--echo # +--echo # Bug#58933 Assertion `thd- >is_error()' fails on shutdown with ongoing +--echo # OPTIMIZE TABLE +--echo # + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1 (a INT) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1), (2); + +--echo # Connection con1 +connect (con1,localhost,root); +let $ID= `SELECT connection_id()`; +SET DEBUG_SYNC= 'ha_admin_open_ltable SIGNAL waiting WAIT_FOR killed'; +--echo # Sending: +--send OPTIMIZE TABLE t1 + +--echo # Connection default +connection default; +SET DEBUG_SYNC= 'now WAIT_FOR waiting'; +--replace_result $ID ID +eval KILL QUERY $ID; +SET DEBUG_SYNC= 'now SIGNAL killed'; + +--echo # Connection con1 +connection con1; +--echo # Reaping: OPTIMIZE TABLE t1 +--reap + +--echo # Connection default +connection default; +DROP TABLE t1; +SET DEBUG_SYNC= 'RESET'; +disconnect con1; # Check that all connections opened by test cases in this file are really === modified file 'sql/sql_admin.cc' --- a/sql/sql_admin.cc 2010-11-11 17:11:05 +0000 +++ b/sql/sql_admin.cc 2010-12-15 10:35:45 +0000 @@ -728,7 +728,7 @@ send_result_message: protocol->store(operator_name, system_charset_info); if (result_code) // either mysql_recreate_table or analyze failed { - DBUG_ASSERT(thd->is_error()); + DBUG_ASSERT(thd->is_error() || thd->killed); if (thd->is_error()) { const char *err_msg= thd->stmt_da->message(); --===============0873275557668817170== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/jon.hauglid@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jon.hauglid@stripped # target_branch: file:///export/home/x/mysql-5.5-bugteam-bug58933/ # testament_sha1: 80fc500f88564970f39500b18daa45c396613c7b # timestamp: 2010-12-15 11:35:50 +0100 # source_branch: file:///export/home/x/mysql-5.1-bugteam/ # base_revision_id: gleb.shchepa@stripped\ # j5c7u19uhiq6u310 # # Begin bundle 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 Lhj/xdyRThQkGDJjdsA= --===============0873275557668817170==--