diff options
Diffstat (limited to 'mailman/queue/archive.py')
| -rw-r--r-- | mailman/queue/archive.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/mailman/queue/archive.py b/mailman/queue/archive.py index e9fd5f7ad..7725f6f97 100644 --- a/mailman/queue/archive.py +++ b/mailman/queue/archive.py @@ -25,6 +25,7 @@ __all__ = [ import os import time +import logging from datetime import datetime from email.Utils import parsedate_tz, mktime_tz, formatdate @@ -34,6 +35,8 @@ from mailman import Defaults from mailman.core.plugins import get_plugins from mailman.queue import Runner +log = logging.getLogger('mailman.error') + class ArchiveRunner(Runner): @@ -78,5 +81,10 @@ class ArchiveRunner(Runner): # While a list archiving lock is acquired, archive the message. with Lock(os.path.join(mlist.data_path, 'archive.lck')): for archive_factory in get_plugins('mailman.archiver'): - archive_factory().archive_message(mlist, msg) - + # A problem in one archiver should not prevent any other + # archiver from running. + try: + archive = archive_factory() + archive.archive_message(mlist, msg) + except Exception: + log.exception('Broken archiver: %s' % archive.name) |
