diff --git a/mysql-test/r/kill.result b/mysql-test/r/kill.result index e91db0c9036..0cc8caf8f42 100644 --- a/mysql-test/r/kill.result +++ b/mysql-test/r/kill.result @@ -60,9 +60,7 @@ SET DEBUG_SYNC= 'now WAIT_FOR in_sync'; KILL @id; SET DEBUG_SYNC= 'now WAIT_FOR con1_end'; Got one of the listed errors -SELECT 1; -1 -1 +Got one of the listed errors SET DEBUG_SYNC = 'RESET'; DROP TABLE t1, t2; SET DEBUG_SYNC= 'before_acos_function SIGNAL in_sync WAIT_FOR kill'; diff --git a/mysql-test/t/flush_read_lock_kill.test b/mysql-test/t/flush_read_lock_kill.test index a672fa5dfc5..e0a772d9fbb 100644 --- a/mysql-test/t/flush_read_lock_kill.test +++ b/mysql-test/t/flush_read_lock_kill.test @@ -65,7 +65,7 @@ KILL CONNECTION @id; connection con1; --echo # Try to reap FLUSH TABLES WITH READ LOCK, --echo # it fail due to killed statement and connection. ---error 1317,2013 +--error 1317,2013,1927 reap; --echo # Switching to 'con2'. diff --git a/mysql-test/t/kill.test b/mysql-test/t/kill.test index 7c6c37ecfc6..d0a82ae3749 100644 --- a/mysql-test/t/kill.test +++ b/mysql-test/t/kill.test @@ -142,9 +142,12 @@ KILL @id; SET DEBUG_SYNC= 'now WAIT_FOR con1_end'; connection con1; ---error 1317,1053,2006,2013 +--error 1317,1053,2006,2013,1927 reap; +--disable_query_log +--error 2013,0 SELECT 1; +--enable_query_log connection default; SET DEBUG_SYNC = 'RESET'; diff --git a/sql/threadpool_common.cc b/sql/threadpool_common.cc index 229c913ab44..b6676576fb3 100644 --- a/sql/threadpool_common.cc +++ b/sql/threadpool_common.cc @@ -71,7 +71,9 @@ static inline bool thread_attach(THD* thd, char *stack_start, PSI_thread **save_ static inline void thread_detach(THD* thd, PSI_thread *restore_psi_thread) { DBUG_ENTER("thread_detach"); + mysql_mutex_lock(&thd->LOCK_thd_data); thd->mysys_var = NULL; + mysql_mutex_unlock(&thd->LOCK_thd_data); #ifndef DBUG_OFF /* If during the session @@session.dbug was assigned, the @@ -161,7 +163,7 @@ int threadpool_process_request(THD *thd) PSI_thread *psi_thread; thread_attach(thd, (char *)&thd, &psi_thread); - if (thd->killed == KILL_CONNECTION) + if (thd->killed >= KILL_CONNECTION) { /* kill flag can be set have been killed by