[Zope-Checkins] CVS: StandaloneZODB/ZODB/tests - StorageTestBase.py:1.15

Jeremy Hylton jeremy@zope.com
Fri, 25 Jan 2002 12:30:43 -0500


Update of /cvs-repository/StandaloneZODB/ZODB/tests
In directory cvs.zope.org:/tmp/cvs-serv9189

Modified Files:
	StorageTestBase.py 
Log Message:
Guarantee that _dostore() does not leave a transaction in progress.

Put the tpc_begin() -> tpc_finish() in a try/except.  If an error
occurs, abort the current transaction and re-raise the error.

It appears that some storages (well, only Standby Storage) has trouble
shutting down if a transaction is in progress.


=== StandaloneZODB/ZODB/tests/StorageTestBase.py 1.14 => 1.15 ===
         if description is not None:
             t.description = description
-        self._storage.tpc_begin(t)
-        # Store an object
-        r1 = self._storage.store(oid, revid, data, version, t)
-        # Finish the transaction
-        r2 = self._storage.tpc_vote(t)
-        revid = handle_serials(oid, r1, r2)
-        self._storage.tpc_finish(t)
+        try:
+            self._storage.tpc_begin(t)
+            # Store an object
+            r1 = self._storage.store(oid, revid, data, version, t)
+            # Finish the transaction
+            r2 = self._storage.tpc_vote(t)
+            revid = handle_serials(oid, r1, r2)
+            self._storage.tpc_finish(t)
+        except:
+            self._storage.tpc_abort(t)
+            raise
         return revid
         
     def _dostoreNP(self, oid=None, revid=None, data=None, version=None,