MDEV-33046 - delete unnecessary synchronization with dict_stats_mutex
Timer has internal synchronization, so that calling set_time concurrently is not a problem.
This commit is contained in:
parent
a3dd7ea09f
commit
7cc332b724
@ -411,7 +411,6 @@ next_table_id:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static tpool::timer* dict_stats_timer;
|
static tpool::timer* dict_stats_timer;
|
||||||
static std::mutex dict_stats_mutex;
|
|
||||||
|
|
||||||
static void dict_stats_func(void*)
|
static void dict_stats_func(void*)
|
||||||
{
|
{
|
||||||
@ -422,26 +421,15 @@ static void dict_stats_func(void*)
|
|||||||
|
|
||||||
void dict_stats_start()
|
void dict_stats_start()
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lk(dict_stats_mutex);
|
DBUG_ASSERT(!dict_stats_timer);
|
||||||
if (!dict_stats_timer)
|
dict_stats_timer= srv_thread_pool->create_timer(dict_stats_func);
|
||||||
dict_stats_timer= srv_thread_pool->create_timer(dict_stats_func);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void dict_stats_schedule(int ms)
|
static void dict_stats_schedule(int ms)
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lk(dict_stats_mutex, std::defer_lock);
|
DBUG_ASSERT(dict_stats_timer);
|
||||||
/*
|
dict_stats_timer->set_time(ms,0);
|
||||||
Use try_lock() to avoid deadlock in dict_stats_shutdown(), which
|
|
||||||
uses dict_stats_mutex too. If there is simultaneous timer reschedule,
|
|
||||||
the first one will win, which is fine.
|
|
||||||
*/
|
|
||||||
if (!lk.try_lock())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (dict_stats_timer)
|
|
||||||
dict_stats_timer->set_time(ms,0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void dict_stats_schedule_now()
|
void dict_stats_schedule_now()
|
||||||
@ -452,7 +440,6 @@ void dict_stats_schedule_now()
|
|||||||
/** Shut down the dict_stats_thread. */
|
/** Shut down the dict_stats_thread. */
|
||||||
void dict_stats_shutdown()
|
void dict_stats_shutdown()
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lk(dict_stats_mutex);
|
|
||||||
delete dict_stats_timer;
|
delete dict_stats_timer;
|
||||||
dict_stats_timer= 0;
|
dict_stats_timer= 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user