[Neo-report] r2502 gregory - in /trunk/neo: storage/handlers/ tests/storage/
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Dec 9 18:18:00 CET 2010
Author: gregory
Date: Thu Dec 9 18:18:00 2010
New Revision: 2502
Log:
Avoid double-end of a replication.
Modified:
trunk/neo/storage/handlers/replication.py
trunk/neo/tests/storage/testReplicationHandler.py
Modified: trunk/neo/storage/handlers/replication.py
==============================================================================
--- trunk/neo/storage/handlers/replication.py [iso-8859-1] (original)
+++ trunk/neo/storage/handlers/replication.py [iso-8859-1] Thu Dec 9 18:18:00 2010
@@ -115,7 +115,10 @@ class ReplicationHandler(EventHandler):
missing_tid_set = tid_set - my_tid_set
for tid in missing_tid_set:
ask(Packets.AskTransactionInformation(tid), timeout=300)
- ask(self._doAskCheckTIDRange(add64(tid_list[-1], 1), RANGE_LENGTH))
+ if len(tid_list) == MIN_RANGE_LENGTH:
+ # If we received fewer, we knew it before sending AskTIDsFrom, and
+ # we should have finished TID replication at that time.
+ ask(self._doAskCheckTIDRange(add64(tid_list[-1], 1), RANGE_LENGTH))
@checkConnectionIsReplicatorConnection
def answerTransactionInformation(self, conn, tid,
@@ -155,8 +158,9 @@ class ReplicationHandler(EventHandler):
missing_object_set = object_set - my_object_set
for oid, serial in missing_object_set:
ask(Packets.AskObject(oid, serial, None), timeout=300)
- ask(self._doAskCheckSerialRange(max_oid, add64(max_serial, 1),
- RANGE_LENGTH))
+ if sum((len(x) for x in object_dict.itervalues())) == MIN_RANGE_LENGTH:
+ ask(self._doAskCheckSerialRange(max_oid, add64(max_serial, 1),
+ RANGE_LENGTH))
@checkConnectionIsReplicatorConnection
def answerObject(self, conn, oid, serial_start,
Modified: trunk/neo/tests/storage/testReplicationHandler.py
==============================================================================
--- trunk/neo/tests/storage/testReplicationHandler.py [iso-8859-1] (original)
+++ trunk/neo/tests/storage/testReplicationHandler.py [iso-8859-1] Thu Dec 9 18:18:00 2010
@@ -196,14 +196,12 @@ class StorageReplicationHandlerTests(Neo
app = self.getApp(conn=conn, tid_result=[])
# With no known TID
ReplicationHandler(app).answerTIDsFrom(conn, tid_list)
- self._checkPacketTIDList(conn, tid_list[:], tid_list[-1], app)
# With some TIDs known
conn = self.getFakeConnection()
known_tid_list = [tid_list[0], tid_list[1]]
unknown_tid_list = [tid_list[2], ]
app = self.getApp(conn=conn, tid_result=known_tid_list)
ReplicationHandler(app).answerTIDsFrom(conn, tid_list[1:])
- self._checkPacketTIDList(conn, unknown_tid_list, tid_list[-1], app)
calls = app.dm.mockGetNamedCalls('deleteTransaction')
self.assertEqual(len(calls), 1)
calls[0].checkArgs(tid_list[0])
@@ -243,8 +241,6 @@ class StorageReplicationHandlerTests(Neo
app = self.getApp(conn=conn, history_result={})
# With no known OID/Serial
ReplicationHandler(app).answerObjectHistoryFrom(conn, oid_dict)
- self._checkPacketSerialList(conn, flat_oid_list, oid_4, tid_list[5],
- app)
# With some known OID/Serials
# For test to be realist, history_result should contain the same
# number of serials as oid_dict, otherise it just tests the special
@@ -257,11 +253,6 @@ class StorageReplicationHandlerTests(Neo
oid_5: [tid_list[6]],
})
ReplicationHandler(app).answerObjectHistoryFrom(conn, oid_dict)
- self._checkPacketSerialList(conn, (
- (oid_1, oid_dict[oid_1][1]),
- (oid_2, oid_dict[oid_2][0]),
- (oid_2, oid_dict[oid_2][1]),
- ), oid_4, tid_list[5], app)
calls = app.dm.mockGetNamedCalls('deleteObject')
actual_deletes = set(((x.getParam(0), x.getParam(1)) for x in calls))
expected_deletes = set((
More information about the Neo-report
mailing list