Commit 08340721 authored by Vladislav Vaintroub's avatar Vladislav Vaintroub

ensure that lock is held, whenever active thread counter changes.

It was not the case inside listener routine.
parent 0e3981a8
......@@ -591,9 +591,7 @@ static connection_t * listener(worker_thread_t *current_thread,
if (thread_group->shutdown)
break;
thread_group->active_thread_count--;
cnt = io_poll_wait(thread_group->pollfd, ev, MAX_EVENTS, -1);
thread_group->active_thread_count++;
if (cnt <=0)
{
......@@ -1015,11 +1013,13 @@ connection_t *get_event(worker_thread_t *current_thread,
if(!thread_group->listener)
{
thread_group->listener= current_thread;
thread_group->active_thread_count--;
mysql_mutex_unlock(&thread_group->mutex);
connection = listener(current_thread, thread_group);
mysql_mutex_lock(&thread_group->mutex);
thread_group->active_thread_count++;
/* There is no listener anymore, it just returned. */
thread_group->listener= NULL;
break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment