1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-03-09 15:40:10 +00:00

Merge branch 'testnet' into accelerator

This commit is contained in:
SpyCheese 2024-11-26 09:28:07 +03:00
commit e6aac0b143
30 changed files with 426 additions and 11 deletions

View file

@ -69,6 +69,7 @@ void FullNodeImpl::del_permanent_key(PublicKeyHash key, td::Promise<td::Unit> pr
}
local_keys_.erase(key);
private_block_overlays_.erase(key);
update_validator_telemetry_collector();
for (auto &p : custom_overlays_) {
update_custom_overlay(p.second);
}
@ -593,6 +594,15 @@ void FullNodeImpl::new_key_block(BlockHandle handle) {
}
}
void FullNodeImpl::send_validator_telemetry(PublicKeyHash key, tl_object_ptr<ton_api::validator_telemetry> telemetry) {
auto it = private_block_overlays_.find(key);
if (it == private_block_overlays_.end()) {
VLOG(FULL_NODE_INFO) << "Cannot send validator telemetry for " << key << " : no private block overlay";
return;
}
td::actor::send_closure(it->second, &FullNodePrivateBlockOverlay::send_validator_telemetry, std::move(telemetry));
}
void FullNodeImpl::process_block_broadcast(BlockBroadcast broadcast) {
send_block_broadcast_to_custom_overlays(broadcast);
td::actor::send_closure(validator_manager_, &ValidatorManagerInterface::prevalidate_block, std::move(broadcast),
@ -615,6 +625,24 @@ void FullNodeImpl::process_block_candidate_broadcast(BlockIdExt block_id, Catcha
std::move(data));
}
void FullNodeImpl::set_validator_telemetry_filename(std::string value) {
validator_telemetry_filename_ = std::move(value);
update_validator_telemetry_collector();
}
void FullNodeImpl::update_validator_telemetry_collector() {
if (validator_telemetry_filename_.empty() || private_block_overlays_.empty()) {
validator_telemetry_collector_key_ = PublicKeyHash::zero();
return;
}
if (!private_block_overlays_.contains(validator_telemetry_collector_key_)) {
auto it = private_block_overlays_.begin();
validator_telemetry_collector_key_ = it->first;
td::actor::send_closure(it->second, &FullNodePrivateBlockOverlay::collect_validator_telemetry,
validator_telemetry_filename_);
}
}
void FullNodeImpl::start_up() {
update_shard_actor(ShardIdFull{masterchainId}, true);
if (local_id_.is_zero()) {
@ -695,6 +723,9 @@ void FullNodeImpl::start_up() {
void new_key_block(BlockHandle handle) override {
td::actor::send_closure(id_, &FullNodeImpl::new_key_block, std::move(handle));
}
void send_validator_telemetry(PublicKeyHash key, tl_object_ptr<ton_api::validator_telemetry> telemetry) override {
td::actor::send_closure(id_, &FullNodeImpl::send_validator_telemetry, key, std::move(telemetry));
}
explicit Callback(td::actor::ActorId<FullNodeImpl> id) : id_(id) {
}
@ -713,6 +744,7 @@ void FullNodeImpl::update_private_overlays() {
}
private_block_overlays_.clear();
update_validator_telemetry_collector();
if (local_keys_.empty()) {
return;
}
@ -734,6 +766,7 @@ void FullNodeImpl::create_private_block_overlay(PublicKeyHash key) {
private_block_overlays_[key] = td::actor::create_actor<FullNodePrivateBlockOverlay>(
"BlocksPrivateOverlay", current_validators_[key], std::move(nodes), zero_state_file_hash_, config_, keyring_,
adnl_, rldp_, rldp2_, overlays_, validator_manager_, actor_id(this));
update_validator_telemetry_collector();
}
}