diff options
| -rw-r--r-- | xlators/features/marker/utils/syncdaemon/gsyncd.py | 6 | ||||
| -rw-r--r-- | xlators/features/marker/utils/syncdaemon/syncdutils.py | 11 | 
2 files changed, 9 insertions, 8 deletions
diff --git a/xlators/features/marker/utils/syncdaemon/gsyncd.py b/xlators/features/marker/utils/syncdaemon/gsyncd.py index ba4d7a6dda4..27c91858e0e 100644 --- a/xlators/features/marker/utils/syncdaemon/gsyncd.py +++ b/xlators/features/marker/utils/syncdaemon/gsyncd.py @@ -94,7 +94,7 @@ def startup(**kw):      GLogger.setup(label=kw.get('label'), **lkw)  def main(): -    signal.signal(signal.SIGTERM, lambda *a: (finalize(*a), os._exit(1))) +    signal.signal(signal.SIGTERM, lambda *a: finalize(*a, **{'exval': 1}))      GLogger.setup()      excont = FreeObject(exval = 0)      try: @@ -103,9 +103,7 @@ def main():          except:              log_raise_exception(excont)      finally: -        finalize() -        # force exit in non-main thread too -        os._exit(excont.exval) +        finalize(excont.exval)  def main_i():      rconf = {'go_daemon': 'should'} diff --git a/xlators/features/marker/utils/syncdaemon/syncdutils.py b/xlators/features/marker/utils/syncdaemon/syncdutils.py index c8f751d33f4..4bf51da746e 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)  | 
