> OTOH, the transaction.Savepoint.rollback() implementation is a bit
> schizophrenic: it invalidates self, but leaves it in the transaction's
> stack (for savepoints "after" self, it both invalidates them and removes
> them from the transaction's stack).
Oops! Not true. It does remove self from the stack.
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org