From c71395ce256d058f47639768c0f3b3b6b3764158 Mon Sep 17 00:00:00 2001 From: "svoj@mysql.com/april.(none)" <> Date: Thu, 2 Nov 2006 00:05:02 +0400 Subject: BUG#23312 - server hangs 'closing tables' with insert delayed,flush tables,alter table Deadlock could happen if there are delayed insert + flush tables + alter table running concurrently. This is fixed by removing a redundant mutex lock when killing a delayed thread. --- sql/sql_insert.cc | 3 --- 1 file changed, 3 deletions(-) diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 283fe571d53..2887d97bd8f 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -1181,8 +1181,6 @@ void kill_delayed_threads(void) delayed_insert *tmp; while ((tmp=it++)) { - /* Ensure that the thread doesn't kill itself while we are looking at it */ - pthread_mutex_lock(&tmp->mutex); tmp->thd.killed=1; if (tmp->thd.mysys_var) { @@ -1201,7 +1199,6 @@ void kill_delayed_threads(void) } pthread_mutex_unlock(&tmp->thd.mysys_var->mutex); } - pthread_mutex_unlock(&tmp->mutex); } VOID(pthread_mutex_unlock(&LOCK_delayed_insert)); // For unlink from list } -- cgit v1.2.1