Chris S wrote at 2006-7-26 16:03 -0400:
>When a file containing source code is modified, I want to reload it
>using Python's reload() function, then update classes with the new
>definitions. I have application-level logic to ensure the objects are
>in a sane-state during update. The only problem I'm having is when I
>close the connection after an update, I get ConnectionStateError,
>"Cannot close a connection joined to a transaction".
Apparently, you modified some objects handled by this connection.
You *MUST* not close the connection without deciding what
to do with the modifications -- either commit or abort them!
Not deciding before a connection close will mean that the modifications
linger around and are committed/aborted with the next transaction --
i.e. in a somewhat non-deterministical way.
This can lead to really nasty inconsistencies.
The exception you got it *VERY* helpful!
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org