From 42dd7cd865ac1fb59f6c40c70e1b9c5def681b77 Mon Sep 17 00:00:00 2001 From: Ivan Kalinin Date: Thu, 4 Jul 2024 22:28:42 +0200 Subject: [PATCH] fix(collator): require state to be applied to skip validation --- collator/src/validator/validator.rs | 34 +++++++++++++---------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/collator/src/validator/validator.rs b/collator/src/validator/validator.rs index 954ae6175..efcbff719 100644 --- a/collator/src/validator/validator.rs +++ b/collator/src/validator/validator.rs @@ -416,26 +416,22 @@ async fn check_and_notify_validated_by_state( block_id: &BlockId, listeners: &[Arc], ) -> Result { - if state_node_adapter - .load_block_handle(block_id) - .await? - .is_some() - { - for listener in listeners.iter() { - tokio::spawn({ - let listener = listener.clone(); - let block_id = *block_id; - async move { - listener - .on_block_validated(block_id, OnValidatedBlockEvent::ValidByState) - .await - .expect("Failed to notify listener"); - } - }); - } - return Ok(true); + match state_node_adapter.load_block_handle(block_id).await? { + Some(handle) if handle.meta().is_applied() => {} + _ => return Ok(false), + } + + for listener in listeners { + let listener = listener.clone(); + let block_id = *block_id; + tokio::spawn(async move { + listener + .on_block_validated(block_id, OnValidatedBlockEvent::ValidByState) + .await + .expect("Failed to notify listener"); + }); } - Ok(false) + return Ok(true); } #[allow(clippy::too_many_arguments)]