Skip to content

Commit 8127a9a

Browse files
Merge pull request #101 from timvaillancourt/MCB_1.0-bugfix12
MCB_1.0: Bugfixes v12
2 parents 6c71455 + 79745f9 commit 8127a9a

File tree

7 files changed

+34
-12
lines changed

7 files changed

+34
-12
lines changed

mongodb_consistent_backup/Backup/Mongodump/MongodumpThread.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from signal import signal, SIGINT, SIGTERM, SIG_IGN
88
from subprocess import Popen, PIPE
99

10+
from mongodb_consistent_backup.Common import is_datetime
1011
from mongodb_consistent_backup.Oplog import Oplog
1112

1213

@@ -52,6 +53,8 @@ def parse_mongodump_line(self, line):
5253
return None
5354
if "\t" in line:
5455
(date, line) = line.split("\t")
56+
elif is_datetime(line):
57+
return None
5558
return "%s:\t%s" % (self.uri, line)
5659
except:
5760
return None

mongodb_consistent_backup/Common/Util.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import socket
22

3+
from dateutil import parser
4+
35
from mongodb_consistent_backup.Errors import OperationError
46

57

@@ -9,6 +11,13 @@ def config_to_string(config):
911
config_vars += "%s=%s, " % (key, config[key])
1012
return config_vars[:-1]
1113

14+
def is_datetime(string):
15+
try:
16+
parser.parse(string)
17+
return True
18+
except:
19+
return False
20+
1221
def parse_method(method):
1322
return method.rstrip().lower()
1423

mongodb_consistent_backup/Common/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
from Lock import Lock
55
from MongoUri import MongoUri
66
from Timer import Timer
7-
from Util import config_to_string, parse_method, validate_hostname
7+
from Util import config_to_string, is_datetime, parse_method, validate_hostname

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:

mongodb_consistent_backup/State.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@
99

1010

1111
class StateBase(object):
12-
def __init__(self, base_dir, config, filename="meta.bson", state_version=1):
13-
self.state_dir = os.path.join(base_dir, "mongodb-consistent-backup_META")
14-
self.state_lock = os.path.join(base_dir, "mongodb-consistent-backup_META.lock")
12+
def __init__(self, base_dir, config, filename="meta.bson", state_version=1, meta_name="mongodb-consistent-backup_META"):
13+
self.meta_name = meta_name
14+
self.state_dir = os.path.join(base_dir, self.meta_name)
15+
self.state_lock = os.path.join(base_dir, "%s.lock" % self.meta_name)
1516
self.state_file = os.path.join(self.state_dir, filename)
1617
self.state = {
1718
"name": config.backup.name,
1819
"path": base_dir,
19-
"hostname": platform.node(),
2020
"state_version": state_version
2121
}
2222
self.lock = Lock(self.state_lock, False)
@@ -129,10 +129,10 @@ def load_backups(self):
129129
if os.path.isdir(self.base_dir):
130130
for subdir in os.listdir(self.base_dir):
131131
try:
132-
if subdir == "mongodb-consistent-backup_META" :
132+
if subdir == self.meta_name:
133133
continue
134134
bkp_path = os.path.join(self.base_dir, subdir)
135-
state_path = os.path.join(bkp_path, "mongodb-consistent-backup_META")
135+
state_path = os.path.join(bkp_path, self.meta_name)
136136
state_file = os.path.join(state_path, "meta.bson")
137137
done_path = os.path.join(state_path, "done.bson")
138138
if os.path.isdir(state_path) and os.path.isfile(state_file) and os.path.isfile(done_path):

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ PyYAML==3.12
66
boto==2.45.0
77
filechunkio==1.8
88
yconf==0.3.3
9+
python-dateutil==2.2

0 commit comments

Comments
 (0)