From 5a7b8a9f23bf3f5e01d0fe9e55ea02524028e163 Mon Sep 17 00:00:00 2001 From: Tim Vaillancourt Date: Thu, 18 May 2017 12:48:34 +0200 Subject: [PATCH 1/2] Mkdir non-recursive if recursive mkdir fails --- mongodb_consistent_backup/State.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mongodb_consistent_backup/State.py b/mongodb_consistent_backup/State.py index 28f91093..19a726e7 100644 --- a/mongodb_consistent_backup/State.py +++ b/mongodb_consistent_backup/State.py @@ -6,6 +6,7 @@ from time import time from mongodb_consistent_backup.Common import Lock +from mongodb_consistent_backup.Errors import OperationError class StateBase(object): @@ -22,7 +23,14 @@ def __init__(self, base_dir, config, filename="meta.bson", state_version=1, meta self.lock = Lock(self.state_lock, False) if not os.path.isdir(self.state_dir): - os.makedirs(self.state_dir) + # try recursive first, fallback to regular mkdir + try: + os.makedirs(self.state_dir) + except: + try: + os.mkdir(self.state_dir) + except Exception, e: + raise OperationError(e) def merge(self, new, old): merged = old.copy() From 1873d42095b6d56f9fa0019a9658b250c39a3a23 Mon Sep 17 00:00:00 2001 From: Tim Vaillancourt Date: Thu, 18 May 2017 13:17:16 +0200 Subject: [PATCH 2/2] Reverse the logic --- mongodb_consistent_backup/State.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mongodb_consistent_backup/State.py b/mongodb_consistent_backup/State.py index 19a726e7..05d0223f 100644 --- a/mongodb_consistent_backup/State.py +++ b/mongodb_consistent_backup/State.py @@ -23,12 +23,12 @@ def __init__(self, base_dir, config, filename="meta.bson", state_version=1, meta self.lock = Lock(self.state_lock, False) if not os.path.isdir(self.state_dir): - # try recursive first, fallback to regular mkdir + # try normal mkdir first, fallback to recursive mkdir if there is an exception try: - os.makedirs(self.state_dir) + os.mkdir(self.state_dir) except: try: - os.mkdir(self.state_dir) + os.makedirs(self.state_dir) except Exception, e: raise OperationError(e)