diff options
author | Kristian Nielsen <knielsen@knielsen-hq.org> | 2016-03-03 08:40:49 +0100 |
---|---|---|
committer | Kristian Nielsen <knielsen@knielsen-hq.org> | 2016-03-03 08:53:42 +0100 |
commit | f8251911a44f6b65c2377e9945e208e240dfec33 (patch) | |
tree | b4014f27750f1349a5b8f7faa01021bcc20af1fb | |
parent | c3071af5f011eca8dd253e73fa7a4ef65ac5de8d (diff) | |
download | mariadb-git-f8251911a44f6b65c2377e9945e208e240dfec33.tar.gz |
MDEV-9595: Shutdown takes forever with many replication channels
There was a race between end_slave() and cleanup code at the end of
handle_slave_sql(). This could cause access to master_info_index and
global_rpl_thread_pool after they had been freed.
Fix by skipping that cleanup if server shutdown is in progress, as is done
in other parts of the code as well (the cleanup, which stops worker threads
that are not needed anymore, is redundant anyway when the server is shutting
down).
-rw-r--r-- | sql/slave.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/slave.cc b/sql/slave.cc index e3209ab31f5..651d5ba0171 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -4848,6 +4848,7 @@ err_during_init: */ mysql_mutex_lock(&LOCK_active_mi); if (opt_slave_parallel_threads > 0 && + master_info_index &&// master_info_index is set to NULL on server shutdown !master_info_index->any_slave_sql_running()) rpl_parallel_inactivate_pool(&global_rpl_thread_pool); mysql_mutex_unlock(&LOCK_active_mi); |