diff options
| author | Ajeet Jha <ajha@redhat.com> | 2013-12-02 12:37:34 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2013-12-12 00:16:03 -0800 | 
| commit | f999c17da5a5353196e68e7a68af64f91df6b902 (patch) | |
| tree | d2e1df4111c492662f1e7eb5cfc6f0236af3818e /geo-replication/syncdaemon/gsyncd.py | |
| parent | 8f2fc6fb3a63ca87d82b6fa933f94fb1e3283a26 (diff) | |
gsyncd / geo-rep: geo-replication fixes
-> "threaded" hybrid crawl.
-> Enabling metatadata synchronization.
-> Handling EINVAL/ESTALE gracefully while syncing metadata.
-> Improvments to changelog crawl code.
-> Initial crawl changelog generation format.
-> No gsyncd restart when checkpoint updated.
-> Fix symlink handling in hybrid crawl.
-> Slave's xtime key is 'stime'.
-> tar+ssh as data synchronization.
-> Instead of 'raise', just log in warning level for xtime missing cases.
-> Fix for JSON object load failure
-> Get new config value after config value reset.
-> Skip already processed changelogs.
-> Saving status of each individual worker thread.
-> GFID fetch on slave for purges.
-> Add tar ssh keys and config options.
-> Fix nlink count when using backend.
-> Include "data" operation for hardlink.
-> Use changelog time prefix as slave's time.
-> Process changelogs in parallel.
Change-Id: I09fcbb2e2e418149a6d8435abd2ac6b2f015bb06
BUG: 1036539
Signed-off-by: Ajeet Jha <ajha@redhat.com>
Reviewed-on: http://review.gluster.org/6404
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'geo-replication/syncdaemon/gsyncd.py')
| -rw-r--r-- | geo-replication/syncdaemon/gsyncd.py | 10 | 
1 files changed, 10 insertions, 0 deletions
diff --git a/geo-replication/syncdaemon/gsyncd.py b/geo-replication/syncdaemon/gsyncd.py index 7fcc3165ac9..64c26a5d29d 100644 --- a/geo-replication/syncdaemon/gsyncd.py +++ b/geo-replication/syncdaemon/gsyncd.py @@ -191,6 +191,7 @@ def main_i():      op.add_option('--log-file-mbr',        metavar='LOGF',  type=str, action='callback', callback=store_abs)      op.add_option('--state-file',          metavar='STATF', type=str, action='callback', callback=store_abs)      op.add_option('--state-detail-file',   metavar='STATF', type=str, action='callback', callback=store_abs) +    op.add_option('--georep-session-working-dir', metavar='STATF', type=str, action='callback', callback=store_abs)      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') @@ -202,6 +203,7 @@ def main_i():      op.add_option('--local-id',            metavar='ID',    help=SUPPRESS_HELP, default='')      op.add_option('--local-path',          metavar='PATH',  help=SUPPRESS_HELP, default='')      op.add_option('-s', '--ssh-command',   metavar='CMD',   default='ssh') +    op.add_option('--ssh-command-tar',     metavar='CMD',   default='ssh')      op.add_option('--rsync-command',       metavar='CMD',   default='rsync')      op.add_option('--rsync-options',       metavar='OPTS',  default='')      op.add_option('--rsync-ssh-options',   metavar='OPTS',  default='--compress') @@ -228,6 +230,7 @@ def main_i():      op.add_option('--change-interval', metavar='SEC', type=int, default=3)      # working directory for changelog based mechanism      op.add_option('--working-dir', metavar='DIR', type=str, action='callback', callback=store_abs) +    op.add_option('--use-tarssh', default=False, action='store_true')      op.add_option('-c', '--config-file',   metavar='CONF',  type=str, action='callback', callback=store_local)      # duh. need to specify dest or value will be mapped to None :S @@ -474,8 +477,15 @@ def main_i():              GLogger._gsyncd_loginit(log_file=gconf.log_file, label='conf')              if confdata.op == 'set':                  logging.info('checkpoint %s set' % confdata.val) +                gcnf.delete('checkpoint_completed') +                gcnf.delete('checkpoint_target')              elif confdata.op == 'del':                  logging.info('checkpoint info was reset') +                # if it is removing 'checkpoint' then we need +                # to remove 'checkpoint_completed' and 'checkpoint_target' too +                gcnf.delete('checkpoint_completed') +                gcnf.delete('checkpoint_target') +          except IOError:              if sys.exc_info()[1].errno == ENOENT:                  # directory of log path is not present,  | 
