From ba90f969362f61ac4d6c787e080fc0368b9c00e5 Mon Sep 17 00:00:00 2001 From: Sertug17 <104278804+Sertug17@users.noreply.github.com> Date: Wed, 12 Aug 2026 22:13:47 +0300 Subject: [PATCH] fix: resolve 4 panics in mempool and proposer - fix BlockProposer warn log: our_height was logging proposal_height - replace todo!() with fallback MempoolKey for data=None messages - replace unwrap() with safe map on fname_transfer.proof Closes #1013 --- src/consensus/proposer.rs | 7 ++++--- src/mempool/mempool.rs | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/consensus/proposer.rs b/src/consensus/proposer.rs index 3f3df9a4f..22a40d503 100644 --- a/src/consensus/proposer.rs +++ b/src/consensus/proposer.rs @@ -170,7 +170,7 @@ impl Proposer for ShardProposer { let previous_chunk = self.engine.get_last_shard_chunk(); let parent_hash = match previous_chunk { Some(chunk) => chunk.hash.clone(), - None => vec![0, 32], + None => vec![0; 32], }; let state_change = @@ -582,10 +582,11 @@ impl Proposer for BlockProposer { let header = block.header.as_ref().unwrap(); let height = header.height.unwrap(); - if height != self.get_confirmed_height().increment() { + let confirmed_height = self.get_confirmed_height(); + if height != confirmed_height.increment() { warn!( shard = height.shard_index, - our_height = height.block_number, + our_height = confirmed_height.block_number, proposal_height = height.block_number, "Cannot validate height, not the next height" ); diff --git a/src/mempool/mempool.rs b/src/mempool/mempool.rs index b5f11a488..5468a2e0a 100644 --- a/src/mempool/mempool.rs +++ b/src/mempool/mempool.rs @@ -307,7 +307,7 @@ impl MessageMempoolExt for proto::Message { self.hex_hash(), ); } - todo!(); + MempoolKey::new(MempoolMessageKind::UserMessage, 0, self.hex_hash()) } } @@ -326,7 +326,7 @@ impl ValidatorMessageMempoolExt for proto::ValidatorMessage { } else if let Some(fname_transfer) = &self.fname_transfer { MempoolKey::new( MempoolMessageKind::ValidatorMessage, - fname_transfer.proof.as_ref().unwrap().timestamp, + fname_transfer.proof.as_ref().map(|p| p.timestamp).unwrap_or(0), fname_transfer.id.to_string(), ) } else if let Some(block_event) = &self.block_event {