44from datetime import datetime
55from multiprocessing import current_process
66from signal import signal , SIGINT , SIGTERM
7- from time import time
87
98from Archive import Archive
109from Backup import Backup
11- from Common import Config , DB , Lock , validate_hostname
10+ from Common import Config , DB , Lock , Timer , validate_hostname
1211from Notify import Notify
1312from Oplog import Tailer , Resolver
1413from Replication import Replset , ReplsetSharded
@@ -29,18 +28,16 @@ def __init__(self, prog_name="mongodb-consistent-backup"):
2928 self .oplog_resolver = None
3029 self .upload = None
3130 self .lock = None
32- self .start_time = time ()
33- self .end_time = None
34- self .backup_duration = None
3531 self .backup_time = None
3632 self .backup_root_directory = None
3733 self .backup_root_subdirectory = None
3834 self .db = None
3935 self .is_sharded = False
36+ self .log_level = None
37+ self .timer = Timer ()
4038 self .secondaries = {}
4139 self .oplog_summary = {}
4240 self .backup_summary = {}
43- self .log_level = None
4441
4542 self .setup_config ()
4643 self .setup_logger ()
@@ -149,6 +146,7 @@ def run(self):
149146 logging .info ("Starting %s version %s (git commit hash: %s)" % (self .program_name , self .config .version , self .config .git_commit ))
150147
151148 self .get_lock ()
149+ self .timer .start ()
152150
153151 # Setup the notifier
154152 try :
@@ -285,8 +283,9 @@ def run(self):
285283 self .exception ("Problem restoring balancer lock! Error: %s" % e )
286284
287285 # resolve/merge tailed oplog into mongodump oplog.bson to a consistent point for all shards
288- if self .config . backup .method == "mongodump" and self .oplogtailer :
286+ if self .backup .method == "mongodump" and self .oplogtailer :
289287 self .oplog_resolver = Resolver (self .config , self .oplog_summary , self .backup_summary )
288+ self .oplog_resolver .compression (self .oplogtailer .compression ())
290289 self .oplog_resolver .run ()
291290
292291 # archive backup directories
@@ -295,21 +294,20 @@ def run(self):
295294 except Exception , e :
296295 self .exception ("Problem performing archiving! Error: %s" % e )
297296
298- self .end_time = time ()
299- self .backup_duration = self .end_time - self .start_time
300-
301297 # upload backup
302298 try :
303299 self .upload .upload ()
304300 except Exception , e :
305301 self .exception ("Problem performing upload of backup! Error: %s" % e )
306302
303+ self .timer .stop ()
304+
307305 # send notifications of backup state
308306 try :
309307 self .notify .notify ("%s: backup '%s' succeeded in %s secs" % (
310308 self .program_name ,
311309 self .config .backup .name ,
312- self .backup_duration
310+ self .timer . duration ()
313311 ), True )
314312 except Exception , e :
315313 self .exception ("Problem running Notifier! Error: %s" % e )
@@ -319,4 +317,4 @@ def run(self):
319317
320318 self .release_lock ()
321319
322- logging .info ("Backup completed in %s sec" % self .backup_duration )
320+ logging .info ("Completed %s in %s sec" % ( self .program_name , self . timer . duration ()) )
0 commit comments