summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2014-05-01 16:37:12 -0400
committerSimo Sorce <simo@redhat.com>2014-05-01 20:52:24 -0400
commit8cd7481f96f5f67efb69323024e56d57df992eb5 (patch)
treef387ac615aed6cb0828c513f8c70f700e4f2dc84
parentc3dbeaddbef676c65a039764dcc17ccec3685568 (diff)
downloadipsilon-8cd7481f96f5f67efb69323024e56d57df992eb5.tar.gz
ipsilon-8cd7481f96f5f67efb69323024e56d57df992eb5.tar.xz
ipsilon-8cd7481f96f5f67efb69323024e56d57df992eb5.zip
Eliminte stale locks
If the server crashes stale lock files may e left behind. This will cause the application to deadlock for the user that has the misfortune of having a stale lock. Forcibly remove all locks on startup. Signed-off-by: Simo Sorce <simo@redhat.com>
-rwxr-xr-xipsilon/ipsilon17
1 files changed, 16 insertions, 1 deletions
diff --git a/ipsilon/ipsilon b/ipsilon/ipsilon
index 9fa370e..fec19e4 100755
--- a/ipsilon/ipsilon
+++ b/ipsilon/ipsilon
@@ -19,7 +19,7 @@
import sys
sys.stdout = sys.stderr
-
+import glob
import os
import atexit
import cherrypy
@@ -28,6 +28,19 @@ from ipsilon.util import page
from ipsilon.root import Root
from jinja2 import Environment, FileSystemLoader
+
+def nuke_session_locks():
+ if cherrypy.config['tools.sessions.on']:
+ try:
+ sessdir = cherrypy.config['tools.sessions.storage_path']
+ for l in glob.glob(os.path.join(sessdir, '*.lock')):
+ try:
+ os.remove(l)
+ except Exception: # pylint: disable=broad-except
+ pass
+ except Exception: # pylint: disable=broad-except
+ pass
+
cfgfile = None
if (len(sys.argv) > 1):
cfgfile = sys.argv[-1]
@@ -40,6 +53,8 @@ else:
cherrypy.config.update(cfgfile)
+nuke_session_locks()
+
datastore = Store()
admin_config = datastore.get_admin_config()
for option in admin_config: