[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