diff options
author | Kristian Nielsen <knielsen@knielsen-hq.org> | 2017-01-17 12:24:55 +0100 |
---|---|---|
committer | Kristian Nielsen <knielsen@knielsen-hq.org> | 2017-01-17 12:24:55 +0100 |
commit | 3e589d4b8edf3d435a44cf71419a8355fe284f8e (patch) | |
tree | caf7a3b07a6be4470a98c0d3bb2f825e6195647f | |
parent | 66744f4540c464413055a79111c34449e8381618 (diff) | |
download | mariadb-git-3e589d4b8edf3d435a44cf71419a8355fe284f8e.tar.gz |
MDEV-11811: dual master with parallel replication memory leak in write master
Gtid_list_log_event::do_apply_event() did not free_root(thd->mem_root).
It can allocate on this in record_gtid(), and in some scenarios there is
nothing else that does free_root(), leading to temporary memory leak until
stop of SQL thread. One scenario is in circular replication with only one
master active. The active master receives only its own events on the slave,
all of which are ignored. But whenever the SQL thread catches up with the IO
thread, a Gtid_list_log_event is applied, leading to the leak.
-rw-r--r-- | sql/log_event.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/log_event.cc b/sql/log_event.cc index d311297f8a8..14f6bb20b47 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -6915,6 +6915,7 @@ Gtid_list_log_event::do_apply_event(rpl_group_info *rgi) rli->abort_slave= true; rli->stop_for_until= true; } + free_root(thd->mem_root, MYF(MY_KEEP_PREALLOC)); return ret; } |