1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-18 23:03:28 +03:00

Move thread re-initialisation out of cache_thread

It mostly duplicates code of do_handle_one_connection(). Move it there,
so that it is easier to simplify it in future.

Moved PSI_CALL_delete_current_thread()/_db_pop_() out of mutex. Call them
consistently in all cases, unlike before:
- called for reused threads
- called for flushed threads
- called for threads that go down after 5 minutes timeout
- not called for threads attempting to cache themselves during flush
- not called for threads attempting to cache themselves when cache is full

Part of MDEV-19515 - Improve connect speed
This commit is contained in:
Sergey Vojtovich
2019-05-18 23:01:44 +04:00
parent ebc55c8577
commit 34dfcbe3a6
3 changed files with 43 additions and 44 deletions

View File

@ -1426,8 +1426,36 @@ end_thread:
unlink_thd(thd);
if (IF_WSREP(thd->wsrep_applier, false) || !put_in_cache ||
!cache_thread(thd))
!(connect= cache_thread(thd)))
break;
if (!(connect->create_thd(thd)))
{
/* Out of resources. Free thread to get more resources */
connect->close_and_delete();
break;
}
delete connect;
/*
We have to call store_globals to update mysys_var->id and lock_info
with the new thread_id
*/
thd->store_globals();
/*
Create new instrumentation for the new THD job,
and attach it to this running pthread.
*/
PSI_CALL_set_thread(PSI_CALL_new_thread(key_thread_one_connection,
thd, thd->thread_id));
/* reset abort flag for the thread */
thd->mysys_var->abort= 0;
thd->thr_create_utime= microsecond_interval_timer();
thd->start_utime= thd->thr_create_utime;
server_threads.insert(thd);
}
delete thd;
}