summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--geo-replication/syncdaemon/monitor.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/geo-replication/syncdaemon/monitor.py b/geo-replication/syncdaemon/monitor.py
index 5f4745501ec..dbe9c0b0d40 100644
--- a/geo-replication/syncdaemon/monitor.py
+++ b/geo-replication/syncdaemon/monitor.py
@@ -157,6 +157,9 @@ class Monitor(object):
return 1
conn_timeout = int(gconf.connection_timeout)
while ret in (0, 1):
+ # Spawn the worker and agent in lock to avoid fd leak
+ self.lock.acquire()
+
logging.info('-' * conn_timeout)
logging.info('starting gsyncd worker')
@@ -188,10 +191,9 @@ class Monitor(object):
','.join([str(rw), str(ww),
str(ra), str(wa)]),
'--resource-remote', w[1]])
- self.lock.acquire()
+
cpids.add(cpid)
agents.add(apid)
- self.lock.release()
os.close(pw)
# close all RPC pipes in monitor
@@ -199,6 +201,7 @@ class Monitor(object):
os.close(wa)
os.close(rw)
os.close(ww)
+ self.lock.release()
t0 = time.time()
so = select((pr,), (), (), conn_timeout)[0]