More info Re: [ZODB-Dev] ZEO select.error: (9, "Bad file desriptor")

Michel Pelletier michel@digicool.com
Thu, 14 Jun 2001 11:09:26 -0700 (PDT)


On Wed, 13 Jun 2001, John D. Heintz wrote:

> Andrew:
>
> Well, the socket is indeed getting closed.  Here is the stack trace info I
> have gotten:
>

It looks like...

>     thor_core/snapCM/snapCM.py:378
>     /usr/local/stow/python/lib/python2.1/site-packages/ZODB/Connection.py:519
>         p, serial = self._storage.load(oid, self._version)
>
> /usr/local/stow/python/lib/python2.1/site-packages/ZEO/ClientStorage.py:354
>         p, s, v, pv, sv = self._call('zeoLoad', oid)
>     /usr/local/stow/python/lib/python2.1/site-packages/ZEO/zrpc.py:214
>         else: self.readLoop()
>     /usr/local/stow/python/lib/python2.1/site-packages/ZEO/zrpc.py:194
>         asyncore.poll(60.0, self)

Either handle_write_event or "_read_event is raising an exception in
poll(), and this is causing handle_error() to get called, which in turn
calls close().  Hmm.  It kinda sucks that the exception gets swallowed.
Maybe you can unhide the exception by passing it into handle_error and
re-raising it after you call close()?  That might shed more light.

>     /usr/local/stow/python/lib/python2.1/asyncore.py:101
>         obj.handle_error()
>     /usr/local/stow/python/lib/python2.1/asyncore.py:415
>         self.close()
>     /usr/local/stow/python/lib/python2.1/site-packages/ZEO/zrpc.py:298
>         stackFrameHelper.printStack()
>     /home/bonnell/src/bonnell/products/bonnellCommon/stackFrameHelper.py:52
>         _printStack(frame)
>
> This error is then followed up by a ZEO.smac.Disconnected error, not a
> suprise.
>
> Then I get the socket.error (9, "Bad file descriptor") error, also not a
> suprise.


-Michel