From 8eae0fa4439b01bda38bb619b67ffd991ecab809 Mon Sep 17 00:00:00 2001 From: Robert Habermeier <rphmeier@gmail.com> Date: Wed, 7 Apr 2021 22:04:15 +0200 Subject: [PATCH] check for lost race before warning (#2833) --- .../node/core/approval-voting/src/import.rs | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/polkadot/node/core/approval-voting/src/import.rs b/polkadot/node/core/approval-voting/src/import.rs index 68dd5e59043..eef3d306f40 100644 --- a/polkadot/node/core/approval-voting/src/import.rs +++ b/polkadot/node/core/approval-voting/src/import.rs @@ -636,13 +636,26 @@ pub(crate) async fn handle_new_head( match imported_block_info(ctx, env, block_hash, &block_header).await? { Some(i) => imported_blocks_and_info.push((block_hash, block_header, i)), None => { - // Such errors are likely spurious, but this prevents us from getting gaps - // in the approval-db. - tracing::warn!( - target: LOG_TARGET, - "Unable to gather info about imported block {:?}. Skipping chain.", - (block_hash, block_header.number), - ); + // It's possible that we've lost a race with finality. + let (tx, rx) = oneshot::channel(); + ctx.send_message( + ChainApiMessage::FinalizedBlockHash(block_header.number.clone(), tx).into() + ).await; + + let lost_to_finality = match rx.await { + Ok(Ok(Some(h))) if h != block_hash => true, + _ => false, + }; + + if !lost_to_finality { + // Such errors are likely spurious, but this prevents us from getting gaps + // in the approval-db. + tracing::warn!( + target: LOG_TARGET, + "Unable to gather info about imported block {:?}. Skipping chain.", + (block_hash, block_header.number), + ); + } return Ok(Vec::new()); }, -- GitLab