From 8b945a14193825f98b6591ae34e5a6681f5ba04c Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Fri, 27 Jan 2012 00:39:23 +0100 Subject: [PATCH] close callbacks prior to closing connection to avoid potential race when e.g timer callback and connection_destroy run in parallel --- sql/threadpool_win.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sql/threadpool_win.cc b/sql/threadpool_win.cc index ae186a614ee..b4c73e6be63 100644 --- a/sql/threadpool_win.cc +++ b/sql/threadpool_win.cc @@ -404,11 +404,6 @@ void set_wait_timeout(connection_t *connection, ulonglong old_timeout) /* Connection destructor */ void destroy_connection(connection_t *connection) { - if (connection->thd) - { - threadpool_remove_connection(connection->thd); - } - if (connection->io) { WaitForThreadpoolIoCallbacks(connection->io, TRUE); @@ -427,6 +422,11 @@ void destroy_connection(connection_t *connection) WaitForThreadpoolTimerCallbacks(connection->timer, TRUE); CloseThreadpoolTimer(connection->timer); } + + if (connection->thd) + { + threadpool_remove_connection(connection->thd); + } DestroyThreadpoolEnvironment(&connection->callback_environ); }