[Zope] ZServer: unhandled exception killing ZPublisher?

Anthony Baxter anthony@interlink.com.au
Wed, 05 May 1999 17:31:04 +1000


I've got a Zope system running with ZServer 1.0b1 on a Linux 2.0.36
system. Periodically, one of the test users here has managed to trigger
a bug (I'm not sure what, or how). When they do, it seems to kill
one of the ZServer threads, so that the system is still running, 
still accepting connections, but just hangs. I thought I saw something
like this recently, but I can't see it in my mail archive.

Looking at the diffs between what I'm running and the current CVS
tree, I see that ZServer/HTTPResponse.py has
@@ -232,7 +237,7 @@
         
     def close(self):
         self._channel.push(LoggingProducer(self._request, self._bytes), 0)
+        self._channel.push(CallbackProducer(self._channel.done), 0)
-        self._channel.push(CallbackProducer(self._channel.done))
         if self._shutdown:
             self._channel.push(ShutdownProducer(), 0)
         elif self._close:

is this the correct fix? Should I be wrapping the various ZServer 
threads in a try/except pair to restart them in case of a thread
failing?

thanks in advance
Anthony


Unhandled exception in thread:
Traceback (innermost last):
  File "./PubCore/ZServerPublisher.py", line 97, in __init__
    response._finish()
  File "/opt/zope/inst/ZServer/HTTPResponse.py", line 209, in _finish
    self.stdout.close()
  File "/opt/zope/inst/ZServer/HTTPResponse.py", line 235, in close
    self._channel.push(CallbackProducer(self._channel.done))
  File "./HTTPServer.py", line 307, in push
    if send: self.initiate_send()
  File "./medusa/asynchat.py", line 199, in initiate_send
    self.refill_buffer()
  File "./medusa/asynchat.py", line 191, in refill_buffer
    self.producer_fifo.pop()
  File "./medusa/asynchat.py", line 253, in pop
    result = self.list[0]
IndexError: list index out of range