Log message for revision 116088: Prevent uncaught exceptions from killing ZServer worker threads. https://bugs.launchpad.net/zope2/+bug/627988.
Changed: U Zope/branches/2.11/doc/CHANGES.txt U Zope/branches/2.11/lib/python/ZServer/PubCore/ZServerPublisher.py -=- Modified: Zope/branches/2.11/doc/CHANGES.txt =================================================================== --- Zope/branches/2.11/doc/CHANGES.txt 2010-09-01 13:31:48 UTC (rev 116087) +++ Zope/branches/2.11/doc/CHANGES.txt 2010-09-01 13:37:52 UTC (rev 116088) @@ -8,6 +8,9 @@ Bugs Fixed + - Prevent uncaught exceptions from killing ZServer worker threads. + https://bugs.launchpad.net/zope2/+bug/627988 + - Ensure that mailhosts which share a queue directory do not double- deliver mails, by sharing the thread which processes emails for that directory. https://bugs.launchpad.net/zope2/+bug/574286 Modified: Zope/branches/2.11/lib/python/ZServer/PubCore/ZServerPublisher.py =================================================================== --- Zope/branches/2.11/lib/python/ZServer/PubCore/ZServerPublisher.py 2010-09-01 13:31:48 UTC (rev 116087) +++ Zope/branches/2.11/lib/python/ZServer/PubCore/ZServerPublisher.py 2010-09-01 13:37:52 UTC (rev 116088) @@ -11,28 +11,36 @@ # ############################################################################## +import logging + +LOG = logging.getLogger('ZServerPublisher') + class ZServerPublisher: def __init__(self, accept): + from sys import exc_info from ZPublisher import publish_module from ZPublisher.WSGIPublisher import publish_module as publish_wsgi while 1: - name, a, b=accept() - if name == "Zope2": - try: - publish_module( - name, - request=a, - response=b) - finally: - b._finish() - a=b=None + try: + name, a, b=accept() + if name == "Zope2": + try: + publish_module( + name, + request=a, + response=b) + finally: + b._finish() + a=b=None - elif name == "Zope2WSGI": - try: - res = publish_wsgi(a, b) - for r in res: - a['wsgi.output'].write(r) - finally: - # TODO: Support keeping connections open. - a['wsgi.output']._close = 1 - a['wsgi.output'].close() + elif name == "Zope2WSGI": + try: + res = publish_wsgi(a, b) + for r in res: + a['wsgi.output'].write(r) + finally: + # TODO: Support keeping connections open. + a['wsgi.output']._close = 1 + a['wsgi.output'].close() + except: + LOG.error('exception caught', exc_info=True) _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org https://mail.zope.org/mailman/listinfo/zope-checkins