From e70740f530a2724455cd7a28fe3fb0dce86861f7 Mon Sep 17 00:00:00 2001 From: Csaba Kiraly Date: Thu, 16 Feb 2023 17:34:11 +0100 Subject: [PATCH] handle duplicates in receiveRow/Column Signed-off-by: Csaba Kiraly --- DAS/validator.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/DAS/validator.py b/DAS/validator.py index 0d10425..7e02da3 100644 --- a/DAS/validator.py +++ b/DAS/validator.py @@ -197,12 +197,17 @@ class Validator: if id in self.columnIDs: # register receive so that we are not sending back self.columnNeighbors[id][src].receiving |= column - self.receivedBlock.mergeColumn(id, column) + #check for duplicates + old = self.receivedBlock.getColumn(id) for i in range(len(column)): if column[i]: - self.logger.debug("Recv: %d->%d: %d,%d", src, self.ID, i, id, extra=self.format) - if self.perNodeQueue or self.perNeighborQueue: - self.receivedQueue.append((i, id)) + if old[i]: + self.logger.debug("Recv DUP: %d->%d: %d,%d", src, self.ID, i, id, extra=self.format) + else: + self.logger.debug("Recv new: %d->%d: %d,%d", src, self.ID, i, id, extra=self.format) + if self.perNodeQueue or self.perNeighborQueue: + self.receivedQueue.append((i, id)) + self.receivedBlock.mergeColumn(id, column) self.statsRxInSlot += column.count(1) else: pass @@ -212,12 +217,17 @@ class Validator: if id in self.rowIDs: # register receive so that we are not sending back self.rowNeighbors[id][src].receiving |= row - self.receivedBlock.mergeRow(id, row) + #check for duplicates + old = self.receivedBlock.getRow(id) for i in range(len(row)): if row[i]: - self.logger.debug("Recv %d->%d: %d,%d", src, self.ID, id, i, extra=self.format) - if self.perNodeQueue or self.perNeighborQueue: - self.receivedQueue.append((id, i)) + if old[i]: + self.logger.debug("Recv DUP: %d->%d: %d,%d", src, self.ID, id, i, extra=self.format) + else: + self.logger.debug("Recv new: %d->%d: %d,%d", src, self.ID, id, i, extra=self.format) + if self.perNodeQueue or self.perNeighborQueue: + self.receivedQueue.append((id, i)) + self.receivedBlock.mergeRow(id, row) self.statsRxInSlot += row.count(1) else: pass