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:
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user