diff options
author | Nirbhay Choubey <nirbhay@mariadb.com> | 2015-01-09 00:32:28 -0500 |
---|---|---|
committer | Nirbhay Choubey <nirbhay@mariadb.com> | 2015-01-09 00:32:28 -0500 |
commit | dd80c22c2d97d81abbf08c05576ce420708eccce (patch) | |
tree | 5f3a69bfa2461bcdc69cd791393e2f471102c3fc /sql/keycaches.cc | |
parent | 54b26b494b76804dbaf9f016ccae9c505d0ed4b3 (diff) | |
download | mariadb-git-dd80c22c2d97d81abbf08c05576ce420708eccce.tar.gz |
MDEV-7123 : MariaDB 10.0.14 Galera node shutdown with signal 11
wsrep-patch uses same connection name for constructing Master_info
objects. As a result all existing wsrep Master_info objects refer
to same rpl_filter object. This could lead to race when multiple
threads try to delete/destruct Master_info object, as they would
all try to delete the same relay_log object.
Fixed by adding a check in Master_info's destructor to not free
the "wsrep" rpl_filter, so that its reused by current & subsequent
wsrep threads and later reclaimed by free_all_rpl_filters() during
server shutdown.
Diffstat (limited to 'sql/keycaches.cc')
-rw-r--r-- | sql/keycaches.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/keycaches.cc b/sql/keycaches.cc index 120aa7e1029..a559c99bbd8 100644 --- a/sql/keycaches.cc +++ b/sql/keycaches.cc @@ -223,6 +223,7 @@ Rpl_filter *get_or_create_rpl_filter(const char *name, uint length) void free_rpl_filter(const char *name, Rpl_filter *filter) { delete filter; + filter= 0; } void free_all_rpl_filters() |