From 870c5f4bb59e6a72e45c130aac0071169de27f0b Mon Sep 17 00:00:00 2001 From: turuslan Date: Tue, 30 May 2023 15:03:17 +0300 Subject: [PATCH] fix synchronizer Signed-off-by: turuslan --- core/network/impl/synchronizer_impl.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/core/network/impl/synchronizer_impl.cpp b/core/network/impl/synchronizer_impl.cpp index 7b9e96930b..9c2e8104e5 100644 --- a/core/network/impl/synchronizer_impl.cpp +++ b/core/network/impl/synchronizer_impl.cpp @@ -135,7 +135,8 @@ namespace kagome::network { bool SynchronizerImpl::subscribeToBlock( const primitives::BlockInfo &block_info, SyncResultHandler &&handler) { // Check if block is already in tree - if (block_tree_->hasBlockHeader(block_info.hash)) { + auto has = block_tree_->hasBlockHeader(block_info.hash); + if (has and has.value()) { scheduler_->schedule( [handler = std::move(handler), block_info] { handler(block_info); }); return false; @@ -143,7 +144,7 @@ namespace kagome::network { auto last_finalized_block = block_tree_->getLastFinalized(); // Check if block from discarded side-chain - if (last_finalized_block.number <= block_info.number) { + if (last_finalized_block.number >= block_info.number) { scheduler_->schedule( [handler = std::move(handler)] { handler(Error::DISCARDED_BLOCK); }); return false; @@ -1205,9 +1206,8 @@ namespace kagome::network { } } - auto node = known_blocks_.extract(hash); - if (node) { - auto &block_data = node.mapped().data; + if (auto it = known_blocks_.find(hash); it != known_blocks_.end()) { + auto &block_data = it->second.data; BOOST_ASSERT(block_data.header.has_value()); const BlockInfo block_info(block_data.header->number, block_data.hash); @@ -1302,7 +1302,6 @@ namespace kagome::network { if (not block_addition_result.has_value()) { if (block_addition_result != outcome::failure(blockchain::BlockTreeError::BLOCK_EXISTS)) { - notifySubscribers(block_info, block_addition_result.as_failure()); auto n = discardBlock(block_data.hash); SL_WARN(log_, "Block {} {} been discarded: {}",