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.
This commit is contained in:
parent
52df804026
commit
1c8c6bcd6f
@ -354,7 +354,7 @@ thd_destructor_proxy(void *)
|
|||||||
need to be purged, so they have to be shut down before purge
|
need to be purged, so they have to be shut down before purge
|
||||||
threads if slow shutdown is requested. */
|
threads if slow shutdown is requested. */
|
||||||
srv_shutdown_bg_undo_sources();
|
srv_shutdown_bg_undo_sources();
|
||||||
srv_purge_wakeup();
|
srv_purge_shutdown();
|
||||||
|
|
||||||
destroy_thd(thd);
|
destroy_thd(thd);
|
||||||
mysql_cond_destroy(&thd_destructor_cond);
|
mysql_cond_destroy(&thd_destructor_cond);
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
Copyright (c) 2008, 2009, Google Inc.
|
Copyright (c) 2008, 2009, Google Inc.
|
||||||
Copyright (c) 2009, Percona 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
|
Portions of this file contain modifications contributed and copyrighted by
|
||||||
Google, Inc. Those modifications are gratefully acknowledged and are described
|
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
|
void
|
||||||
srv_purge_wakeup();
|
srv_purge_wakeup();
|
||||||
|
|
||||||
|
/** Shut down the purge threads. */
|
||||||
|
void srv_purge_shutdown();
|
||||||
|
|
||||||
/** Check if tablespace is being truncated.
|
/** Check if tablespace is being truncated.
|
||||||
(Ignore system-tablespace as we don't re-create the tablespace
|
(Ignore system-tablespace as we don't re-create the tablespace
|
||||||
and so some of the action that are suppressed by this function
|
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]));
|
|| 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.
|
/** Check if tablespace is being truncated.
|
||||||
(Ignore system-tablespace as we don't re-create the tablespace
|
(Ignore system-tablespace as we don't re-create the tablespace
|
||||||
and so some of the action that are suppressed by this function
|
and so some of the action that are suppressed by this function
|
||||||
|
Loading…
x
Reference in New Issue
Block a user