summaryrefslogtreecommitdiffstats
path: root/geo-replication/syncdaemon/syncdutils.py
diff options
context:
space:
mode:
Diffstat (limited to 'geo-replication/syncdaemon/syncdutils.py')
-rw-r--r--geo-replication/syncdaemon/syncdutils.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/geo-replication/syncdaemon/syncdutils.py b/geo-replication/syncdaemon/syncdutils.py
index 292cd0aea19..4d981f9fe53 100644
--- a/geo-replication/syncdaemon/syncdutils.py
+++ b/geo-replication/syncdaemon/syncdutils.py
@@ -16,6 +16,7 @@ import fcntl
import shutil
import logging
import socket
+import subprocess
from threading import Lock, Thread as baseThread
from errno import EACCES, EAGAIN, EPIPE, ENOTCONN, ECONNABORTED
from errno import EINTR, ENOENT, EPERM, ESTALE, errorcode
@@ -189,12 +190,13 @@ def grabpidfile(fname=None, setpid=True):
final_lock = Lock()
-
+mntpt_list = []
def finalize(*a, **kw):
"""all those messy final steps we go trough upon termination
Do away with pidfile, ssh control dir and logging.
"""
+
final_lock.acquire()
if getattr(gconf, 'pid_file', None):
rm_pidf = gconf.pid_file_owned
@@ -234,6 +236,13 @@ def finalize(*a, **kw):
if sys.exc_info()[0] == OSError:
pass
+ """ Unmount if not done """
+ for mnt in mntpt_list:
+ p0 = subprocess.Popen (["umount", "-l", mnt], stderr=subprocess.PIPE)
+ _, errdata = p0.communicate()
+ if p0.returncode == 0:
+ os.rmdir(mnt)
+
if gconf.log_exit:
logging.info("exiting.")
sys.stdout.flush()
@@ -241,6 +250,7 @@ def finalize(*a, **kw):
os._exit(kw.get('exval', 0))
+
def log_raise_exception(excont):
"""top-level exception handler