@@ -49,6 +49,7 @@ def __init__(self, prog_name="mongodb-consistent-backup"):
4949 self .logger = None
5050 self .current_log_file = None
5151 self .backup_log_file = None
52+ self .last_error_msg = ''
5253
5354 try :
5455 self .setup_config ()
@@ -57,6 +58,7 @@ def __init__(self, prog_name="mongodb-consistent-backup"):
5758 self .get_lock ()
5859 self .logger .update_symlink ()
5960 self .init ()
61+ self .setup_notifier ()
6062 self .set_backup_dirs ()
6163 self .get_db_conn ()
6264 self .setup_state ()
@@ -98,6 +100,18 @@ def setup_state(self):
98100 self .state = StateBackup (self .backup_directory , self .config , self .backup_time , self .uri , sys .argv )
99101 self .state .write ()
100102
103+ def setup_notifier (self ):
104+ try :
105+ self .notify = Notify (
106+ self .manager ,
107+ self .config ,
108+ self .timer ,
109+ self .backup_root_subdirectory ,
110+ self .backup_directory
111+ )
112+ except Exception , e :
113+ self .exception ("Problem starting notifier! Error: %s" % e , e )
114+
101115 def get_db_conn (self ):
102116 self .uri = MongoUri (self .config .host , self .config .port )
103117 try :
@@ -171,23 +185,23 @@ def cleanup_and_exit(self, code, frame):
171185
172186 if self .manager :
173187 self .manager .shutdown ()
188+ if self .db :
189+ self .db .close ()
174190
175191 if self .notify :
176192 try :
177- self .notify .notify ("%s: backup '%s' failed!" % (
178- self .config ,
179- self .program_name
180- ), False )
193+ self .notify .notify ("%s: backup '%s/%s' failed! Error: '%s'" % (
194+ self .program_name ,
195+ self .config .backup .name ,
196+ self .backup_time ,
197+ self .last_error_msg
198+ ))
181199 self .notify .run ()
182200 self .notify .close ()
183- except :
184- pass
185-
186- if self .db :
187- self .db .close ()
201+ except Exception , e :
202+ logging .error ("Error from notifier: %s" % e )
188203
189204 logging .info ("Cleanup complete, exiting" )
190-
191205 if self .logger :
192206 self .logger .rotate ()
193207 self .logger .close ()
@@ -196,6 +210,7 @@ def cleanup_and_exit(self, code, frame):
196210 sys .exit (1 )
197211
198212 def exception (self , error_message , error ):
213+ self .last_error_msg = error_message
199214 if isinstance (error , NotifyError ):
200215 logging .error (error_message )
201216 else :
@@ -237,18 +252,6 @@ def run(self):
237252 except Exception , e :
238253 self .exception ("Problem starting archiver! Error: %s" % e , e )
239254
240- # Setup the notifier
241- try :
242- self .notify = Notify (
243- self .manager ,
244- self .config ,
245- self .timer ,
246- self .backup_root_subdirectory ,
247- self .backup_directory
248- )
249- except Exception , e :
250- self .exception ("Problem starting notifier! Error: %s" % e , e )
251-
252255 # Setup the uploader
253256 try :
254257 self .upload = Upload (
0 commit comments