diff options
author | Simo Sorce <simo@redhat.com> | 2014-05-01 16:37:12 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2014-05-01 20:52:24 -0400 |
commit | 8cd7481f96f5f67efb69323024e56d57df992eb5 (patch) | |
tree | f387ac615aed6cb0828c513f8c70f700e4f2dc84 | |
parent | c3dbeaddbef676c65a039764dcc17ccec3685568 (diff) | |
download | ipsilon.git-8cd7481f96f5f67efb69323024e56d57df992eb5.tar.gz ipsilon.git-8cd7481f96f5f67efb69323024e56d57df992eb5.tar.xz ipsilon.git-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-x | ipsilon/ipsilon | 17 |
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: |