summaryrefslogtreecommitdiff
path: root/sql/sql_connect.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_connect.cc')
-rw-r--r--sql/sql_connect.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/sql/sql_connect.cc b/sql/sql_connect.cc
index 4d09dab392b..733d281efd5 100644
--- a/sql/sql_connect.cc
+++ b/sql/sql_connect.cc
@@ -1360,6 +1360,14 @@ void do_handle_one_connection(CONNECT *connect)
return;
}
+ DBUG_EXECUTE_IF("CONNECT_wait",
+ {
+ extern MYSQL_SOCKET unix_sock;
+ DBUG_ASSERT(unix_sock.fd >= 0);
+ while (unix_sock.fd >= 0)
+ my_sleep(1000);
+ });
+
/*
If a thread was created to handle this connection:
increment slow_launch_threads counter if it took more than
@@ -1373,10 +1381,10 @@ void do_handle_one_connection(CONNECT *connect)
if (launch_time >= slow_launch_time*1000000L)
statistic_increment(slow_launch_threads, &LOCK_status);
}
- delete connect;
- /* Make THD visible in show processlist */
- server_threads.insert(thd);
+ server_threads.insert(thd); // Make THD visible in show processlist
+
+ delete connect; // must be after server_threads.insert, see close_connections()
thd->thr_create_utime= thr_create_utime;
/* We need to set this because of time_out_user_resource_limits */
@@ -1482,6 +1490,7 @@ CONNECT::~CONNECT()
{
if (vio)
vio_delete(vio);
+ count--;
}