summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--geo-replication/syncdaemon/gconf.py6
-rw-r--r--geo-replication/syncdaemon/master.py18
2 files changed, 19 insertions, 5 deletions
diff --git a/geo-replication/syncdaemon/gconf.py b/geo-replication/syncdaemon/gconf.py
index 1fc7c381bc4..39a70a650b3 100644
--- a/geo-replication/syncdaemon/gconf.py
+++ b/geo-replication/syncdaemon/gconf.py
@@ -21,5 +21,11 @@ class GConf(object):
log_exit = False
permanent_handles = []
log_metadata = {}
+ """One variable is sufficient to track the
+ switching of worker to ACTIVE. Two variables
+ are intentionally used to track worker going
+ to PASSIVE as well mainly for debugging"""
+ active_earlier = False
+ passive_earlier = False
gconf = GConf()
diff --git a/geo-replication/syncdaemon/master.py b/geo-replication/syncdaemon/master.py
index 5b8abc5fd9f..1bc2450c101 100644
--- a/geo-replication/syncdaemon/master.py
+++ b/geo-replication/syncdaemon/master.py
@@ -441,6 +441,7 @@ class GMasterCommon(object):
t.start()
def mgmt_lock(self):
+
"""Take management volume lock """
fd = None
bname = str(self.uuid) + "_" + str(gconf.slave_id) + "_subvol_" \
@@ -473,10 +474,16 @@ class GMasterCommon(object):
os.close(fd)
if isinstance(ex, IOError) and ex.errno in (EACCES, EAGAIN):
# cannot grab, it's taken
- logging.debug("Lock held by someother worker process")
+ if not gconf.passive_earlier:
+ gconf.passive_earlier = True
+ logging.info("Didn't get lock : %s : Becoming PASSIVE"
+ % gconf.local_path)
return False
raise
- logging.debug("Got the lock")
+
+ if not gconf.active_earlier:
+ gconf.active_earlier = True
+ logging.info("Got lock : %s : Becoming ACTIVE" % gconf.local_path)
return True
def should_crawl(self):
@@ -1123,8 +1130,9 @@ class GMasterChangeloghistoryMixin(GMasterChangelogMixin):
self.status.set_worker_crawl_status("History Crawl")
purge_time = self.get_purge_time()
- logging.info('starting history crawl... turns: %s, stime: %s'
- % (self.history_turns, repr(purge_time)))
+ end_time = int(time.time())
+ logging.info('starting history crawl... turns: %s, stime: %s, etime: %s'
+ % (self.history_turns, repr(purge_time), repr(end_time)))
if not purge_time or purge_time == URXTIME:
logging.info("stime not available, abandoning history crawl")
@@ -1138,7 +1146,7 @@ class GMasterChangeloghistoryMixin(GMasterChangelogMixin):
ret, actual_end = self.changelog_agent.history(
changelog_path,
purge_time[0],
- self.changelog_register_time,
+ end_time,
int(gconf.sync_jobs))
# scan followed by getchanges till scan returns zero.