summaryrefslogtreecommitdiffstats
path: root/xlators/features/marker/utils/syncdaemon/syncdutils.py
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/features/marker/utils/syncdaemon/syncdutils.py')
-rw-r--r--xlators/features/marker/utils/syncdaemon/syncdutils.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/xlators/features/marker/utils/syncdaemon/syncdutils.py b/xlators/features/marker/utils/syncdaemon/syncdutils.py
index c8f751d33..4bf51da74 100644
--- a/xlators/features/marker/utils/syncdaemon/syncdutils.py
+++ b/xlators/features/marker/utils/syncdaemon/syncdutils.py
@@ -4,7 +4,7 @@ import time
import fcntl
import shutil
import logging
-from threading import Thread as baseThread
+from threading import Lock, Thread as baseThread
from errno import EACCES, EAGAIN
from signal import SIGTERM, SIGKILL
from time import sleep
@@ -88,7 +88,10 @@ def grabpidfile(fname=None, setpid=True):
content = str(os.getpid()) + '\n'
return grabfile(fname, content=content)
-def finalize(*a):
+final_lock = Lock()
+
+def finalize(*a, **kw):
+ final_lock.acquire()
if getattr(gconf, 'pid_file', None):
rm_pidf = gconf.pid_file_owned
if gconf.cpid:
@@ -117,6 +120,7 @@ def finalize(*a):
shutil.rmtree(gconf.ssh_ctl_dir)
sys.stdout.flush()
sys.stderr.flush()
+ os._exit(kw.get('exval', 0))
def log_raise_exception(excont):
exc = sys.exc_info()[1]
@@ -150,8 +154,7 @@ class Thread(baseThread):
try:
log_raise_exception(excont)
finally:
- finalize()
- os._exit(excont.exval)
+ finalize(exval = excont.exval)
kw['target'] = twrap
baseThread.__init__(self, *a, **kw)
self.setDaemon(True)