summaryrefslogtreecommitdiff
path: root/mailman/queue/archive.py
diff options
context:
space:
mode:
Diffstat (limited to 'mailman/queue/archive.py')
-rw-r--r--mailman/queue/archive.py12
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)