[ZODB-Dev] Problem with handling of data managers that join transactions after savepoints

Laurence Rowe l at lrowe.co.uk
Mon May 10 17:22:06 EDT 2010


On 10 May 2010 21:41, Jim Fulton <jim at zope.com> wrote:
> A. Change transaction._transaction.AbortSavepoint to remove the
>   datamanager from the transactions resources (joined data managers)
>   when the savepoint is rolled back and abort called on the data
>   manager. Then, if the data manager rejoins, it will have joined
>   only once.
>
>   Update the documentation of the data manager abort method (in
>   IDataManager) to say that abort is called either when a transaction
>   is aborted or when rolling back to a savepoint created before the
>   data manager joined, and that the data manager is no longer joined
>   to the transaction after abort is called.
>
>   This is a backward incompatible change to the interface (because it
>   weakens a precondition) that is unlikely to cause harm.

> I plan to implement A soon if there are no objections.
>
> Unless someone somehow convinced me to do D, I'll also add an
> assertion in the Transaction.join method to raise an error if a
> data manager joins more than once.

Option A sounds sensible. It also means I won't have to change
anything in the zope.sqlalchemy data manager.

Laurence


More information about the ZODB-Dev mailing list