diff options
-rw-r--r-- | geo-replication/gsyncd.conf.in | 6 | ||||
-rw-r--r-- | geo-replication/syncdaemon/master.py | 22 |
2 files changed, 18 insertions, 10 deletions
diff --git a/geo-replication/gsyncd.conf.in b/geo-replication/gsyncd.conf.in index bd04400ff69..ce4ef9b663a 100644 --- a/geo-replication/gsyncd.conf.in +++ b/geo-replication/gsyncd.conf.in @@ -169,6 +169,12 @@ help=Do not sync deletes in Slave value = help= +[gfid-conflict-resolution] +value = true +validation=bool +type=bool +help=Disables automatic gfid conflict resolution while syncing + [working-dir] value = ${gsyncd_miscdir}/${master}_${primary_slave_host}_${slavevol}/ template=true diff --git a/geo-replication/syncdaemon/master.py b/geo-replication/syncdaemon/master.py index 7985aac5439..3ca60c65a07 100644 --- a/geo-replication/syncdaemon/master.py +++ b/geo-replication/syncdaemon/master.py @@ -1163,16 +1163,18 @@ class GMasterChangelogMixin(GMasterCommon): self.status.inc_value("entry", len(entries)) failures = self.slave.server.entry_ops(entries) - count = 0 - while failures and count < self.MAX_OE_RETRIES: - count += 1 - self.handle_entry_failures(failures, entries) - logging.info("Retry original entries. count = %s" % count) - failures = self.slave.server.entry_ops(entries) - if not failures: - logging.info("Sucessfully fixed all entry ops with gfid " - "mismatch") - break + + if gconf.get("gfid-conflict-resolution"): + count = 0 + while failures and count < self.MAX_OE_RETRIES: + count += 1 + self.handle_entry_failures(failures, entries) + logging.info("Retry original entries. count = %s" % count) + failures = self.slave.server.entry_ops(entries) + if not failures: + logging.info("Sucessfully fixed all entry ops with " + "gfid mismatch") + break self.log_failures(failures, 'gfid', gauxpfx(), 'ENTRY') self.status.dec_value("entry", len(entries)) |