[Zodb-checkins] SVN: ZODB/branches/3.4/ tpc_abort(): Release the commit lock no matter what.

Tim Peters tim.one at comcast.net
Wed Oct 5 15:13:38 EDT 2005


Log message for revision 38770:
  tpc_abort():  Release the commit lock no matter what.
  

Changed:
  U   ZODB/branches/3.4/NEWS.txt
  U   ZODB/branches/3.4/src/ZODB/BaseStorage.py

-=-
Modified: ZODB/branches/3.4/NEWS.txt
===================================================================
--- ZODB/branches/3.4/NEWS.txt	2005-10-05 19:02:48 UTC (rev 38769)
+++ ZODB/branches/3.4/NEWS.txt	2005-10-05 19:13:37 UTC (rev 38770)
@@ -5,6 +5,7 @@
 Following are dates of internal releases (to support ongoing Zope 2
 development) since ZODB 3.4's last public release:
 
+- 3.4.2b3 05-Oct-2005
 - 3.4.2b2 04-Oct-2005
 - 3.4.2b1 03-Oct-2005
 
@@ -18,6 +19,15 @@
   happen, and stopped happening for subtransaction commits too.  Making a
   savepoint (or doing a subtransaction commit) does invoke cache gc now.
 
+BaseStorage
+-----------
+
+- (3.4.2b3) Nothing done by ``tpc_abort()`` should raise an exception.
+  However, if something does (an error case), ``BaseStorage.tpc_abort()``
+  left the commit lock in the acquired state, causing any later attempt
+  to commit changes hang.
+
+
 PersistentMapping
 -----------------
 

Modified: ZODB/branches/3.4/src/ZODB/BaseStorage.py
===================================================================
--- ZODB/branches/3.4/src/ZODB/BaseStorage.py	2005-10-05 19:02:48 UTC (rev 38769)
+++ ZODB/branches/3.4/src/ZODB/BaseStorage.py	2005-10-05 19:13:37 UTC (rev 38770)
@@ -192,8 +192,8 @@
             self._abort()
             self._clear_temp()
             self._transaction = None
+        finally:
             self._commit_lock_release()
-        finally:
             self._lock_release()
 
     def _abort(self):



More information about the Zodb-checkins mailing list