Module: check_mk
Branch: master
Commit: 99488aee5075e44595e3c0a16c7e9875c5924c7c
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=99488aee5075e4…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Thu May 17 11:48:09 2018 +0200
5811 FIX Fixed race condition when creating missing directories
Creating missing directories could lead to exceptions. This has been fixed
Change-Id: Ib57e1868e5d7bcee01ecf2e2665af537cb183efb
---
.werks/5811 | 12 ++++++++++++
cmk/store.py | 8 ++++----
cmk_base/checks.py | 4 +---
3 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/.werks/5811 b/.werks/5811
new file mode 100644
index 0000000..d314676
--- /dev/null
+++ b/.werks/5811
@@ -0,0 +1,12 @@
+Title: Fixed race condition when creating missing directories
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.6.0i1
+Date: 1526550430
+Class: fix
+
+Creating missing directories could lead to exceptions. This has been fixed
+
+
diff --git a/cmk/store.py b/cmk/store.py
index 9d1f935..4bdb5d1 100644
--- a/cmk/store.py
+++ b/cmk/store.py
@@ -93,10 +93,10 @@ def makedirs(path, mode=0770):
if type(path) is unicode:
return path.encode("utf-8")
- if os.path.exists(path):
- return
-
- os.makedirs(path, mode)
+ try:
+ os.makedirs(path, mode)
+ except OSError:
+ pass
#.
# .--.mk Configs---------------------------------------------------------.
diff --git a/cmk_base/checks.py b/cmk_base/checks.py
index 6ba089c..e956c91 100644
--- a/cmk_base/checks.py
+++ b/cmk_base/checks.py
@@ -414,9 +414,7 @@ def _precompile_plugin(path, precompiled_path):
code = compile(open(path).read(), path, "exec")
plugin_mtime = os.stat(path).st_mtime
- if not os.path.exists(os.path.dirname(precompiled_path)):
- os.makedirs(os.path.dirname(precompiled_path))
-
+ store.makedirs(os.path.dirname(precompiled_path))
py_compile.compile(path, precompiled_path, doraise=True)