Skip to content

Commit 6755b83

Browse files
authored
Various changes in node (#1230)
* Remove unneeded "wait_neighbours_not_empty" * Fix "round_started_at" for the first round * Fix use after move in overlay.cpp * Move "last gc masterchain state" stat to CellDbIn::prepare_stats * Fix disabling state serializer
1 parent b781993 commit 6755b83

File tree

10 files changed

+20
-91
lines changed

10 files changed

+20
-91
lines changed

overlay/overlay-peers.cpp

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -633,14 +633,9 @@ std::vector<adnl::AdnlNodeIdShort> OverlayImpl::get_neighbours(td::uint32 max_si
633633
}
634634

635635
void OverlayImpl::send_message_to_neighbours(td::BufferSlice data) {
636-
wait_neighbours_not_empty([this, data = std::move(data)](td::Result<td::Unit> R) {
637-
if (R.is_error()) {
638-
return;
639-
}
640-
for (auto &n : peer_list_.neighbours_) {
641-
td::actor::send_closure(manager_, &OverlayManager::send_message, n, local_id_, overlay_id_, data.clone());
642-
}
643-
});
636+
for (auto &n : peer_list_.neighbours_) {
637+
td::actor::send_closure(manager_, &OverlayManager::send_message, n, local_id_, overlay_id_, data.clone());
638+
}
644639
}
645640

646641
size_t OverlayImpl::neighbours_cnt() const {

overlay/overlay.cpp

Lines changed: 11 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ OverlayImpl::OverlayImpl(td::actor::ActorId<keyring::Keyring> keyring, td::actor
101101

102102
VLOG(OVERLAY_INFO) << this << ": creating";
103103

104-
update_root_member_list(std::move(nodes), std::move(root_public_keys), std::move(cert));
105-
106-
update_neighbours(static_cast<td::uint32>(nodes.size()));
104+
auto nodes_size = static_cast<td::uint32>(nodes.size());
105+
OverlayImpl::update_root_member_list(std::move(nodes), std::move(root_public_keys), std::move(cert));
106+
update_neighbours(nodes_size);
107107
}
108108

109109
void OverlayImpl::process_query(adnl::AdnlNodeIdShort src, ton_api::overlay_getRandomPeers &query,
@@ -457,20 +457,6 @@ void OverlayImpl::bcast_gc() {
457457
CHECK(delivered_broadcasts_.size() == bcast_lru_.size());
458458
}
459459

460-
void OverlayImpl::wait_neighbours_not_empty(td::Promise<td::Unit> promise, int max_retries) {
461-
if (!peer_list_.neighbours_.empty()) {
462-
promise.set_result(td::Unit());
463-
} else if (max_retries > 0) {
464-
delay_action(
465-
[SelfId = actor_id(this), promise = std::move(promise), max_retries]() mutable {
466-
td::actor::send_closure(SelfId, &OverlayImpl::wait_neighbours_not_empty, std::move(promise), max_retries - 1);
467-
},
468-
td::Timestamp::in(0.5));
469-
} else {
470-
promise.set_error(td::Status::Error(ErrorCode::timeout));
471-
}
472-
}
473-
474460
void OverlayImpl::send_broadcast(PublicKeyHash send_as, td::uint32 flags, td::BufferSlice data) {
475461
if (!has_valid_membership_certificate()) {
476462
VLOG(OVERLAY_WARNING) << "member certificate is invalid, valid_until="
@@ -481,33 +467,23 @@ void OverlayImpl::send_broadcast(PublicKeyHash send_as, td::uint32 flags, td::Bu
481467
VLOG(OVERLAY_WARNING) << "broadcast source certificate is invalid";
482468
return;
483469
}
484-
wait_neighbours_not_empty([this, send_as, flags, data = std::move(data)](td::Result<td::Unit> R) mutable {
485-
if (R.is_error()) {
486-
return;
487-
}
488-
auto S = BroadcastSimple::create_new(actor_id(this), keyring_, send_as, std::move(data), flags);
489-
if (S.is_error()) {
490-
LOG(WARNING) << "failed to send broadcast: " << S;
491-
}
492-
});
470+
auto S = BroadcastSimple::create_new(actor_id(this), keyring_, send_as, std::move(data), flags);
471+
if (S.is_error()) {
472+
LOG(WARNING) << "failed to send broadcast: " << S;
473+
}
493474
}
494475

495476
void OverlayImpl::send_broadcast_fec(PublicKeyHash send_as, td::uint32 flags, td::BufferSlice data) {
496477
if (!has_valid_membership_certificate()) {
497-
VLOG(OVERLAY_WARNING) << "meber certificate ist invalid, valid_until="
478+
VLOG(OVERLAY_WARNING) << "meber certificate is invalid, valid_until="
498479
<< peer_list_.local_cert_is_valid_until_.at_unix();
499480
return;
500481
}
501482
if (!has_valid_broadcast_certificate(send_as, data.size(), true)) {
502483
VLOG(OVERLAY_WARNING) << "broadcast source certificate is invalid";
503484
return;
504485
}
505-
wait_neighbours_not_empty([this, send_as, flags, data = std::move(data)](td::Result<td::Unit> R) mutable {
506-
if (R.is_error()) {
507-
return;
508-
}
509-
OverlayOutboundFecBroadcast::create(std::move(data), flags, actor_id(this), send_as);
510-
});
486+
OverlayOutboundFecBroadcast::create(std::move(data), flags, actor_id(this), send_as);
511487
}
512488

513489
void OverlayImpl::print(td::StringBuilder &sb) {
@@ -752,7 +728,8 @@ bool OverlayImpl::has_valid_broadcast_certificate(const PublicKeyHash &source, s
752728
return false;
753729
}
754730
auto it = certs_.find(source);
755-
return check_source_eligible(source, it == certs_.end() ? nullptr : it->second.get(), (td::uint32)size, is_fec);
731+
return check_source_eligible(source, it == certs_.end() ? nullptr : it->second.get(), (td::uint32)size, is_fec) !=
732+
BroadcastCheckResult::Forbidden;
756733
}
757734

758735
} // namespace overlay

overlay/overlay.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,8 +320,6 @@ class OverlayImpl : public Overlay {
320320
del_peer(peer_id);
321321
}
322322

323-
void wait_neighbours_not_empty(td::Promise<td::Unit> promise, int max_retries = 20);
324-
325323
private:
326324
template <class T>
327325
void process_query(adnl::AdnlNodeIdShort src, T &query, td::Promise<td::BufferSlice> promise) {

validator-session/validator-session.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,9 @@ ValidatorSessionImpl::ValidatorSessionImpl(catchain::CatChainSessionId session_i
992992
}
993993

994994
void ValidatorSessionImpl::start() {
995+
round_started_at_ = td::Timestamp::now();
996+
round_debug_at_ = td::Timestamp::in(60.0);
997+
stats_init();
995998
started_ = true;
996999
VLOG(VALIDATOR_SESSION_NOTICE) << this << ": started";
9971000

@@ -1097,8 +1100,6 @@ void ValidatorSessionImpl::start_up() {
10971100

10981101
check_all();
10991102
td::actor::send_closure(rldp_, &rldp::Rldp::add_id, description().get_source_adnl_id(local_idx()));
1100-
1101-
stats_init();
11021103
}
11031104

11041105
void ValidatorSessionImpl::stats_init() {

validator/db/celldb.cpp

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -226,10 +226,6 @@ void CellDbIn::get_cell_db_reader(td::Promise<std::shared_ptr<vm::CellDbReader>>
226226
promise.set_result(boc_->get_cell_db_reader());
227227
}
228228

229-
void CellDbIn::get_last_deleted_mc_state(td::Promise<BlockSeqno> promise) {
230-
promise.set_result(last_deleted_mc_state_);
231-
}
232-
233229
std::vector<std::pair<std::string, std::string>> CellDbIn::prepare_stats() {
234230
TD_PERF_COUNTER(celldb_prepare_stats);
235231
auto r_boc_stats = boc_->get_stats();
@@ -257,6 +253,7 @@ std::vector<std::pair<std::string, std::string>> CellDbIn::prepare_stats() {
257253
double(celldb_size));
258254
add_stat("max_possible_ram_to_celldb_ratio", double(total_mem_stat.total_ram) / double(celldb_size));
259255
}
256+
stats.emplace_back("last_deleted_mc_state", td::to_string(last_deleted_mc_state_));
260257

261258
return stats;
262259
// do not clear statistics, it is needed for flush_db_stats
@@ -580,10 +577,6 @@ void CellDb::get_cell_db_reader(td::Promise<std::shared_ptr<vm::CellDbReader>> p
580577
td::actor::send_closure(cell_db_, &CellDbIn::get_cell_db_reader, std::move(promise));
581578
}
582579

583-
void CellDb::get_last_deleted_mc_state(td::Promise<BlockSeqno> promise) {
584-
td::actor::send_closure(cell_db_, &CellDbIn::get_last_deleted_mc_state, std::move(promise));
585-
}
586-
587580
void CellDb::start_up() {
588581
CellDbBase::start_up();
589582
boc_ = vm::DynamicBagOfCellsDb::create();

validator/db/celldb.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ class CellDbIn : public CellDbBase {
6565
void load_cell(RootHash hash, td::Promise<td::Ref<vm::DataCell>> promise);
6666
void store_cell(BlockIdExt block_id, td::Ref<vm::Cell> cell, td::Promise<td::Ref<vm::DataCell>> promise);
6767
void get_cell_db_reader(td::Promise<std::shared_ptr<vm::CellDbReader>> promise);
68-
void get_last_deleted_mc_state(td::Promise<BlockSeqno> promise);
6968

7069
void migrate_cell(td::Bits256 hash);
7170

@@ -190,7 +189,6 @@ class CellDb : public CellDbBase {
190189
in_memory_boc_ = std::move(in_memory_boc);
191190
}
192191
void get_cell_db_reader(td::Promise<std::shared_ptr<vm::CellDbReader>> promise);
193-
void get_last_deleted_mc_state(td::Promise<BlockSeqno> promise);
194192

195193
CellDb(td::actor::ActorId<RootDb> root_db, std::string path, td::Ref<ValidatorManagerOptions> opts)
196194
: root_db_(root_db), path_(path), opts_(opts) {

validator/db/rootdb.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -285,10 +285,6 @@ void RootDb::get_cell_db_reader(td::Promise<std::shared_ptr<vm::CellDbReader>> p
285285
td::actor::send_closure(cell_db_, &CellDb::get_cell_db_reader, std::move(promise));
286286
}
287287

288-
void RootDb::get_last_deleted_mc_state(td::Promise<BlockSeqno> promise) {
289-
td::actor::send_closure(cell_db_, &CellDb::get_last_deleted_mc_state, std::move(promise));
290-
}
291-
292288
void RootDb::store_persistent_state_file(BlockIdExt block_id, BlockIdExt masterchain_block_id, td::BufferSlice state,
293289
td::Promise<td::Unit> promise) {
294290
td::actor::send_closure(archive_db_, &ArchiveManager::add_persistent_state, block_id, masterchain_block_id,

validator/db/rootdb.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ class RootDb : public Db {
6464
td::Promise<td::Ref<ShardState>> promise) override;
6565
void get_block_state(ConstBlockHandle handle, td::Promise<td::Ref<ShardState>> promise) override;
6666
void get_cell_db_reader(td::Promise<std::shared_ptr<vm::CellDbReader>> promise) override;
67-
void get_last_deleted_mc_state(td::Promise<BlockSeqno> promise) override;
6867

6968
void store_block_handle(BlockHandle handle, td::Promise<td::Unit> promise) override;
7069
void get_block_handle(BlockIdExt id, td::Promise<BlockHandle> promise) override;

validator/interfaces/db.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ class Db : public td::actor::Actor {
5252
td::Promise<td::Ref<ShardState>> promise) = 0;
5353
virtual void get_block_state(ConstBlockHandle handle, td::Promise<td::Ref<ShardState>> promise) = 0;
5454
virtual void get_cell_db_reader(td::Promise<std::shared_ptr<vm::CellDbReader>> promise) = 0;
55-
virtual void get_last_deleted_mc_state(td::Promise<BlockSeqno> promise) = 0;
5655

5756
virtual void store_persistent_state_file(BlockIdExt block_id, BlockIdExt masterchain_block_id, td::BufferSlice state,
5857
td::Promise<td::Unit> promise) = 0;

validator/manager.cpp

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2178,20 +2178,10 @@ void ValidatorManagerImpl::update_shards() {
21782178
td::actor::send_closure(SelfId, &ValidatorManagerImpl::written_destroyed_validator_sessions, std::move(gc));
21792179
});
21802180
td::actor::send_closure(db_, &Db::update_destroyed_validator_sessions, gc_list_, std::move(P));
2181-
2182-
if (!serializer_.empty()) {
2183-
td::actor::send_closure(
2184-
serializer_, &AsyncStateSerializer::auto_disable_serializer,
2185-
validating_masterchain &&
2186-
last_masterchain_state_->get_validator_set(ShardIdFull{masterchainId})->export_vector().size() * 2 <=
2187-
last_masterchain_state_->get_total_validator_set(0)->export_vector().size());
2188-
}
21892181
}
2190-
21912182
if (!serializer_.empty()) {
2192-
td::actor::send_closure(
2193-
serializer_, &AsyncStateSerializer::auto_disable_serializer,
2194-
!validator_groups_.empty() && last_masterchain_state_->get_global_id() == -239); // mainnet only
2183+
td::actor::send_closure(serializer_, &AsyncStateSerializer::auto_disable_serializer,
2184+
is_validator() && last_masterchain_state_->get_global_id() == -239); // mainnet only
21952185
}
21962186
}
21972187

@@ -2790,23 +2780,6 @@ void ValidatorManagerImpl::prepare_stats(td::Promise<std::vector<std::pair<std::
27902780
vec.emplace_back("rotatemasterchainblock", last_rotate_block_id_.to_str());
27912781
//vec.emplace_back("shardclientmasterchainseqno", td::to_string(min_confirmed_masterchain_seqno_));
27922782
vec.emplace_back("stateserializermasterchainseqno", td::to_string(state_serializer_masterchain_seqno_));
2793-
2794-
td::actor::send_closure(db_, &Db::get_last_deleted_mc_state,
2795-
[promise = merger.make_promise(""),
2796-
gc_seqno = gc_masterchain_handle_->id().seqno()](td::Result<BlockSeqno> R) mutable {
2797-
TRY_RESULT_PROMISE(promise, seqno, std::move(R));
2798-
std::string s;
2799-
if (seqno == 0) {
2800-
s = "none";
2801-
} else if (seqno <= gc_seqno) {
2802-
s = PSTRING() << seqno << " (gc_seqno-" << (gc_seqno - seqno) << ")";
2803-
} else {
2804-
s = PSTRING() << seqno << " (gc_seqno+" << (seqno - gc_seqno) << ")";
2805-
}
2806-
std::vector<std::pair<std::string, std::string>> vec;
2807-
vec.emplace_back("lastgcdmasterchainstate", std::move(s));
2808-
promise.set_value(std::move(vec));
2809-
});
28102783
}
28112784
td::NamedThreadSafeCounter::get_default().for_each([&](auto key, auto value) {
28122785
vec.emplace_back("counter." + key, PSTRING() << value);

0 commit comments

Comments
 (0)