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

Fix estimating block size, repeat collation on error (#1178)

* Fix extimating block size, repeat collation on error

* Cancel collation when it is non needed
This commit is contained in:
SpyCheese 2024-10-01 10:22:15 +03:00 committed by GitHub
parent fc5e71fc15
commit 257cd8cd9c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 150 additions and 44 deletions

View file

@ -76,6 +76,9 @@ class Collator final : public td::actor::Actor {
td::Timestamp timeout;
td::Timestamp queue_cleanup_timeout_, soft_timeout_, medium_timeout_;
td::Promise<BlockCandidate> main_promise;
unsigned mode_ = 0;
int attempt_idx_;
bool allow_repeat_collation_ = false;
ton::BlockSeqno last_block_seqno{0};
ton::BlockSeqno prev_mc_block_seqno{0};
ton::BlockSeqno new_block_seqno{0};
@ -90,7 +93,8 @@ class Collator final : public td::actor::Actor {
public:
Collator(ShardIdFull shard, bool is_hardfork, BlockIdExt min_masterchain_block_id, std::vector<BlockIdExt> prev,
Ref<ValidatorSet> validator_set, Ed25519_PublicKey collator_id, Ref<CollatorOptions> collator_opts,
td::actor::ActorId<ValidatorManager> manager, td::Timestamp timeout, td::Promise<BlockCandidate> promise);
td::actor::ActorId<ValidatorManager> manager, td::Timestamp timeout, td::Promise<BlockCandidate> promise,
td::CancellationToken cancellation_token, unsigned mode, int attempt_idx);
~Collator() override = default;
bool is_busy() const {
return busy_;
@ -318,6 +322,7 @@ class Collator final : public td::actor::Actor {
bool insert_out_msg(Ref<vm::Cell> out_msg);
bool insert_out_msg(Ref<vm::Cell> out_msg, td::ConstBitPtr msg_hash);
bool register_out_msg_queue_op(bool force = false);
bool register_dispatch_queue_op(bool force = false);
bool update_min_mc_seqno(ton::BlockSeqno some_mc_seqno);
bool combine_account_transactions();
bool update_public_libraries();
@ -348,10 +353,14 @@ class Collator final : public td::actor::Actor {
bool create_block();
Ref<vm::Cell> collate_shard_block_descr_set();
bool create_collated_data();
bool create_block_candidate();
void return_block_candidate(td::Result<td::Unit> saved);
bool update_last_proc_int_msg(const std::pair<ton::LogicalTime, ton::Bits256>& new_lt_hash);
td::CancellationToken cancellation_token_;
bool check_cancelled();
public:
static td::uint32 get_skip_externals_queue_size();