Skip to content

Commit 3c10903

Browse files
authored
Send validator telemetry from all nodes in fast-sync overlay (#1798)
1 parent d268ac0 commit 3c10903

16 files changed

+52
-106
lines changed

create-hardfork/create-hardfork.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,9 +280,6 @@ class HardforkCreator : public td::actor::Actor {
280280

281281
void new_key_block(ton::validator::BlockHandle handle) override {
282282
}
283-
void send_validator_telemetry(ton::PublicKeyHash key,
284-
ton::tl_object_ptr<ton::ton_api::validator_telemetry> telemetry) override {
285-
}
286283
};
287284

288285
td::actor::send_closure(validator_manager_, &ton::validator::ValidatorManagerInterface::install_callback,

test/test-ton-collator.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -381,9 +381,6 @@ class TestNode : public td::actor::Actor {
381381

382382
void new_key_block(ton::validator::BlockHandle handle) override {
383383
}
384-
void send_validator_telemetry(ton::PublicKeyHash key,
385-
ton::tl_object_ptr<ton::ton_api::validator_telemetry> telemetry) override {
386-
}
387384
};
388385

389386
td::actor::send_closure(validator_manager_, &ton::validator::ValidatorManagerInterface::install_callback,

validator/full-node-fast-sync-overlays.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,21 @@ void FullNodeFastSyncOverlay::init() {
325325
std::make_unique<Callback>(actor_id(this)), rules, std::move(scope), options);
326326

327327
inited_ = true;
328+
if (shard_.is_masterchain()) {
329+
class TelemetryCallback : public ValidatorTelemetry::Callback {
330+
public:
331+
explicit TelemetryCallback(td::actor::ActorId<FullNodeFastSyncOverlay> id) : id_(id) {
332+
}
333+
void send_telemetry(tl_object_ptr<ton_api::validator_telemetry> telemetry) override {
334+
td::actor::send_closure(id_, &FullNodeFastSyncOverlay::send_validator_telemetry, std::move(telemetry));
335+
}
336+
337+
private:
338+
td::actor::ActorId<FullNodeFastSyncOverlay> id_;
339+
};
340+
telemetry_sender_ = td::actor::create_actor<ValidatorTelemetry>(
341+
"telemetry", local_id_, std::make_unique<TelemetryCallback>(actor_id(this)));
342+
}
328343
}
329344

330345
void FullNodeFastSyncOverlay::tear_down() {

validator/full-node-fast-sync-overlays.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
#pragma once
1818

1919
#include "full-node.h"
20+
#include "validator-telemetry.hpp"
21+
2022
#include <fstream>
2123

2224
namespace ton::validator::fullnode {
@@ -108,6 +110,7 @@ class FullNodeFastSyncOverlay : public td::actor::Actor {
108110
void init();
109111
void get_stats_extra(td::Promise<std::string> promise);
110112

113+
td::actor::ActorOwn<ValidatorTelemetry> telemetry_sender_;
111114
bool collect_telemetry_ = false;
112115
std::ofstream telemetry_file_;
113116
};

validator/full-node-private-overlay.cpp

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ void FullNodePrivateBlockOverlay::process_block_candidate_broadcast(PublicKeyHas
9999
}
100100

101101
void FullNodePrivateBlockOverlay::process_telemetry_broadcast(
102-
PublicKeyHash src, const tl_object_ptr<ton_api::validator_telemetry>& telemetry) {
102+
PublicKeyHash src, const tl_object_ptr<ton_api::validator_telemetry> &telemetry) {
103103
if (telemetry->adnl_id_ != src.bits256_value()) {
104104
VLOG(FULL_NODE_WARNING) << "Invalid telemetry broadcast from " << src << ": adnl_id mismatch";
105105
return;
@@ -117,9 +117,7 @@ void FullNodePrivateBlockOverlay::process_telemetry_broadcast(
117117
}
118118
VLOG(FULL_NODE_DEBUG) << "Got telemetry broadcast from " << src;
119119
auto s = td::json_encode<std::string>(td::ToJson(*telemetry), false);
120-
std::erase_if(s, [](char c) {
121-
return c == '\n' || c == '\r';
122-
});
120+
std::erase_if(s, [](char c) { return c == '\n' || c == '\r'; });
123121
telemetry_file_ << s << "\n";
124122
telemetry_file_.flush();
125123
if (telemetry_file_.fail()) {
@@ -141,9 +139,7 @@ void FullNodePrivateBlockOverlay::receive_broadcast(PublicKeyHash src, td::Buffe
141139
}
142140
return;
143141
}
144-
ton_api::downcast_call(*B.move_as_ok(), [src, Self = this](auto& obj) {
145-
Self->process_broadcast(src, obj);
146-
});
142+
ton_api::downcast_call(*B.move_as_ok(), [src, Self = this](auto &obj) { Self->process_broadcast(src, obj); });
147143
}
148144

149145
void FullNodePrivateBlockOverlay::send_shard_block_info(BlockIdExt block_id, CatchainSeqno cc_seqno,
@@ -286,6 +282,20 @@ void FullNodePrivateBlockOverlay::init() {
286282
td::actor::send_closure(rldp_, &rldp::Rldp::add_id, local_id_);
287283
td::actor::send_closure(rldp2_, &rldp2::Rldp::add_id, local_id_);
288284
inited_ = true;
285+
286+
class TelemetryCallback : public ValidatorTelemetry::Callback {
287+
public:
288+
explicit TelemetryCallback(td::actor::ActorId<FullNodePrivateBlockOverlay> id) : id_(id) {
289+
}
290+
void send_telemetry(tl_object_ptr<ton_api::validator_telemetry> telemetry) override {
291+
td::actor::send_closure(id_, &FullNodePrivateBlockOverlay::send_validator_telemetry, std::move(telemetry));
292+
}
293+
294+
private:
295+
td::actor::ActorId<FullNodePrivateBlockOverlay> id_;
296+
};
297+
telemetry_sender_ = td::actor::create_actor<ValidatorTelemetry>("telemetry", local_id_,
298+
std::make_unique<TelemetryCallback>(actor_id(this)));
289299
}
290300

291301
void FullNodePrivateBlockOverlay::tear_down() {

validator/full-node-private-overlay.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
#pragma once
1818

1919
#include "full-node.h"
20+
#include "validator-telemetry.hpp"
21+
2022
#include <fstream>
2123

2224
namespace ton::validator::fullnode {
@@ -100,6 +102,7 @@ class FullNodePrivateBlockOverlay : public td::actor::Actor {
100102
void try_init();
101103
void init();
102104

105+
td::actor::ActorOwn<ValidatorTelemetry> telemetry_sender_;
103106
bool collect_telemetry_ = false;
104107
std::ofstream telemetry_file_;
105108
};

validator/full-node.cpp

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -625,24 +625,6 @@ void FullNodeImpl::new_key_block(BlockHandle handle) {
625625
}
626626
}
627627

628-
void FullNodeImpl::send_validator_telemetry(PublicKeyHash key, tl_object_ptr<ton_api::validator_telemetry> telemetry) {
629-
if (use_old_private_overlays_) {
630-
auto it = private_block_overlays_.find(key);
631-
if (it == private_block_overlays_.end()) {
632-
VLOG(FULL_NODE_INFO) << "Cannot send validator telemetry for " << key << " : no private block overlay";
633-
return;
634-
}
635-
td::actor::send_closure(it->second, &FullNodePrivateBlockOverlay::send_validator_telemetry, std::move(telemetry));
636-
} else {
637-
auto overlay = fast_sync_overlays_.get_masterchain_overlay_for(adnl::AdnlNodeIdShort{telemetry->adnl_id_});
638-
if (overlay.empty()) {
639-
VLOG(FULL_NODE_INFO) << "Cannot send validator telemetry for adnl id " << key << " : no fast sync overlay";
640-
return;
641-
}
642-
td::actor::send_closure(overlay, &FullNodeFastSyncOverlay::send_validator_telemetry, std::move(telemetry));
643-
}
644-
}
645-
646628
void FullNodeImpl::process_block_broadcast(BlockBroadcast broadcast) {
647629
send_block_broadcast_to_custom_overlays(broadcast);
648630
td::actor::send_closure(validator_manager_, &ValidatorManagerInterface::new_block_broadcast, std::move(broadcast),
@@ -788,9 +770,6 @@ void FullNodeImpl::start_up() {
788770
void new_key_block(BlockHandle handle) override {
789771
td::actor::send_closure(id_, &FullNodeImpl::new_key_block, std::move(handle));
790772
}
791-
void send_validator_telemetry(PublicKeyHash key, tl_object_ptr<ton_api::validator_telemetry> telemetry) override {
792-
td::actor::send_closure(id_, &FullNodeImpl::send_validator_telemetry, key, std::move(telemetry));
793-
}
794773

795774
explicit Callback(td::actor::ActorId<FullNodeImpl> id) : id_(id) {
796775
}

validator/full-node.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ class FullNodeImpl : public FullNode {
9090

9191
void got_key_block_config(td::Ref<ConfigHolder> config);
9292
void new_key_block(BlockHandle handle);
93-
void send_validator_telemetry(PublicKeyHash key, tl_object_ptr<ton_api::validator_telemetry> telemetry);
9493

9594
void process_block_broadcast(BlockBroadcast broadcast) override;
9695
void process_block_candidate_broadcast(BlockIdExt block_id, CatchainSeqno cc_seqno, td::uint32 validator_set_hash,

validator/interfaces/validator-manager.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,6 @@ class ValidatorManager : public ValidatorManagerInterface {
311311
virtual void send_ihr_message(td::Ref<IhrMessage> message) = 0;
312312
virtual void send_top_shard_block_description(td::Ref<ShardTopBlockDescription> desc) = 0;
313313
virtual void send_block_broadcast(BlockBroadcast broadcast, int mode) = 0;
314-
virtual void send_validator_telemetry(PublicKeyHash key, tl_object_ptr<ton_api::validator_telemetry> telemetry) = 0;
315314
virtual void send_get_out_msg_queue_proof_request(ShardIdFull dst_shard, std::vector<BlockIdExt> blocks,
316315
block::ImportedMsgQueueLimits limits,
317316
td::Promise<std::vector<td::Ref<OutMsgQueueProof>>> promise) = 0;

validator/manager-disk.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,6 @@ class ValidatorManagerImpl : public ValidatorManager {
275275
void send_top_shard_block_description(td::Ref<ShardTopBlockDescription> desc) override;
276276
void send_block_broadcast(BlockBroadcast broadcast, int mode) override {
277277
}
278-
void send_validator_telemetry(PublicKeyHash key, tl_object_ptr<ton_api::validator_telemetry> telemetry) override {
279-
}
280278
void send_get_out_msg_queue_proof_request(ShardIdFull dst_shard, std::vector<BlockIdExt> blocks,
281279
block::ImportedMsgQueueLimits limits,
282280
td::Promise<std::vector<td::Ref<OutMsgQueueProof>>> promise) override {

0 commit comments

Comments
 (0)