summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2018-05-24 22:36:40 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2018-05-24 22:36:40 +0300
commit6f01c42fd6183afddf524cc66e3b7718dcdf6388 (patch)
tree6ff70de662fc8b187d675f39817db53a0b6a73ab
parent96cee524fe2af190b9842264731163064ddd6cbe (diff)
parent1c8c6bcd6f984d05d6f68d332b1e79c801e02003 (diff)
downloadmariadb-git-6f01c42fd6183afddf524cc66e3b7718dcdf6388.tar.gz
Merge 10.2 into 10.3
-rw-r--r--storage/innobase/handler/ha_innodb.cc2
-rw-r--r--storage/innobase/include/srv0srv.h5
-rw-r--r--storage/innobase/srv/srv0srv.cc9
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