summaryrefslogtreecommitdiff
path: root/sql/sql_connect.cc
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@mariadb.org>2019-05-19 01:04:22 +0400
committerSergey Vojtovich <svoj@mariadb.org>2019-05-21 17:55:09 +0400
commit6900aaf417c6540a22ab74c6badaf42cd37e43e1 (patch)
treebea97b94460d55d507180c42535cc658b6d7400a /sql/sql_connect.cc
parent8d9d4aa6d6db96d09006ea268cf9c29f46c9f132 (diff)
downloadmariadb-git-6900aaf417c6540a22ab74c6badaf42cd37e43e1.tar.gz
Simplified away init_new_connection_thread()
It was meaningful only for one-thread-per-connection scheduler anyway, so call init_new_connection_handler_thread() directly from handle_one_connection(). It was somewhat harmful for no-threads scheduler, because it'd attempt to detach main thread on AIX_3_2 and Siemens unix (and DEC OSF/1 3.2 too). Also it does duplicate my_thread_init() call, which may produce a warning under EXTRA_DEBUG_THREADS. start_wsrep_THD() shouldn't have called it at all: it already detached and called my_thread_init(). Part of MDEV-19515 - Improve connect speed
Diffstat (limited to 'sql/sql_connect.cc')
-rw-r--r--sql/sql_connect.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/sql/sql_connect.cc b/sql/sql_connect.cc
index 25a260b2eba..3646aee0f03 100644
--- a/sql/sql_connect.cc
+++ b/sql/sql_connect.cc
@@ -1303,6 +1303,14 @@ pthread_handler_t handle_one_connection(void *arg)
mysql_thread_set_psi_id(connect->thread_id);
+ if (init_new_connection_handler_thread())
+ {
+ scheduler_functions *scheduler= connect->scheduler;
+ connect->close_with_error(0, 0, ER_OUT_OF_RESOURCES);
+ scheduler->end_thread(0, 0);
+ return 0;
+ }
+
do_handle_one_connection(connect);
return 0;
}
@@ -1340,8 +1348,7 @@ void do_handle_one_connection(CONNECT *connect)
{
ulonglong thr_create_utime= microsecond_interval_timer();
THD *thd;
- if (connect->scheduler->init_new_connection_thread() ||
- !(thd= connect->create_thd(NULL)))
+ if (!(thd= connect->create_thd(NULL)))
{
scheduler_functions *scheduler= connect->scheduler;
connect->close_with_error(0, 0, ER_OUT_OF_RESOURCES);