On Aug 27, 2008, at 10:40 AM, Christian Theune wrote:

> Hi,
> I located an issue with leaking file descriptors in the ZEO tests and
> have a simple proposal how to fix it. (I can imagine a better way to
> exist but can't see one right now.)
> Here's what happens:
> - The (single) thread in the client process uses a
>  ManagedClientConnection.
> - The __init__ of ManagedClientConnection's super class causes a  
> trigger
>  to be created which will then be replaced with a shared trigger by
>  ManagedClientConnection's __init__.
> - Unfortunately at this time the trigger that got temporarily created
>  won't be garbage collected (or at least the file descriptor won't  
> be),
>  as asyncore holds a shared, module-global map of file descriptor
>  numbers to file descriptor objects.
> I fixed it for me by explicitly closing the trigger in
> ManagedClientConnection before replacing it with the shared one.
> After that, the number of file descriptors used by the test becomes
> stable and my tests for the almost-merged iterator branch can run
> successfully.

Good analysis!

I fixed it by not creating the extra trigger in the first place.  My  
fix is checked in.


Jim Fulton
Zope Corporation

For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to