Skip to content

Commit a13be2e

Browse files
committed
Session stats: "got_block_by", "shard_configuration"
1 parent 7e01156 commit a13be2e

File tree

7 files changed

+34
-11
lines changed

7 files changed

+34
-11
lines changed

tl/generate/scheme/ton_api.tl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -913,7 +913,7 @@ validatorStats.stats.producer flags:#
913913
validator_id:int256 block_status:int
914914
candidate_id:flags.0?int256 block_id:flags.0?tonNode.blockIdExt collated_data_hash:flags.0?int256
915915
is_accepted:flags.0?Bool is_ours:flags.0?Bool
916-
got_block_at:flags.0?double got_submit_at:flags.0?double gen_utime:flags.0?int comment:flags.0?string
916+
got_block_at:flags.0?double got_block_by:flags.0?int got_submit_at:flags.0?double gen_utime:flags.0?int comment:flags.0?string
917917
collation_time:flags.1?double collated_at:flags.1?double collation_cached:flags.1?Bool self_collated:flags.1?Bool collator_node_id:flags.2?int256
918918
validation_time:flags.3?double validated_at:flags.3?double validation_cached:flags.3?Bool
919919
approved_weight:flags.0?long approved_33pct_at:flags.0?double approved_66pct_at:flags.0?double approvers:flags.0?string
@@ -937,7 +937,7 @@ validatorStats.blockLimitsStatus
937937
validatorStats.extMsgsStats
938938
ext_msgs_total:int ext_msgs_filtered:int ext_msgs_accepted:int ext_msgs_rejected:int = validatorStats.ExtMsgsStats;
939939
validatorStats.blockStats
940-
ext_msgs:validatorStats.extMsgsStats transactions:int = validatorStats.BlockStats;
940+
ext_msgs:validatorStats.extMsgsStats transactions:int shard_configuration:(vector tonNode.blockIdExt) = validatorStats.BlockStats;
941941

942942
validatorStats.collatedBlock
943943
block_id:tonNode.blockIdExt collated_data_hash:int256 cc_seqno:int collated_at:double

tl/generate/scheme/ton_api.tlo

112 Bytes
Binary file not shown.

