diff options
author | Monty <monty@mariadb.org> | 2017-12-07 21:28:00 +0200 |
---|---|---|
committer | Monty <monty@mariadb.org> | 2017-12-08 13:46:23 +0200 |
commit | c2118a08b144c95cd4d88a080eaa70abd49f3740 (patch) | |
tree | fd888e63678a87c194b5208a07a8cbe06a51c72d /sql/event_scheduler.cc | |
parent | 3574f9c7bc74ae1dd87b442b70929f30e6f95c8e (diff) | |
download | mariadb-git-c2118a08b144c95cd4d88a080eaa70abd49f3740.tar.gz |
Move all kill mutex protection to LOCK_thd_kill
LOCK_thd_data was used to protect both THD data and
ensure that the THD is not deleted while it was in use
This patch moves the THD delete protection to LOCK_thd_kill,
which already protects the THD for kill.
The benefits are:
- More well defined what LOCK_thd_data protects
- LOCK_thd_data usage is now much simpler and easier to verify
- Less chance of deadlocks in SHOW PROCESS LIST as there is less
chance of interactions between mutexes
- Remove not needed LOCK_thread_count from
thd_get_error_context_description()
- Fewer mutex taken for thd->awake()
Other things:
- Don't take mysys->var mutex in show processlist to check if thread
is kill marked
- thd->awake() now automatically takes the LOCK_thd_kill mutex
(Simplifies code)
- Apc uses LOCK_thd_kill instead of LOCK_thd_data
Diffstat (limited to 'sql/event_scheduler.cc')
-rw-r--r-- | sql/event_scheduler.cc | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/sql/event_scheduler.cc b/sql/event_scheduler.cc index 1e808a17604..225a3172dc1 100644 --- a/sql/event_scheduler.cc +++ b/sql/event_scheduler.cc @@ -648,14 +648,11 @@ Event_scheduler::stop() state= STOPPING; DBUG_PRINT("info", ("Scheduler thread has id %lu", (ulong) scheduler_thd->thread_id)); - /* Lock from delete */ - mysql_mutex_lock(&scheduler_thd->LOCK_thd_data); /* This will wake up the thread if it waits on Queue's conditional */ sql_print_information("Event Scheduler: Killing the scheduler thread, " "thread id %lu", (ulong) scheduler_thd->thread_id); scheduler_thd->awake(KILL_CONNECTION); - mysql_mutex_unlock(&scheduler_thd->LOCK_thd_data); /* thd could be 0x0, when shutting down */ sql_print_information("Event Scheduler: " |