From d6fdeb6f1feda9d46f60302109186f37092a26e5 Mon Sep 17 00:00:00 2001 From: "Chris St. Pierre" Date: Mon, 19 Nov 2012 13:57:30 -0500 Subject: fail gracefully when pidfile creation fails --- src/lib/Bcfg2/Server/BuiltinCore.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/lib/Bcfg2/Server/BuiltinCore.py b/src/lib/Bcfg2/Server/BuiltinCore.py index 63149c15e..0fe8f39da 100644 --- a/src/lib/Bcfg2/Server/BuiltinCore.py +++ b/src/lib/Bcfg2/Server/BuiltinCore.py @@ -11,9 +11,9 @@ from Bcfg2.SSLServer import XMLRPCServer # pylint: disable=E0611 try: - from daemon.pidfile import PIDLockFile + from daemon.pidfile import PIDLockFile, LockFailed except ImportError: - from daemon.pidlockfile import PIDLockFile + from daemon.pidlockfile import PIDLockFile, LockFailed # pylint: enable=E0611 @@ -80,9 +80,14 @@ class Core(BaseCore): def _daemonize(self): """ Open :attr:`context` to drop privileges, write the PID file, and daemonize the server core. """ - self.context.open() - self.logger.info("%s daemonized" % self.name) - return True + try: + self.context.open() + self.logger.info("%s daemonized" % self.name) + return True + except LockFailed: + err = sys.exc_info()[1] + self.logger.error("Failed to daemonize %s: %s" % (self.name, err)) + return False def _run(self): """ Create :attr:`server` to start the server listening. """ -- cgit v1.2.3-1-g7c22