~sambuddhabasu1/mailman/fix_mailman_run_error

« back to all changes in this revision

Viewing changes to src/mailman/runners/lmtp.py

  • Committer: Barry Warsaw
  • Date: 2013-06-17 13:36:43 UTC
  • Revision ID: barry@list.org-20130617133643-uj7atdykh2whwabw
 * `bin/runner` command has been simplified and its command line options
   reduced.  Now, only one `-r/--runner` option may be provided and the
   round-robin feature has been removed.
 * Fixed REST server crash on `reopen` command.  Identification and test
   provided by Aurélien Bompard.  (LP: #1184376)

Also:

 * bin/runner now uses standard argparse instead of ScriptOptions.
 * The entire bin/runner machinery has bee reorganized and simplified.  There
 * is no more Loop class.  Signal setting is moved directly into the base
   Runner class and overrided in specific subclasses (e.g. RESTRunner which
   must cleanly shutdown its TCPServer).  The runner exit status is now set
   directly on the Runner instance.
 * Fixed a few minor style issues.
 * In order to cleanly shutdown the RESTRunner's WSGI server, we must start a
   subthread which only watches for an Event and then calls the server's
   shutdown() method.  It has to be this way because the WSGI server itself
   (due to interactions with SQLite), and the signal handlers (due to Python's
   signal handling semantics) must both run in the main thread.  However, the
   shutdown() must be invoked from a subthread in order to prevent deadlock.
 * Refactor the RESTLayer to eliminate duplication of code.

Show diffs side-by-side

added added

removed removed

Lines of Context:
156
156
 
157
157
    is_queue_runner = False
158
158
 
159
 
    def __init__(self, slice=None, numslices=1):
 
159
    def __init__(self, name, slice=None):
160
160
        localaddr = config.mta.lmtp_host, int(config.mta.lmtp_port)
161
161
        # Do not call Runner's constructor because there's no QDIR to create
162
162
        qlog.debug('LMTP server listening on %s:%s',
163
163
                   localaddr[0], localaddr[1])
164
164
        smtpd.SMTPServer.__init__(self, localaddr, remoteaddr=None)
 
165
        super(LMTPRunner, self).__init__(name, slice)
165
166
 
166
167
    def handle_accept(self):
167
168
        conn, addr = self.accept()