[EMAIL PROTECTED] wrote at 2006-8-2 15:36 -0500:
>    Dieter> I could only imagine that the transaction you commit is not the
>    Dieter> transaction the modifications are registered with.
>    Dieter> This could, e.g., happen when you modify the objects in a thread
>    Dieter> different from where the transaction is committed (the default
>    Dieter> transaction manager manages a transaction per thread).  However,
>    Dieter> you code does not give a hint that this is indeed the problem.
>That's not the case here.  Some SpamBayes apps use threads, but my
>train-to-exhaustion script does not.

Then, you might want to debug what happens.

  The basic operation is as follows:

    When you modify a persistent object that was not yet registered
    with the connection, the connection's "register" method is called.

    "register" registers the connection with the (current) transaction
    as a "ResourceManager"
    (if not already done) and then registers the object with the connection.

    An object already registered with the connection has
    "obj._p_changed == 1".

    When the transaction commits, it commits all its registered
    ResourceManagers which in turn commit all their registered objects.

For more information about ZODB, see the ZODB Wiki:

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

Reply via email to