From d3f916a8f62dfe2d9c8d298d3df066addfb1e16d Mon Sep 17 00:00:00 2001 From: Andrey Tvorozhkov Date: Wed, 14 Feb 2024 00:32:01 +0300 Subject: [PATCH] Try not null cell --- validator/manager-disk.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/validator/manager-disk.cpp b/validator/manager-disk.cpp index 4a5c106ed..a349a17f7 100644 --- a/validator/manager-disk.cpp +++ b/validator/manager-disk.cpp @@ -100,18 +100,24 @@ void ShardClientDetector::receive_result(BlockIdExt mc_blkid, BlockIdExt shard_b } if (R.is_ok()) { - mc_shards_waits_[mc_blkid] -= 1; - if (mc_shards_waits_[mc_blkid] == 0) { - mc_shards_waits_.erase(mc_blkid); - auto state = std::move(mc_states_[mc_blkid]); - mc_states_.erase(mc_blkid); - - if (shard_waiters.empty()) { - alarm_timestamp() = td::Timestamp::never(); - } + auto x = R.move_as_ok(); + auto cell = x->root_cell(); + + if (!cell.is_null()) { + mc_shards_waits_[mc_blkid] -= 1; + if (mc_shards_waits_[mc_blkid] == 0) { + mc_shards_waits_.erase(mc_blkid); + auto state = std::move(mc_states_[mc_blkid]); + mc_states_.erase(mc_blkid); + + if (shard_waiters.empty()) { + alarm_timestamp() = td::Timestamp::never(); + } - td::actor::send_closure_later(manager_, &ValidatorManager::update_lite_server_state, mc_blkid, std::move(state)); - return; + td::actor::send_closure_later(manager_, &ValidatorManager::update_lite_server_state, mc_blkid, + std::move(state)); + return; + } } } @@ -1381,7 +1387,7 @@ void ValidatorManagerImpl::update_shard_client_state(BlockIdExt masterchain_bloc void ValidatorManagerImpl::update_lite_server_state(BlockIdExt shard_client, td::Ref state) { if (last_liteserver_state_.is_null()) { - LOG(INFO) << "New shard client available: " << shard_client; + LOG(INFO) << "New shard client available (from null): " << shard_client; last_liteserver_block_id_ = shard_client; last_liteserver_state_ = std::move(state); return;