diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2018-05-24 22:36:40 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2018-05-24 22:36:40 +0300 |
commit | 6f01c42fd6183afddf524cc66e3b7718dcdf6388 (patch) | |
tree | 6ff70de662fc8b187d675f39817db53a0b6a73ab | |
parent | 96cee524fe2af190b9842264731163064ddd6cbe (diff) | |
parent | 1c8c6bcd6f984d05d6f68d332b1e79c801e02003 (diff) | |
download | mariadb-git-6f01c42fd6183afddf524cc66e3b7718dcdf6388.tar.gz |
Merge 10.2 into 10.3
-rw-r--r-- | storage/innobase/handler/ha_innodb.cc | 2 | ||||
-rw-r--r-- | storage/innobase/include/srv0srv.h | 5 | ||||
-rw-r--r-- | storage/innobase/srv/srv0srv.cc | 9 |
3 files changed, 14 insertions, 2 deletions
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 0e613edd196..c991c3de587 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -326,7 +326,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); diff --git a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h index 1d52aff6c11..7c22015511a 100644 --- a/storage/innobase/include/srv0srv.h +++ b/storage/innobase/include/srv0srv.h @@ -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 @@ -900,6 +900,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 diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc index d902a60d5ea..44cb3276561 100644 --- a/storage/innobase/srv/srv0srv.cc +++ b/storage/innobase/srv/srv0srv.cc @@ -2826,6 +2826,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 |