summaryrefslogtreecommitdiff
path: root/mailman/bin/master.py
diff options
context:
space:
mode:
authorBarry Warsaw2008-12-31 18:26:08 -0500
committerBarry Warsaw2008-12-31 18:26:08 -0500
commit996f7ea88ad5eaee7b7c7df5b113dbf6ce896e55 (patch)
treefccf6fa070e9ea90d6834491f4406d803473e8da /mailman/bin/master.py
parent03d01d66436661ef7d1e6a80401a6ed232d02718 (diff)
downloadmailman-996f7ea88ad5eaee7b7c7df5b113dbf6ce896e55.tar.gz
mailman-996f7ea88ad5eaee7b7c7df5b113dbf6ce896e55.tar.zst
mailman-996f7ea88ad5eaee7b7c7df5b113dbf6ce896e55.zip
Diffstat (limited to 'mailman/bin/master.py')
-rw-r--r--mailman/bin/master.py15
1 files changed, 8 insertions, 7 deletions
diff --git a/mailman/bin/master.py b/mailman/bin/master.py
index 129df0009..e47e0d839 100644
--- a/mailman/bin/master.py
+++ b/mailman/bin/master.py
@@ -318,11 +318,10 @@ class Loop:
qrunner_config = getattr(config, section_name)
if not qrunner_config.start:
continue
- class_path = qrunner_config['class'].split(DOT)
- package = DOT.join(class_path[:-1])
+ package, class_name = qrunner_config['class'].rsplit(DOT, 1)
__import__(package)
# Let AttributeError propagate.
- class_ = getattr(sys.modules[package], class_path[-1])
+ class_ = getattr(sys.modules[package], class_name)
# Find out how many qrunners to instantiate. This must be a power
# of 2.
count = int(qrunner_config.instances)
@@ -331,7 +330,7 @@ class Loop:
for slice_number in range(count):
# qrunner name, slice #, # of slices, restart count
info = (name, slice_number, count, 0)
- spec = '%s:%d:%d' % (qrname, slice_number, count)
+ spec = '%s:%d:%d' % (name, slice_number, count)
pid = self._start_runner(spec)
log = logging.getLogger('mailman.qrunner')
log.debug('[%d] %s', pid, spec)
@@ -369,12 +368,14 @@ class Loop:
# command line switch was not given. This lets us better handle
# runaway restarts (e.g. if the subprocess had a syntax error!)
qrname, slice_number, count, restarts = self._kids.pop(pid)
+ config_name = 'qrunner.' + qrname
restart = False
if why == signal.SIGUSR1 and self._restartable:
restart = True
# Have we hit the maximum number of restarts?
restarts += 1
- if restarts > config.MAX_RESTARTS:
+ max_restarts = int(getattr(config, config_name).max_restarts)
+ if restarts > max_restarts:
restart = False
# Are we permanently non-restartable?
log.debug("""\
@@ -383,10 +384,10 @@ Master detected subprocess exit
pid, why, qrname, slice_number + 1, count,
('[restarting]' if restart else ''))
# See if we've reached the maximum number of allowable restarts
- if restarts > config.MAX_RESTARTS:
+ if restarts > max_restarts:
log.info("""\
qrunner %s reached maximum restart limit of %d, not restarting.""",
- qrname, config.MAX_RESTARTS)
+ qrname, max_restarts)
# Now perhaps restart the process unless it exited with a
# SIGTERM or we aren't restarting.
if restart: