From 2b33561b8258626197090e1e7cc58284719c4438 Mon Sep 17 00:00:00 2001 From: Anders Ingemann Date: Mon, 24 Nov 2014 22:45:05 +0100 Subject: [PATCH] Don't kill SSH, ask callback server to stop instead of commtimeout --- bootstrapvz/base/remote/callback.py | 13 +++++-------- bootstrapvz/base/remote/server.py | 3 +++ bootstrapvz/base/remote/ssh_rpc_manager.py | 3 ++- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/bootstrapvz/base/remote/callback.py b/bootstrapvz/base/remote/callback.py index 82d9060..865081d 100644 --- a/bootstrapvz/base/remote/callback.py +++ b/bootstrapvz/base/remote/callback.py @@ -4,21 +4,18 @@ class CallbackServer(object): def __init__(self, listen_port): self.listen_port = listen_port - self.stop_serving = False def start(self, log_server): import Pyro4 - Pyro4.config.COMMTIMEOUT = 0.5 - daemon = Pyro4.Daemon('localhost', port=self.listen_port, unixsocket=None) - daemon.register(log_server) + self.daemon = Pyro4.Daemon('localhost', port=self.listen_port, unixsocket=None) + self.daemon.register(log_server) def serve(): - daemon.requestLoop(loopCondition=lambda: not self.stop_serving) + self.daemon.requestLoop() from threading import Thread self.thread = Thread(target=serve) self.thread.start() def stop(self): - self.stop_serving = True - if hasattr(self, 'thread'): - self.thread.join() + self.daemon.shutdown() + self.thread.join() diff --git a/bootstrapvz/base/remote/server.py b/bootstrapvz/base/remote/server.py index 2a834db..28b9d38 100644 --- a/bootstrapvz/base/remote/server.py +++ b/bootstrapvz/base/remote/server.py @@ -11,6 +11,9 @@ def setup_logging(): from bootstrapvz.base.log import LogForwarder log_forwarder = LogForwarder() root = logging.getLogger() + from bootstrapvz.base import log + file_handler = log.get_file_handler(path='/var/log/bootstrap-vz/remote.log', debug=True) + root.addHandler(file_handler) root.addHandler(log_forwarder) root.setLevel(logging.NOTSET) return log_forwarder diff --git a/bootstrapvz/base/remote/ssh_rpc_manager.py b/bootstrapvz/base/remote/ssh_rpc_manager.py index 7143916..d9521cb 100644 --- a/bootstrapvz/base/remote/ssh_rpc_manager.py +++ b/bootstrapvz/base/remote/ssh_rpc_manager.py @@ -57,4 +57,5 @@ class SSHRPCManager(object): def stop(self): self.rpc_server.stop() - self.process.terminate() + self.rpc_server._pyroRelease() + self.process.wait()