def cleanup_and_exit(self, code, frame):
if not current_process().name == "MainProcess":
return
logging.info("Starting cleanup procedure! Stopping running threads")
# TODO Move submodules into self that populates as used?
submodules = ['replset', 'sharding', 'backup', 'oplogtailer', 'archive', 'upload']
for submodule_name in submodules:
try:
submodule = getattr(self, submodule_name)
if submodule:
submodule.close()
except Exception:
continue
if self.manager:
self.manager.shutdown()
if self.db:
self.db.close()
if self.notify:
try:
self.notify.notify("%s: backup '%s/%s' failed! Error: '%s'" % (
self.program_name,
self.config.backup.name,
self.backup_time,
self.last_error_msg
))
self.notify.run()
self.notify.close()
except Exception, e:
logging.error("Error from notifier: %s" % e)
logging.info("Cleanup complete, exiting")
if self.logger:
self.logger.rotate()
self.logger.close()
self.release_lock()
sys.exit(1)
评论列表
文章目录