Module: check_mk
Branch: master
Commit: 0c72e072f41439350bf8de8cb3fc1939ea6ea504
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=0c72e072f41439…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Thu Apr 19 17:40:03 2012 +0200
Avoid recursive locks
---
web/htdocs/lib.py | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/web/htdocs/lib.py b/web/htdocs/lib.py
index b448f55..f59c3b3 100644
--- a/web/htdocs/lib.py
+++ b/web/htdocs/lib.py
@@ -228,15 +228,20 @@ def set_is_disjoint(a, b):
# has terminated (in good or in bad manner). Currently only exclusive
# locks are implemented and they always will wait for ever.
g_aquired_locks = []
+g_locked_paths = []
def aquire_lock(path):
+ if path in g_locked_paths:
+ return # No recursive locking
fd = os.open(path, os.O_RDONLY)
fcntl.flock(fd, fcntl.LOCK_EX)
g_aquired_locks.append(fd)
+ g_locked_paths.append(path)
def release_all_locks():
global g_aquired_locks
for fd in g_aquired_locks:
os.close(fd)
g_aquired_locks = []
+ g_locked_paths = []