[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