summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-11-19 13:57:30 -0500
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-11-19 13:57:30 -0500
commitd6fdeb6f1feda9d46f60302109186f37092a26e5 (patch)
treed0dd45a6b717a7481189e41a0c0824d1efebc179
parentb4f9273c1f41664e020ba0fe994b64acdcb9fe0f (diff)
downloadbcfg2-d6fdeb6f1feda9d46f60302109186f37092a26e5.tar.gz
bcfg2-d6fdeb6f1feda9d46f60302109186f37092a26e5.tar.bz2
bcfg2-d6fdeb6f1feda9d46f60302109186f37092a26e5.zip
fail gracefully when pidfile creation fails
-rw-r--r--src/lib/Bcfg2/Server/BuiltinCore.py15
1 files changed, 10 insertions, 5 deletions
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. """