From 68f979098d1b35155cb22f6fa4adf668053063f6 Mon Sep 17 00:00:00 2001 From: Agnish Ghosh Date: Tue, 12 Nov 2024 13:56:25 +0700 Subject: [PATCH] enqueue block first, before reconstruction --- .../gossip_processing/eth2_processor.nim | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/beacon_chain/gossip_processing/eth2_processor.nim b/beacon_chain/gossip_processing/eth2_processor.nim index d6c9552ad..1160980e4 100644 --- a/beacon_chain/gossip_processing/eth2_processor.nim +++ b/beacon_chain/gossip_processing/eth2_processor.nim @@ -393,9 +393,10 @@ proc processDataColumnSidecar*( debug "Data column validated, putting data column in quarantine" self.dataColumnQuarantine[].put(newClone(dataColumnSidecar)) - self.dag.db.putDataColumnSidecar(dataColumnSidecar) - debug "Validated column belongs to custody, attempting to persist", - data_column = shortLog(dataColumnSidecar) + if self.dataColumnQuarantine[].supernode == false: + self.dag.db.putDataColumnSidecar(dataColumnSidecar) + debug "Validated column belongs to custody, attempting to persist", + data_column = shortLog(dataColumnSidecar) let block_root = hash_tree_root(block_header) if (let o = self.quarantine[].popColumnless(block_root); o.isSome): @@ -417,6 +418,10 @@ proc processDataColumnSidecar*( elif self.dataColumnQuarantine[].hasEnoughDataColumns(forkyBlck): let columns = self.dataColumnQuarantine[].gatherDataColumns(block_root) + self.blockProcessor[].enqueueBlock( + MsgSource.gossip, columnless, + Opt.none(BlobSidecars), + Opt.some(self.dataColumnQuarantine[].popDataColumns(block_root, forkyBlck))) if columns.len >= (NUMBER_OF_COLUMNS div 2) and self.dataColumnQuarantine[].supernode: let @@ -425,10 +430,7 @@ proc processDataColumnSidecar*( for rc in reconstructed_columns.get: if rc notin self.dataColumnQuarantine[].gatherDataColumns(block_root).mapIt(it[]): self.dataColumnQuarantine[].put(newClone(rc)) - self.blockProcessor[].enqueueBlock( - MsgSource.gossip, columnless, - Opt.none(BlobSidecars), - Opt.some(self.dataColumnQuarantine[].popDataColumns(block_root, forkyBlck))) + else: discard self.quarantine[].addColumnless( self.dag.finalizedHead.slot, forkyBlck)