[ZODB-Dev] Why does transaction.commit(1) break savepoints?

Chris Withers chris at simplistix.co.uk
Tue Oct 17 10:01:12 EDT 2006


>>> import transaction

Something simple:

>>> s = transaction.savepoint()
>>> s.rollback()

Something less so:

>>> s = transaction.savepoint()
>>> s1 = transaction.savepoint()
>>> s.rollback()

...okay, so we can nest savepoints, yay!

 >>> s1.rollback()
  Traceback (most recent call last):
    File "<stdin>", line 1, in ?
    File
  "lib/python/transaction/_transaction.py", line 682, in rollback
      raise interfaces.InvalidSavepointRollbackError
  transaction.interfaces.InvalidSavepointRollbackError

That makes sense, since we already rolled back to before it.

Okay:

>>> s = transaction.savepoint()
>>> transaction.commit(1)
>>> s.rollback()
  Traceback (most recent call last):
    File "<stdin>", line 1, in ?
    File
  "lib/python/transaction/_transaction.py", line 682, in rollback
      raise interfaces.InvalidSavepointRollbackError
  transaction.interfaces.InvalidSavepointRollbackError

wtf?

Chris

-- 
Simplistix - Content Management, Zope & Python Consulting
            - http://www.simplistix.co.uk


More information about the ZODB-Dev mailing list