[Neo-report] r2417 vincent - in /trunk/neo: storage/ tests/storage/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Nov 5 14:41:05 CET 2010


Author: vincent
Date: Fri Nov  5 14:41:04 2010
New Revision: 2417

Log:
By default, don't drop locked transactions.

This change has an important effect on "abort" call in client handler: once
primary master node locked a transaction, a client must not be allowed to
abort it (it already asked to commit).
Also, remove parameter value in abortFor (it is the new default behaviour).
Also, document abort a bit more.

Modified:
    trunk/neo/storage/transactions.py
    trunk/neo/tests/storage/testTransactions.py

Modified: trunk/neo/storage/transactions.py
==============================================================================
--- trunk/neo/storage/transactions.py [iso-8859-1] (original)
+++ trunk/neo/storage/transactions.py [iso-8859-1] Fri Nov  5 14:41:04 2010
@@ -227,9 +227,12 @@ class TransactionManager(object):
         transaction = self._transaction_dict[tid]
         transaction.addObject(oid, compression, checksum, data, value_serial)
 
-    def abort(self, tid, even_if_locked=True):
+    def abort(self, tid, even_if_locked=False):
         """
             Abort a transaction
+            Releases locks held on all transaction objects, deletes Transaction
+            instance, and executed queued events.
+            Note: does not alter persistent content.
         """
         if tid not in self._transaction_dict:
             # the tid may be unknown as the transaction is aborted on every node
@@ -265,7 +268,7 @@ class TransactionManager(object):
         """
         # abort any non-locked transaction of this node
         for tid in [x.getTID() for x in self._uuid_dict.get(uuid, [])]:
-            self.abort(tid, even_if_locked=False)
+            self.abort(tid)
         # cleanup _uuid_dict if no transaction remains for this node
         transaction_set = self._uuid_dict.get(uuid)
         if transaction_set is not None and not transaction_set:

Modified: trunk/neo/tests/storage/testTransactions.py
==============================================================================
--- trunk/neo/tests/storage/testTransactions.py [iso-8859-1] (original)
+++ trunk/neo/tests/storage/testTransactions.py [iso-8859-1] Fri Nov  5 14:41:04 2010
@@ -263,7 +263,7 @@ class TransactionManagerTests(NeoUnitTes
         # lock transaction
         self.manager.lock(tid, txn[0])
         self.assertTrue(tid in self.manager)
-        self.manager.abort(tid, even_if_locked=False)
+        self.manager.abort(tid)
         self.assertTrue(tid in self.manager)
         for oid in txn[0]:
             self.assertTrue(self.manager.loadLocked(oid))





More information about the Neo-report mailing list