|
@@ -690,7 +690,19 @@ class Zonemgr:
|
|
|
self.running = True
|
|
|
try:
|
|
|
while not self._shutdown_event.is_set():
|
|
|
- self._module_cc.check_command(False)
|
|
|
+ fileno = self._module_cc.get_socket().fileno()
|
|
|
+ # Wait with select() until there is something to read,
|
|
|
+ # and then read it using a non-blocking read
|
|
|
+ # This may or may not be relevant data for this loop,
|
|
|
+ # but due to the way the zonemgr does threading, we
|
|
|
+ # can't have a blocking read loop here.
|
|
|
+ try:
|
|
|
+ (reads, _, _) = select.select([fileno], [], [])
|
|
|
+ except select.error as se:
|
|
|
+ if se.args[0] != errno.EINTR:
|
|
|
+ raise
|
|
|
+ if fileno in reads:
|
|
|
+ self._module_cc.check_command(True)
|
|
|
finally:
|
|
|
self._module_cc.send_stopping()
|
|
|
|