[Zodb-checkins] CVS: Zope3/src/ZODB - Transaction.py:1.58.2.1 TmpStore.py:1.11.26.1 Connection.py:1.140.2.1

Jeremy Hylton jeremy at zope.com
Thu Mar 18 16:18:36 EST 2004


Update of /cvs-repository/Zope3/src/ZODB
In directory cvs.zope.org:/tmp/cvs-serv5681/src/ZODB

Modified Files:
      Tag: jeremy-txn-branch
	Transaction.py TmpStore.py Connection.py 
Log Message:
Commit working changes for ReviseTransactionAPI to jeremy-txn-branch.

All of the transaction tests pass except for two failures 
    testExceptionInSubAbortSub
    testExceptionInSubCommitSub


=== Zope3/src/ZODB/Transaction.py 1.58 => 1.58.2.1 ===
--- Zope3/src/ZODB/Transaction.py:1.58	Thu Feb 26 19:31:53 2004
+++ Zope3/src/ZODB/Transaction.py	Thu Mar 18 16:18:34 2004
@@ -532,25 +532,27 @@
 ############################################################################
 # install get_transaction:
 
-# Map thread ident to its Transaction instance.
-_tid2tran = {}
+### Map thread ident to its Transaction instance.
+##_tid2tran = {}
 
-# Get Transaction associated with current thread; if none, create a
-# new Transaction and return it.
-def get_transaction():
-    tid = _get_ident()
-    result = _tid2tran.get(tid)
-    if result is None:
-        _tid2tran[tid] = result = Transaction(tid)
-    return result
+### Get Transaction associated with current thread; if none, create a
+### new Transaction and return it.
+##def get_transaction():
+##    tid = _get_ident()
+##    result = _tid2tran.get(tid)
+##    if result is None:
+##        _tid2tran[tid] = result = Transaction(tid)
+##    return result
 
-# Forget whatever Transaction (if any) is associated with current thread.
-def free_transaction():
-    tid = _get_ident()
-    try:
-        del _tid2tran[tid]
-    except KeyError:
-        pass
+### Forget whatever Transaction (if any) is associated with current thread.
+##def free_transaction():
+##    tid = _get_ident()
+##    try:
+##        del _tid2tran[tid]
+##    except KeyError:
+##        pass
+
+from transaction import get as get_transaction
 
 import __builtin__
 __builtin__.get_transaction = get_transaction


=== Zope3/src/ZODB/TmpStore.py 1.11 => 1.11.26.1 ===
--- Zope3/src/ZODB/TmpStore.py:1.11	Thu Oct  2 14:17:19 2003
+++ Zope3/src/ZODB/TmpStore.py	Thu Mar 18 16:18:34 2004
@@ -22,8 +22,9 @@
 
     _bver = ''
 
-    def __init__(self, base_version):
+    def __init__(self, base_version, storage):
         self._transaction = None
+        self._storage = storage
         if base_version:
             self._bver = base_version
         self._file = tempfile.TemporaryFile()
@@ -34,14 +35,13 @@
         self._index = {}
         # _tindex: map oid to pos for new updates
         self._tindex = {}
-        self._db = None
         self._creating = []
 
     def close(self):
         self._file.close()
 
     def getName(self):
-        return self._db.getName()
+        return self._storage.getName()
 
     def getSize(self):
         return self._pos
@@ -66,14 +66,13 @@
     def modifiedInVersion(self, oid):
         if self._index.has_key(oid):
             return self._bver
-        return self._db._storage.modifiedInVersion(oid)
+        return self._storage.modifiedInVersion(oid)
 
     def new_oid(self):
-        return self._db._storage.new_oid()
+        return self._storage.new_oid()
 
     def registerDB(self, db, limit):
-        self._db = db
-        self._storage = db._storage
+        pass
 
     def store(self, oid, serial, data, version, transaction):
         if transaction is not self._transaction:


=== Zope3/src/ZODB/Connection.py 1.140 => 1.140.2.1 ===
--- Zope3/src/ZODB/Connection.py:1.140	Tue Mar 16 11:18:20 2004
+++ Zope3/src/ZODB/Connection.py	Thu Mar 18 16:18:34 2004
@@ -26,6 +26,8 @@
 from persistent import PickleCache
 from persistent.interfaces import IPersistent
 
+import transaction
+
 from ZODB.ConflictResolution import ResolvedSerial
 from ZODB.ExportImport import ExportImport
 from ZODB.POSException \
@@ -190,7 +192,7 @@
         t = self._transaction
         if t is None:
             # Fall back to thread-bound transactions
-            t = get_transaction()
+            t = transaction.get()
         return t
 
     def setLocalTransaction(self):
@@ -829,19 +831,16 @@
             del obj._p_oid
             del obj._p_jar
 
-    def tpc_begin(self, transaction, sub=None):
+    def tpc_begin(self, transaction, sub=False):
         self._modified = []
         
         # _creating is a list of oids of new objects, which is used to
         # remove them from the cache if a transaction aborts.
         self._creating = []
-        if sub:
+        if sub and self._tmp is None:
             # Sub-transaction!
-            if self._tmp is None:
-                _tmp = TmpStore(self._version)
-                self._tmp = self._storage
-                self._storage = _tmp
-                _tmp.registerDB(self._db, 0)
+            self._tmp = self._storage
+            self._storage = TmpStore(self._version, self._storage)
 
         self._storage.tpc_begin(transaction)
 




More information about the Zodb-checkins mailing list