diff options
author | Mohit Agrawal <moagrawa@redhat.com> | 2018-02-10 12:25:15 +0530 |
---|---|---|
committer | Jeff Darcy <jeff@pl.atyp.us> | 2018-02-15 17:03:20 +0000 |
commit | b313d97faa766443a7f8128b6e19f3d2f1b267dd (patch) | |
tree | 6af84081aee75fa08c8ceecde4c15a2791863e52 /xlators/features/changelog | |
parent | 9d0d1fdd091d754149242fd4389b964695aacf13 (diff) |
glusterfsd: Memleak in glusterfsd process while brick mux is on
Problem: At the time of stopping the volume while brick multiplex is
enabled memory is not cleanup from all server side xlators.
Solution: To cleanup memory for all server side xlators call fini
in glusterfs_handle_terminate after send GF_EVENT_CLEANUP
notification to top xlator.
BUG: 1544090
Change-Id: Ifa1525e25b697371276158705026b421b4f81140
Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
Diffstat (limited to 'xlators/features/changelog')
-rw-r--r-- | xlators/features/changelog/src/changelog-rpc-common.c | 4 | ||||
-rw-r--r-- | xlators/features/changelog/src/changelog.c | 9 |
2 files changed, 5 insertions, 8 deletions
diff --git a/xlators/features/changelog/src/changelog-rpc-common.c b/xlators/features/changelog/src/changelog-rpc-common.c index 7bd5b688fa5..1745f218b08 100644 --- a/xlators/features/changelog/src/changelog-rpc-common.c +++ b/xlators/features/changelog/src/changelog-rpc-common.c @@ -275,6 +275,10 @@ changelog_rpc_server_destroy (xlator_t *this, rpcsvc_t *rpc, char *sockfile, (void) rpcsvc_unregister_notify (rpc, fn, this); sys_unlink (sockfile); + if (rpc->rxpool) { + mem_pool_destroy (rpc->rxpool); + rpc->rxpool = NULL; + } GF_FREE (rpc); } diff --git a/xlators/features/changelog/src/changelog.c b/xlators/features/changelog/src/changelog.c index 10a149232c2..21de0fbc0c6 100644 --- a/xlators/features/changelog/src/changelog.c +++ b/xlators/features/changelog/src/changelog.c @@ -2111,14 +2111,6 @@ notify (xlator_t *this, int event, void *data, ...) if (!priv) goto out; - if (event == GF_EVENT_CLEANUP) { - /* terminate helper threads */ - changelog_cleanup_helper_threads (this, priv); - - /* terminate RPC server/threads */ - changelog_cleanup_rpc_threads (this, priv); - } - if (event == GF_EVENT_TRANSLATOR_OP) { dict = data; @@ -2922,6 +2914,7 @@ fini (xlator_t *this) } this->private = NULL; + this->local_pool = NULL; return; } |