diff options
Diffstat (limited to 'geo-replication/syncdaemon')
| -rw-r--r-- | geo-replication/syncdaemon/gsyncd.py | 1 | ||||
| -rw-r--r-- | geo-replication/syncdaemon/monitor.py | 9 | ||||
| -rw-r--r-- | geo-replication/syncdaemon/resource.py | 8 | 
3 files changed, 16 insertions, 2 deletions
diff --git a/geo-replication/syncdaemon/gsyncd.py b/geo-replication/syncdaemon/gsyncd.py index 7d463ad23f3..7ddd51267a6 100644 --- a/geo-replication/syncdaemon/gsyncd.py +++ b/geo-replication/syncdaemon/gsyncd.py @@ -227,6 +227,7 @@ def main_i():      op.add_option('--ignore-deletes', default=False, action='store_true')      op.add_option('--isolated-slave', default=False, action='store_true')      op.add_option('--use-rsync-xattrs', default=False, action='store_true') +    op.add_option('--pause-on-start', default=False, action='store_true')      op.add_option('-L', '--log-level', metavar='LVL')      op.add_option('-r', '--remote-gsyncd', metavar='CMD',                    default=os.path.abspath(sys.argv[0])) diff --git a/geo-replication/syncdaemon/monitor.py b/geo-replication/syncdaemon/monitor.py index f485fe18605..f3700c1a390 100644 --- a/geo-replication/syncdaemon/monitor.py +++ b/geo-replication/syncdaemon/monitor.py @@ -73,10 +73,11 @@ class Monitor(object):      """class which spawns and manages gsyncd workers"""      ST_INIT = 'Initializing...' +    ST_INIT_PAUSE = 'Initializing...(Paused)'      ST_STABLE = 'Stable'      ST_FAULTY = 'faulty'      ST_INCON = 'inconsistent' -    _ST_ORD = [ST_STABLE, ST_INIT, ST_FAULTY, ST_INCON] +    _ST_ORD = [ST_STABLE, ST_INIT, ST_INIT_PAUSE, ST_FAULTY, ST_INCON]      def __init__(self):          self.lock = Lock() @@ -128,7 +129,11 @@ class Monitor(object):          due to the keep-alive thread)          """ -        self.set_state(self.ST_INIT, w) +        if gconf.pause_on_start: +            self.set_state(self.ST_INIT_PAUSE, w) +        else: +            self.set_state(self.ST_INIT, w) +          ret = 0          def nwait(p, o=0): diff --git a/geo-replication/syncdaemon/resource.py b/geo-replication/syncdaemon/resource.py index dadfc965336..8192a54b0d4 100644 --- a/geo-replication/syncdaemon/resource.py +++ b/geo-replication/syncdaemon/resource.py @@ -13,6 +13,7 @@ import os  import sys  import stat  import time +import signal  import fcntl  import errno  import types @@ -1290,6 +1291,13 @@ class GLUSTER(AbstractUrl, SlaveLocal, SlaveRemote):                  logging.debug("Changelog register failed: %s - %s" %                                (e.errno, e.strerror)) +            # Check if gsyncd restarted in pause state. If +            # yes, send SIGSTOP to negative of monitor pid +            # to go back to pause state. +            if gconf.pause_on_start: +                os.kill(-os.getppid(), signal.SIGSTOP) +                gconf.pause_on_start = False +              # oneshot: Try to use changelog history api, if not              # available switch to FS crawl              # Note: if config.change_detector is xsync then  | 