validator-session/validator-session-types.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ struct ValidatorSessionNode {
7373

7474
struct ValidatorSessionStats {
7575
enum { status_none = 0, status_received = 1, status_rejected = 2, status_approved = 3 };
76+
enum { recv_none = 0, recv_collated = 1, recv_broadcast = 2, recv_query = 3, recv_cached = 4, recv_startup = 5 };
7677

7778
struct Producer {
7879
int block_status = status_none;
@@ -83,6 +84,7 @@ struct ValidatorSessionStats {
8384
bool is_accepted = false;
8485
bool is_ours = false;
8586
double got_block_at = -1.0;
87+
int got_block_by = 0;
8688
double got_submit_at = -1.0;
8789
td::int32 gen_utime = -1;
8890
std::string comment;
@@ -154,8 +156,8 @@ struct ValidatorSessionStats {
154156
: 0);
155157
return create_tl_object<ton_api::validatorStats_stats_producer>(
156158
flags, validator_id.bits256_value(), block_status, candidate_id, create_tl_block_id(block_id),
157-
collated_data_hash, is_accepted, is_ours, got_block_at, got_submit_at, gen_utime, comment, collation_time,
158-
collated_at, collation_cached, self_collated, collator_node_id, validation_time, validated_at,
159+
collated_data_hash, is_accepted, is_ours, got_block_at, got_block_by, got_submit_at, gen_utime, comment,
160+
collation_time, collated_at, collation_cached, self_collated, collator_node_id, validation_time, validated_at,
159161
validation_cached, approved_weight, approved_33pct_at, approved_66pct_at, std::move(approvers_str),
160162
signed_weight, signed_33pct_at, signed_66pct_at, std::move(signers_str), serialize_time, deserialize_time,
161163
serialized_size);

validator-session/validator-session.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ bool ValidatorSessionImpl::ensure_candidate_unique(td::uint32 src_idx, td::uint3
222222

223223
void ValidatorSessionImpl::process_broadcast(PublicKeyHash src, td::BufferSlice data,
224224
td::optional<ValidatorSessionCandidateId> expected_id,
225-
bool is_overlay_broadcast) {
225+
bool is_overlay_broadcast, bool is_startup) {
226226
// Note: src is not necessarily equal to the sender of this message:
227227
// If requested using get_broadcast_p2p, src is the creator of the block, sender possibly is some other node.
228228
auto src_idx = description().get_source_idx(src);
@@ -269,6 +269,13 @@ void ValidatorSessionImpl::process_broadcast(PublicKeyHash src, td::BufferSlice
269269
}
270270
if (stat->got_block_at <= 0.0) {
271271
stat->got_block_at = td::Clocks::system();
272+
if (is_overlay_broadcast) {
273+
stat->got_block_by = ValidatorSessionStats::recv_broadcast;
274+
} else if (is_startup) {
275+
stat->got_block_by = ValidatorSessionStats::recv_startup;
276+
} else {
277+
stat->got_block_by = ValidatorSessionStats::recv_query;
278+
}
272279
}
273280
stat->deserialize_time = deserialize_time;
274281
stat->serialized_size = data.size();
@@ -470,6 +477,7 @@ void ValidatorSessionImpl::generated_block(td::uint32 round, GeneratedCandidate
470477
stat->collation_time = collation_time;
471478
stat->collated_at = td::Clocks::system();
472479
stat->got_block_at = td::Clocks::system();
480+
stat->got_block_by = ValidatorSessionStats::recv_collated;
473481
stat->collation_cached = c.is_cached;
474482
stat->self_collated = c.self_collated;
475483
stat->collator_node_id = c.collator_node_id;
@@ -610,6 +618,7 @@ void ValidatorSessionImpl::try_approve_block(const SentBlock *block) {
610618
}
611619
if (stat->got_block_at <= 0.0) {
612620
stat->got_block_at = td::Clocks::system();
621+
stat->got_block_by = ValidatorSessionStats::recv_cached;
613622
}
614623
stat->block_id.root_hash = B->root_hash_;
615624
stat->block_id.file_hash = td::sha256_bits256(B->data_);
@@ -656,8 +665,9 @@ void ValidatorSessionImpl::try_approve_block(const SentBlock *block) {
656665
VLOG(VALIDATOR_SESSION_WARNING) << print_id << ": failed to get candidate " << hash << " from " << id
657666
<< ": " << R.move_as_error();
658667
} else {
668+
LOG(ERROR) << "QQQQQ Got block " << R.ok().size();
659669
td::actor::send_closure(SelfId, &ValidatorSessionImpl::process_broadcast, src_id, R.move_as_ok(),
660-
candidate_id, false);
670+
candidate_id, false, false);
661671
}
662672
});
663673

@@ -971,8 +981,8 @@ void ValidatorSessionImpl::on_catchain_started() {
971981
auto broadcast = create_tl_object<ton_api::validatorSession_candidate>(
972982
src.tl(), round, root_hash, std::move(B.data), std::move(B.collated_data));
973983
td::actor::send_closure(SelfId, &ValidatorSessionImpl::process_broadcast, src,
974-
serialize_candidate(broadcast, compress).move_as_ok(), td::optional<ValidatorSessionCandidateId>(),
975-
false);
984+
serialize_candidate(broadcast, compress).move_as_ok(),
985+
td::optional<ValidatorSessionCandidateId>(), false, true);
976986
}
977987
});
978988
callback_->get_approved_candidate(description().get_source_public_key(x->get_src_idx()), x->get_root_hash(),

validator-session/validator-session.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class ValidatorSessionImpl : public ValidatorSession {
116116
}
117117
void process_broadcast(const PublicKeyHash &src, td::BufferSlice data) override {
118118
td::actor::send_closure(id_, &ValidatorSessionImpl::process_broadcast, src, std::move(data),
119-
td::optional<ValidatorSessionCandidateId>(), true);
119+
td::optional<ValidatorSessionCandidateId>(), true, false);
120120
}
121121
void process_message(const PublicKeyHash &src, td::BufferSlice data) override {
122122
td::actor::send_closure(id_, &ValidatorSessionImpl::process_message, src, std::move(data));
@@ -204,7 +204,7 @@ class ValidatorSessionImpl : public ValidatorSession {
204204
void preprocess_block(catchain::CatChainBlock *block);
205205
bool ensure_candidate_unique(td::uint32 src_idx, td::uint32 round, ValidatorSessionCandidateId block_id);
206206
void process_broadcast(PublicKeyHash src, td::BufferSlice data, td::optional<ValidatorSessionCandidateId> expected_id,
207-
bool is_overlay_broadcast);
207+
bool is_overlay_broadcast, bool is_startup);
208208
void process_message(PublicKeyHash src, td::BufferSlice data);
209209
void process_query(PublicKeyHash src, td::BufferSlice data, td::Promise<td::BufferSlice> promise);
210210

validator/impl/collator.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6374,6 +6374,12 @@ void Collator::finalize_stats() {
63746374
stats_.work_time = work_time;
63756375
stats_.cpu_work_time = cpu_work_time;
63766376
stats_.time_stats = (PSTRING() << perf_log_);
6377+
if (is_masterchain() && shard_conf_) {
6378+
shard_conf_->process_shard_hashes([&](const block::McShardHash& shard) {
6379+
stats_.shard_configuration.push_back(shard.top_block_id());
6380+
return 0;
6381+
});
6382+
}
63776383
}
63786384

63796385
/**

validator/interfaces/validator-manager.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ struct CollationStats {
7070
int cat_bytes = 0, cat_gas = 0, cat_lt_delta = 0, cat_collated_data_bytes = 0;
7171
std::string limits_log;
7272
td::uint32 transactions = 0;
73+
std::vector<BlockIdExt> shard_configuration;
7374
td::uint32 ext_msgs_total = 0;
7475
td::uint32 ext_msgs_filtered = 0;
7576
td::uint32 ext_msgs_accepted = 0;
@@ -78,10 +79,14 @@ struct CollationStats {
7879
std::string time_stats;
7980

8081
tl_object_ptr<ton_api::validatorStats_collatedBlock> tl() const {
82+
std::vector<tl_object_ptr<ton_api::tonNode_blockIdExt>> shards;
83+
for (const BlockIdExt& block_id : shard_configuration) {
84+
shards.push_back(create_tl_block_id(block_id));
85+
}
8186
auto block_stats = create_tl_object<ton_api::validatorStats_blockStats>(
8287
create_tl_object<ton_api::validatorStats_extMsgsStats>(ext_msgs_total, ext_msgs_filtered, ext_msgs_accepted,
8388
ext_msgs_rejected),
84-
transactions);
89+
transactions, std::move(shards));
8590
return create_tl_object<ton_api::validatorStats_collatedBlock>(
8691
create_tl_block_id(block_id), collated_data_hash, cc_seqno, collated_at, actual_bytes,
8792
actual_collated_data_bytes, attempt, self.bits256_value(), is_validator, total_time, work_time, cpu_work_time,

0 commit comments

Comments
 (0)