diff options
| author | Venky Shankar <vshankar@redhat.com> | 2013-08-27 12:20:30 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2013-09-04 20:54:38 -0700 | 
| commit | b2e8a4517d63100e9527a1995ef24507192fc363 (patch) | |
| tree | 6e46d7af81f9820de83a717d5494ea68bd97e302 | |
| parent | e0fa0bb1b1e1758d2e68b4940939e87d438fa14f (diff) | |
gsyncd / geo-rep: maximum number of retries per changelog
With entry retries MAX_RETRIES is the threashold for the number
of times we retry a changelog. After hitting this limit, the
changelog is marked as processed after warning for incompleteness
in the log.
Change-Id: I777b71b4cdaa63335d9c936f2d64e5c0264a0f26
BUG: 1003803
Signed-off-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Tested-by: Amar Tumballi <amarts@redhat.com>
Reviewed-on: http://review.gluster.org/5758
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Avra Sengupta <asengupt@redhat.com>
Tested-by: Avra Sengupta <asengupt@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
| -rw-r--r-- | geo-replication/syncdaemon/master.py | 11 | 
1 files changed, 11 insertions, 0 deletions
diff --git a/geo-replication/syncdaemon/master.py b/geo-replication/syncdaemon/master.py index d33e4ed3017..f18a60e6f49 100644 --- a/geo-replication/syncdaemon/master.py +++ b/geo-replication/syncdaemon/master.py @@ -580,6 +580,9 @@ class GMasterChangelogMixin(GMasterCommon):      # flat directory heirarchy for gfid based access      FLAT_DIR_HIERARCHY = '.' +    # maximum retries per changelog before giving up +    MAX_RETRIES = 10 +      def fallback_xsync(self):          logging.info('falling back to xsync mode')          gconf.configinterface.set('change-detector', 'xsync') @@ -734,6 +737,7 @@ class GMasterChangelogMixin(GMasterCommon):      def process(self, changes, done=1):          for change in changes: +            tries = 0              retry = False              while True:                  logging.debug('processing change %s' % change) @@ -741,6 +745,13 @@ class GMasterChangelogMixin(GMasterCommon):                      self.sync_done()                      break                  retry = True +                tries += 1 +                if tries == self.MAX_RETRIES: +                    logging.warn('changelog %s could not be processed - moving on...' % os.path.basename(change)) +                    self.sync_done() +                    if done: +                        self.master.server.changelog_done(change) +                    break                  # it's either entry_ops() or Rsync that failed to do it's                  # job. Mostly it's entry_ops() [which currently has a problem                  # of failing to create an entry but failing to return an errno]  | 
