[svn] commit: r3488 - /trunk/src/bin/zonemgr/zonemgr.py.in
BIND 10 source code commits
bind10-changes at lists.isc.org
Mon Nov 8 11:28:51 UTC 2010
Author: vorner
Date: Mon Nov 8 11:28:51 2010
New Revision: 3488
Log:
Fix possible race condition
Reviewed as #400
Modified:
trunk/src/bin/zonemgr/zonemgr.py.in
Modified: trunk/src/bin/zonemgr/zonemgr.py.in
==============================================================================
--- trunk/src/bin/zonemgr/zonemgr.py.in (original)
+++ trunk/src/bin/zonemgr/zonemgr.py.in Mon Nov 8 11:28:51 2010
@@ -324,8 +324,14 @@
return False
def _run_timer(self, start_event):
- start_event.set()
while self._running:
+ # Notify run_timer that we already started and are inside the loop.
+ # It is set only once, but when it was outside the loop, there was
+ # a race condition and _running was could be set false before we
+ # could enter it
+ if start_event:
+ start_event.set()
+ start_event = None
# If zonemgr has no zone, set timer timeout to self._lowerbound_retry.
if self._zone_mgr_is_empty():
timeout = self._lowerbound_retry
@@ -354,7 +360,8 @@
for fd in rlist:
if fd == self._read_sock: # awaken by shutdown socket
# self._running will be False by now, if it is not a false
- # alarm
+ # alarm (linux kernel is said to trigger spurious wakeup
+ # on a filehandle that is not really readable).
continue
if fd == self._check_sock: # awaken by check socket
self._check_sock.recv(32)
More information about the bind10-changes
mailing list