[Zope-dev] transaction as context manager, exception during commit
Chris Withers
chris at simplistix.co.uk
Thu Feb 24 05:17:36 EST 2011
Hi Jim,
The current __exit__ for transaction managers looks like this:
def __exit__(self, t, v, tb):
if v is None:
self.commit()
else:
self.abort()
..which means that if you're using the transaction package as a context
manager and, say, a relational database integrity constraint is
violated, then you're left with a hosed transaction that still needs
aborting.
How would you feel about the above changing to:
def __exit__(self, t, v, tb):
if v is None:
try:
self.commit()
except:
self.abort()
raise
else:
self.abort()
If this is okay, I'll be happy to write the tests and make the changes
provided someone does a release when I have...
cheers,
Chris
--
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
More information about the Zope-Dev
mailing list