=== modified file 'mysql-test/r/kill_processlist-6619.result'
|
--- mysql-test/r/kill_processlist-6619.result 2015-01-19 13:07:41 +0000
|
+++ mysql-test/r/kill_processlist-6619.result 2015-01-23 12:23:34 +0000
|
@@ -3,6 +3,8 @@ SHOW PROCESSLIST;
|
Id User Host db Command Time State Info Progress
|
# root # test Sleep # # NULL 0.000
|
# root # test Query # # SHOW PROCESSLIST 0.000
|
+SET @old_dbug= @@debug_dbug;
|
+SET debug_dbug="+d,inject_knielsen";
|
SET DEBUG_SYNC='before_execute_sql_command WAIT_FOR go';
|
SHOW PROCESSLIST;
|
connection default;
|
@@ -10,6 +12,8 @@ KILL QUERY con_id;
|
SET DEBUG_SYNC='now SIGNAL go';
|
connection con1;
|
ERROR 70100: Query execution was interrupted
|
+SET debug_dbug= @old_dbug;
|
+SET DEBUG_SYNC='reset';
|
SHOW PROCESSLIST;
|
Id User Host db Command Time State Info Progress
|
# root # test Sleep # # NULL 0.000
|
|
=== modified file 'mysql-test/t/kill_processlist-6619.test'
|
--- mysql-test/t/kill_processlist-6619.test 2015-01-19 13:07:41 +0000
|
+++ mysql-test/t/kill_processlist-6619.test 2015-01-23 12:23:02 +0000
|
@@ -9,6 +9,8 @@
|
--let $con_id = `SELECT CONNECTION_ID()`
|
--replace_column 1 # 3 # 6 # 7 #
|
SHOW PROCESSLIST;
|
+SET @old_dbug= @@debug_dbug;
|
+SET debug_dbug="+d,inject_knielsen";
|
SET DEBUG_SYNC='before_execute_sql_command WAIT_FOR go';
|
send SHOW PROCESSLIST;
|
--connection default
|
@@ -18,5 +20,7 @@ SET DEBUG_SYNC='now SIGNAL go';
|
--connection con1
|
--error ER_QUERY_INTERRUPTED
|
reap;
|
+SET debug_dbug= @old_dbug;
|
+SET DEBUG_SYNC='reset';
|
--replace_column 1 # 3 # 6 # 7 #
|
SHOW PROCESSLIST;
|
|
=== modified file 'sql/sql_parse.cc'
|
--- sql/sql_parse.cc 2015-01-21 11:03:02 +0000
|
+++ sql/sql_parse.cc 2015-01-23 12:35:39 +0000
|
@@ -1124,6 +1124,7 @@ bool dispatch_command(enum enum_server_c
|
thd->enable_slow_log= TRUE;
|
thd->query_plan_flags= QPLAN_INIT;
|
thd->lex->sql_command= SQLCOM_END; /* to avoid confusing VIEW detectors */
|
+DBUG_EXECUTE_IF("inject_knielsen", my_sleep(50000););
|
thd->reset_kill_query();
|
|
DEBUG_SYNC(thd,"dispatch_command_before_set_time");
|
|
This patch makes the failure easy to reproduce:
=== modified file 'mysql-test/r/kill_processlist-6619.result'
--- mysql-test/r/kill_processlist-6619.result 2015-01-19 13:07:41 +0000
+++ mysql-test/r/kill_processlist-6619.result 2015-01-23 12:23:34 +0000
@@ -3,6 +3,8 @@ SHOW PROCESSLIST;
Id User Host db Command Time State Info Progress
# root # test Sleep # # NULL 0.000
# root # test Query # # SHOW PROCESSLIST 0.000
+SET @old_dbug= @@debug_dbug;
+SET debug_dbug="+d,inject_knielsen";
SET DEBUG_SYNC='before_execute_sql_command WAIT_FOR go';
SHOW PROCESSLIST;
connection default;
@@ -10,6 +12,8 @@ KILL QUERY con_id;
SET DEBUG_SYNC='now SIGNAL go';
connection con1;
ERROR 70100: Query execution was interrupted
+SET debug_dbug= @old_dbug;
+SET DEBUG_SYNC='reset';
SHOW PROCESSLIST;
Id User Host db Command Time State Info Progress
# root # test Sleep # # NULL 0.000
=== modified file 'mysql-test/t/kill_processlist-6619.test'
--- mysql-test/t/kill_processlist-6619.test 2015-01-19 13:07:41 +0000
+++ mysql-test/t/kill_processlist-6619.test 2015-01-23 12:23:02 +0000
@@ -9,6 +9,8 @@
--let $con_id = `SELECT CONNECTION_ID()`
--replace_column 1 # 3 # 6 # 7 #
SHOW PROCESSLIST;
+SET @old_dbug= @@debug_dbug;
+SET debug_dbug="+d,inject_knielsen";
SET DEBUG_SYNC='before_execute_sql_command WAIT_FOR go';
send SHOW PROCESSLIST;
--connection default
@@ -18,5 +20,7 @@ SET DEBUG_SYNC='now SIGNAL go';
--connection con1
--error ER_QUERY_INTERRUPTED
reap;
+SET debug_dbug= @old_dbug;
+SET DEBUG_SYNC='reset';
--replace_column 1 # 3 # 6 # 7 #
SHOW PROCESSLIST;
=== modified file 'sql/sql_parse.cc'
--- sql/sql_parse.cc 2015-01-21 11:03:02 +0000
+++ sql/sql_parse.cc 2015-01-23 12:35:39 +0000
@@ -1124,6 +1124,7 @@ bool dispatch_command(enum enum_server_c
thd->enable_slow_log= TRUE;
thd->query_plan_flags= QPLAN_INIT;
thd->lex->sql_command= SQLCOM_END; /* to avoid confusing VIEW detectors */
+DBUG_EXECUTE_IF("inject_knielsen", my_sleep(50000););
thd->reset_kill_query();
DEBUG_SYNC(thd,"dispatch_command_before_set_time");
So it seems that the problem happens when the connection con1 is delayed for
some reason. Then the KILL sent by the default connection is reset at the
start of the SHOW PROCESSLIST query.