Commit 1c8c6bcd authored by Marko Mäkelä's avatar Marko Mäkelä

MDEV-13779 InnoDB fails to shut down purge, causing hang

thd_destructor_proxy(): Ensure that purge actually exits,
like the logic should have been ever since MDEV-14080.

srv_purge_shutdown(): A new function to wait for the
purge coordinator to exit. Before exiting, the
purge coordinator will ensure that all purge workers have exited.
parent 52df8040
......@@ -354,7 +354,7 @@ thd_destructor_proxy(void *)
need to be purged, so they have to be shut down before purge
threads if slow shutdown is requested. */
srv_shutdown_bg_undo_sources();
srv_purge_wakeup();
srv_purge_shutdown();
destroy_thd(thd);
mysql_cond_destroy(&thd_destructor_cond);
......
......@@ -3,7 +3,7 @@
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2008, 2009, Google Inc.
Copyright (c) 2009, Percona Inc.
Copyright (c) 2013, 2017, MariaDB Corporation.
Copyright (c) 2013, 2018, MariaDB Corporation.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
......@@ -920,6 +920,9 @@ srv_release_threads(enum srv_thread_type type, ulint n);
void
srv_purge_wakeup();
/** Shut down the purge threads. */
void srv_purge_shutdown();
/** Check if tablespace is being truncated.
(Ignore system-tablespace as we don't re-create the tablespace
and so some of the action that are suppressed by this function
......
......@@ -2963,6 +2963,15 @@ srv_purge_wakeup()
|| srv_sys.n_threads_active[SRV_PURGE]));
}
/** Shut down the purge threads. */
void srv_purge_shutdown()
{
do {
ut_ad(!srv_undo_sources);
srv_purge_wakeup();
} while (srv_sys.sys_threads[SRV_PURGE_SLOT].in_use);
}
/** Check if tablespace is being truncated.
(Ignore system-tablespace as we don't re-create the tablespace
and so some of the action that are suppressed by this function
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment