diff options
authorAravinda VK <>2016-09-07 11:39:39 +0530
committerAravinda VK <>2016-09-15 01:22:15 -0700
commit07b566c06397f4b6a582a548357fabcc3b390535 (patch)
parentf466adc7c21578657baac0ec47e0eadc59608fe3 (diff)
geo-rep: Fix Geo-rep status if file not exists
If file not exists, gsyncd fails with following traceback Traceback (most recent call last): File "/usr/libexec/glusterfs/python/syncdaemon/", line 201, in main main_i() File "/usr/libexec/glusterfs/python/syncdaemon/", line 681, in main_i brick_status.print_status(checkpoint_time=checkpoint_time) File "/usr/libexec/glusterfs/python/syncdaemon/", line 343, in print_status for key, value in self.get_status(checkpoint_time).items(): File "/usr/libexec/glusterfs/python/syncdaemon/", line 262, in get_status with open(self.monitor_pid_file, "r+") as f: IOError: [Errno 2] No such file or directory: '/var/lib/glusterd/ geo-replication/master_node_slave/' If Georep status command this worker's status will not be displayed since not returning expected status output. > Reviewed-on: > Smoke: Gluster Build System <> > NetBSD-regression: NetBSD Build System <> > CentOS-regression: Gluster Build System <> > Reviewed-by: Kotresh HR <> BUG: 1374631 Change-Id: I600a2f5d9617f993d635b9bc6e393108500db5f9 Signed-off-by: Aravinda VK <> Reviewed-on: NetBSD-regression: NetBSD Build System <> CentOS-regression: Gluster Build System <> Smoke: Gluster Build System <> Reviewed-by: Saravanakumar Arumugam <>
1 files changed, 6 insertions, 2 deletions
diff --git a/geo-replication/syncdaemon/ b/geo-replication/syncdaemon/
index 88398e2..f4d50c1 100644
--- a/geo-replication/syncdaemon/
+++ b/geo-replication/syncdaemon/
@@ -16,7 +16,7 @@ import urllib
import json
import time
from datetime import datetime
-from errno import EACCES, EAGAIN
+from errno import EACCES, EAGAIN, ENOENT
MONITOR_STATUS = ("Created", "Started", "Paused", "Stopped")
@@ -263,7 +263,11 @@ class GeorepStatus(object):
fcntl.lockf(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
monitor_status = "Stopped"
except (IOError, OSError) as e:
- if e.errno in (EACCES, EAGAIN):
+ # If pid file not exists, either monitor died or Geo-rep
+ # not even started once
+ if e.errno == ENOENT:
+ monitor_status = "Stopped"
+ elif e.errno in (EACCES, EAGAIN):
# cannot grab. so, monitor process still running..move on