From c8a6868907e88f9f47705248ee32fc4601e99e4b Mon Sep 17 00:00:00 2001 From: Aravinda VK Date: Wed, 10 Jun 2015 14:47:21 +0530 Subject: [PATCH 65/73] tools/glusterfind: Cleanup session dir after delete Sessions directories are created in /var/lib/glusterd/glusterfind//, only dir is created since same session name can exists for two volumes. Now cleanup is added, dir will be removed if contains only one Volume. Change-Id: I236393659e63eb98342570e0255739f4adea4491 Signed-off-by: Aravinda VK BUG: 1229623 Reviewed-on: http://review.gluster.org/11157 Reviewed-on: http://review.gluster.org/11185 Reviewed-on: https://code.engineering.redhat.com/gerrit/50547 Reviewed-by: Saravanakumar Arumugam --- tools/glusterfind/src/main.py | 11 ++++++++++- tools/glusterfind/src/nodeagent.py | 10 ++++++++++ 2 files changed, 20 insertions(+), 1 deletions(-) diff --git a/tools/glusterfind/src/main.py b/tools/glusterfind/src/main.py index ccd2d22..4c1686c 100644 --- a/tools/glusterfind/src/main.py +++ b/tools/glusterfind/src/main.py @@ -9,7 +9,7 @@ # cases as published by the Free Software Foundation. import sys -from errno import ENOENT +from errno import ENOENT, ENOTEMPTY import time from multiprocessing import Process import os @@ -440,6 +440,15 @@ def mode_delete(session_dir, args): shutil.rmtree(os.path.join(session_dir, args.volume), onerror=handle_rm_error) + # If the session contains only this volume, then cleanup the + # session directory. If a session contains multiple volumes + # then os.rmdir will fail with ENOTEMPTY + try: + os.rmdir(session_dir) + except OSError as e: + if not e.errno == ENOTEMPTY: + logger.warn("Failed to delete session directory: %s" % e) + def mode_list(session_dir, args): """ diff --git a/tools/glusterfind/src/nodeagent.py b/tools/glusterfind/src/nodeagent.py index 2e8c2fc..e7ba4af 100644 --- a/tools/glusterfind/src/nodeagent.py +++ b/tools/glusterfind/src/nodeagent.py @@ -14,6 +14,7 @@ import os import logging from argparse import ArgumentParser, RawDescriptionHelpFormatter import urllib +from errno import ENOTEMPTY from utils import setup_logger, mkdirp, handle_rm_error import conf @@ -78,6 +79,15 @@ def mode_delete(args): shutil.rmtree(os.path.join(session_dir, args.volume), onerror=handle_rm_error) + # If the session contains only this volume, then cleanup the + # session directory. If a session contains multiple volumes + # then os.rmdir will fail with ENOTEMPTY + try: + os.rmdir(session_dir) + except OSError as e: + if not e.errno == ENOTEMPTY: + logger.warn("Failed to delete session directory: %s" % e) + def _get_args(): parser = ArgumentParser(formatter_class=RawDescriptionHelpFormatter, -- 1.7.1