[Checkins] SVN: zope.sqlalchemy/trunk/ be nicer about errors during commit
Laurence Rowe
l at lrowe.co.uk
Fri Sep 12 15:41:57 EDT 2008
Log message for revision 91101:
be nicer about errors during commit
Changed:
U zope.sqlalchemy/trunk/CHANGES.txt
U zope.sqlalchemy/trunk/setup.py
U zope.sqlalchemy/trunk/src/zope/sqlalchemy/__init__.py
U zope.sqlalchemy/trunk/src/zope/sqlalchemy/datamanager.py
-=-
Modified: zope.sqlalchemy/trunk/CHANGES.txt
===================================================================
--- zope.sqlalchemy/trunk/CHANGES.txt 2008-09-12 16:29:30 UTC (rev 91100)
+++ zope.sqlalchemy/trunk/CHANGES.txt 2008-09-12 19:41:56 UTC (rev 91101)
@@ -1,6 +1,13 @@
Changes
=======
+0.4 (unreleased)
+----------------
+
+Bugs fixed:
+
+* Only raise errors in tpc_abort if we have committed.
+
0.3 (2008-07-29)
----------------
Modified: zope.sqlalchemy/trunk/setup.py
===================================================================
--- zope.sqlalchemy/trunk/setup.py 2008-09-12 16:29:30 UTC (rev 91100)
+++ zope.sqlalchemy/trunk/setup.py 2008-09-12 19:41:56 UTC (rev 91101)
@@ -52,7 +52,7 @@
setup(
name='zope.sqlalchemy',
- version='0.3', # Remember to update __version__ in __init__.py
+ version='0.4dev', # Remember to update __version__ in __init__.py
packages=find_packages('src'),
package_dir = {'':'src'},
Modified: zope.sqlalchemy/trunk/src/zope/sqlalchemy/__init__.py
===================================================================
--- zope.sqlalchemy/trunk/src/zope/sqlalchemy/__init__.py 2008-09-12 16:29:30 UTC (rev 91100)
+++ zope.sqlalchemy/trunk/src/zope/sqlalchemy/__init__.py 2008-09-12 19:41:56 UTC (rev 91101)
@@ -12,7 +12,7 @@
#
##############################################################################
-__version__ = '0.3'
+__version__ = '0.4dev'
from datamanager import ZopeTransactionExtension, mark_changed
invalidate = mark_changed
Modified: zope.sqlalchemy/trunk/src/zope/sqlalchemy/datamanager.py
===================================================================
--- zope.sqlalchemy/trunk/src/zope/sqlalchemy/datamanager.py 2008-09-12 16:29:30 UTC (rev 91100)
+++ zope.sqlalchemy/trunk/src/zope/sqlalchemy/datamanager.py 2008-09-12 19:41:56 UTC (rev 91101)
@@ -50,7 +50,7 @@
self.state = 'init'
def abort(self, trans):
- if self.tx is not None: # this could happen after a tpc_abort
+ if self.tx is not None: # there may have been no work to do
del _SESSION_STATE[id(self.session)]
self.session.close()
self.tx = self.session = None
@@ -73,13 +73,13 @@
self.tx.commit()
self.session.close()
self.tx = self.session = None
- self.state = 'finished on vote'
+ self.state = 'committed'
def tpc_finish(self, trans):
pass
def tpc_abort(self, trans):
- raise TypeError("Already committed")
+ assert self.state is not 'committed'
def sortKey(self):
# Try to sort last, so that we vote last - we may commit in tpc_vote(),
@@ -92,9 +92,9 @@
"""Savepoints are only supported when all connections support subtransactions
"""
if set(engine.url.drivername
- for engine in self.session.transaction._connections.keys()
- if isinstance(engine, Engine)
- ).intersection(NO_SAVEPOINT_SUPPORT):
+ for engine in self.session.transaction._connections.keys()
+ if isinstance(engine, Engine)
+ ).intersection(NO_SAVEPOINT_SUPPORT):
raise AttributeError('savepoint')
return self._savepoint
@@ -115,7 +115,7 @@
self.tx.commit()
self.session.close()
self.tx = self.session = None
- self.state = 'finished'
+ self.state = 'committed'
def tpc_abort(self, trans):
if self.tx is not None: # we may not have voted, and been aborted already
More information about the Checkins
mailing list