[Neo-report] r2493 vincent - in /trunk/neo/client: Storage.py app.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Dec 9 17:25:18 CET 2010
Author: vincent
Date: Thu Dec 9 17:25:18 2010
New Revision: 2493
Log:
Implement getTID and checkCurrentSerialInTransaction.
Modified:
trunk/neo/client/Storage.py
trunk/neo/client/app.py
Modified: trunk/neo/client/Storage.py
==============================================================================
--- trunk/neo/client/Storage.py [iso-8859-1] (original)
+++ trunk/neo/client/Storage.py [iso-8859-1] Thu Dec 9 17:25:18 2010
@@ -194,3 +194,9 @@ class Storage(BaseStorage.BaseStorage,
def close(self):
self.app.close()
+ def getTID(self, oid):
+ return self.app.getLastTID(oid)
+
+ def checkCurrentSerialInTransaction(self, oid, serial, transaction):
+ self.app.checkCurrentSerialInTransaction(oid, serial, transaction)
+
Modified: trunk/neo/client/app.py
==============================================================================
--- trunk/neo/client/app.py [iso-8859-1] (original)
+++ trunk/neo/client/app.py [iso-8859-1] Thu Dec 9 17:25:18 2010
@@ -24,6 +24,7 @@ import time
import os
from ZODB.POSException import UndoError, StorageTransactionError, ConflictError
+from ZODB.POSException import ReadConflictError
from ZODB.ConflictResolution import ResolvedSerial
from persistent.TimeStamp import TimeStamp
@@ -1260,3 +1261,13 @@ class Application(object):
raise NEOStorageError('Invalid pack time')
self._askPrimary(Packets.AskPack(tid))
+ def getLastTID(self, oid):
+ return self._load(oid)[1]
+
+ def checkCurrentSerialInTransaction(self, oid, serial, transaction):
+ if transaction is not self.local_var.txn:
+ raise StorageTransactionError(self, transaction)
+ committed_tid = self.getLastTID(oid)
+ if committed_tid != serial:
+ raise ReadConflictError(oid=oid, serials=(committed_tid, serial))
+
More information about the Neo-report
mailing list