Skip to content

Commit 5c0e68f

Browse files
Don't write symlink or log until lock is acquired
1 parent c2d85cd commit 5c0e68f

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

mongodb_consistent_backup/Logger.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,23 @@ def __init__(self, config, backup_time):
2828
def start(self):
2929
try:
3030
logging.basicConfig(level=self.log_level, format=self.log_format)
31-
if self.do_file_log:
31+
except Exception, e:
32+
print("Could not start logger: %s" % e)
33+
raise e
34+
35+
def start_file_logger(self):
36+
if self.do_file_log:
37+
try:
3238
self.current_log_file = os.path.join(self.config.log_dir, "backup.%s.log" % self.backup_name)
3339
self.backup_log_file = os.path.join(self.config.log_dir, "backup.%s.%s.log" % (self.backup_name, self.backup_time))
3440
self.file_log = logging.FileHandler(self.backup_log_file)
3541
self.file_log.setLevel(self.log_level)
3642
self.file_log.setFormatter(logging.Formatter(self.log_format))
3743
logging.getLogger('').addHandler(self.file_log)
3844
self.update_symlink()
39-
except OSError, e:
40-
logging.warning("Could not start file log handler, writing to stdout only")
41-
pass
45+
except OSError, e:
46+
logging.warning("Could not start file log handler, writing to stdout only")
47+
pass
4248

4349
def close(self):
4450
if self.file_log:
@@ -61,6 +67,8 @@ def compress(self):
6167
gz_log.close()
6268

6369
def update_symlink(self):
70+
if not self.do_file_log:
71+
return
6472
if os.path.islink(self.current_log_file):
6573
self.last_log = os.readlink(self.current_log_file)
6674
os.remove(self.current_log_file)

mongodb_consistent_backup/Main.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ def __init__(self, prog_name="mongodb-consistent-backup"):
5555
self.setup_logger()
5656
self.setup_signal_handlers()
5757
self.get_lock()
58+
self.logger.start_file_logger()
5859
self.init()
5960
self.set_backup_dirs()
6061
self.get_db_conn()
@@ -116,7 +117,7 @@ def get_lock(self):
116117
self.lock = Lock(self.config.lock_file)
117118
except Exception:
118119
logging.fatal("Could not acquire lock: '%s'! Is another %s process running? Exiting" % (self.config.lock_file, self.program_name))
119-
self.cleanup_and_exit(None, None)
120+
sys.exit(1)
120121

121122
def release_lock(self):
122123
if self.lock:

0 commit comments

Comments
 (0)