From 503e10c05acd4c1d346f42d5ad4fd324cdf5b1e6 Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Wed, 26 Jul 2023 17:28:14 +0300 Subject: [PATCH] Fix choose_neighbour in full-node-shard --- validator/full-node-shard.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/validator/full-node-shard.cpp b/validator/full-node-shard.cpp index a9919754..7938111a 100644 --- a/validator/full-node-shard.cpp +++ b/validator/full-node-shard.cpp @@ -1194,6 +1194,10 @@ const Neighbour &FullNodeShardImpl::choose_neighbour(bool require_state) const { return Neighbour::zero; } + double min_unreliability = 1e9; + for (auto &x : neighbours_) { + min_unreliability = std::min(min_unreliability, x.second.unreliability); + } for (int attempt = 0; attempt < (require_state ? 2 : 1); ++attempt) { const Neighbour *best = nullptr; td::uint32 sum = 0; @@ -1207,7 +1211,7 @@ const Neighbour &FullNodeShardImpl::choose_neighbour(bool require_state) const { continue; } } - auto unr = static_cast(x.second.unreliability); + auto unr = static_cast(x.second.unreliability - min_unreliability); if (x.second.proto_version < proto_version()) { unr += 4;