[Neo-report] r2595 vincent - in /trunk/neo: client/app.py tests/client/testClientApp.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Jan 6 15:08:55 CET 2011
Author: vincent
Date: Thu Jan 6 15:08:55 2011
New Revision: 2595
Log:
Do not work on local_var.conflict_serial_dict when resolving conflicts.
If a conflict gets reported while handling a previously-reported conflict
on the same object, second conflict is dropped on
conflict_serial_dict.pop()
before it is handled.
Modified:
trunk/neo/client/app.py
trunk/neo/tests/client/testClientApp.py
Modified: trunk/neo/client/app.py
==============================================================================
--- trunk/neo/client/app.py [iso-8859-1] (original)
+++ trunk/neo/client/app.py [iso-8859-1] Thu Jan 6 15:08:55 2011
@@ -761,15 +761,16 @@ class Application(object):
# Check for conflicts
data_dict = local_var.data_dict
object_serial_dict = local_var.object_serial_dict
- conflict_serial_dict = local_var.conflict_serial_dict
+ conflict_serial_dict = local_var.conflict_serial_dict.copy()
+ local_var.conflict_serial_dict.clear()
resolved_conflict_serial_dict = local_var.resolved_conflict_serial_dict
- for oid, conflict_serial_set in conflict_serial_dict.items():
+ for oid, conflict_serial_set in conflict_serial_dict.iteritems():
resolved_serial_set = resolved_conflict_serial_dict.setdefault(
oid, set())
conflict_serial = max(conflict_serial_set)
if resolved_serial_set and conflict_serial <= max(resolved_serial_set):
# A later serial has already been resolved, skip.
- resolved_serial_set.update(conflict_serial_dict.pop(oid))
+ resolved_serial_set.update(conflict_serial_set)
continue
serial = object_serial_dict[oid]
data = data_dict[oid]
@@ -783,8 +784,7 @@ class Application(object):
'%r:%r with %r', dump(oid), dump(serial),
dump(conflict_serial))
# Mark this conflict as resolved
- resolved_serial_set.update(conflict_serial_dict.pop(
- oid))
+ resolved_serial_set.update(conflict_serial_set)
# Try to store again
self._store(oid, conflict_serial, new_data)
append(oid)
Modified: trunk/neo/tests/client/testClientApp.py
==============================================================================
--- trunk/neo/tests/client/testClientApp.py [iso-8859-1] (original)
+++ trunk/neo/tests/client/testClientApp.py [iso-8859-1] Thu Jan 6 15:08:55 2011
@@ -482,7 +482,6 @@ class ClientApplicationTests(NeoUnitTest
self.assertRaises(ConflictError, app.waitStoreResponses,
failing_tryToResolveConflict)
self.assertTrue(oid not in app.local_var.data_dict)
- self.assertEquals(app.local_var.conflict_serial_dict[oid], set([tid, ]))
self.assertEquals(app.local_var.object_stored_counter_dict[oid], {})
self.checkAskStoreObject(conn)
More information about the Neo-report
mailing list