diff options
author | Sergey Vojtovich <svoj@mariadb.org> | 2019-01-20 02:32:35 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@mariadb.org> | 2019-01-28 17:39:07 +0400 |
commit | 3503fbbebf90cb0fe63993a66dad9bf97fb74c0a (patch) | |
tree | 1c39a1f4d4d694a8b2d1166cae48050fe82b6c1c /plugin/feedback | |
parent | 891be49a36ebb951cd90d64d1b4c1cc633af1fdf (diff) | |
download | mariadb-git-3503fbbebf90cb0fe63993a66dad9bf97fb74c0a.tar.gz |
Move THD list handling to THD_list
Implemented and integrated THD_list as a replacement for the global
thread list. It uses own mutex instead of LOCK_thread_count for THD
list protection.
Removed unused first_global_thread() and next_global_thread().
delayed_insert_threads is now protected by LOCK_delayed_insert. Although
this patch doesn't fix very wrong synchronization of this variable.
After this patch there are only 2 legitimate uses of LOCK_thread_count
left, both in mysqld.cc: thread_count and ready_to_exit.
Aim is to reduce usage of LOCK_thread_count and COND_thread_count.
Part of MDEV-15135.
Diffstat (limited to 'plugin/feedback')
-rw-r--r-- | plugin/feedback/sender_thread.cc | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/plugin/feedback/sender_thread.cc b/plugin/feedback/sender_thread.cc index b025879b6ee..591023d61fd 100644 --- a/plugin/feedback/sender_thread.cc +++ b/plugin/feedback/sender_thread.cc @@ -90,9 +90,7 @@ static int prepare_for_fill(TABLE_LIST *tables) in SHOW STATUS and we want to avoid skewing the statistics) */ thd->variables.pseudo_thread_id= thd->thread_id; - mysql_mutex_lock(&LOCK_thread_count); - threads.append(thd); - mysql_mutex_unlock(&LOCK_thread_count); + server_threads.insert(thd); thd->thread_stack= (char*) &tables; if (thd->store_globals()) return 1; @@ -258,12 +256,9 @@ ret: reset all thread local status variables to minimize the effect of the background thread on SHOW STATUS. */ - mysql_mutex_lock(&LOCK_thread_count); + server_threads.erase(thd); thd->set_status_var_init(); thd->killed= KILL_CONNECTION; - thd->unlink(); - mysql_cond_broadcast(&COND_thread_count); - mysql_mutex_unlock(&LOCK_thread_count); delete thd; thd= 0; } |