@@ -222,7 +222,7 @@ bool ValidatorSessionImpl::ensure_candidate_unique(td::uint32 src_idx, td::uint3
222222
223223void 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 (),
0 commit comments