1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-02-12 11:12:16 +00:00

Fix processing dispatch queue (#1057)

Co-authored-by: SpyCheese <mikle98@yandex.ru>
This commit is contained in:
EmelyanenkoK 2024-07-13 14:43:04 +03:00 committed by GitHub
parent 5380e6fb8d
commit 00cd053dbc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 2 additions and 3 deletions

View file

@ -213,7 +213,7 @@ class Collator final : public td::actor::Actor {
std::map<StdSmcAddress, td::uint32> sender_generated_messages_count_; std::map<StdSmcAddress, td::uint32> sender_generated_messages_count_;
unsigned dispatch_queue_ops_{0}; unsigned dispatch_queue_ops_{0};
std::map<StdSmcAddress, LogicalTime> last_dispatch_queue_emitted_lt_; std::map<StdSmcAddress, LogicalTime> last_dispatch_queue_emitted_lt_;
bool have_unprocessed_account_dispatch_queue_ = true; bool have_unprocessed_account_dispatch_queue_ = false;
td::uint64 defer_out_queue_size_limit_; td::uint64 defer_out_queue_size_limit_;
td::uint64 hard_defer_out_queue_size_limit_; td::uint64 hard_defer_out_queue_size_limit_;

View file

@ -3404,7 +3404,7 @@ bool ValidateQuery::check_account_dispatch_queue_update(td::Bits256 addr, Ref<vm
account_expected_defer_all_messages_.insert(addr); account_expected_defer_all_messages_.insert(addr);
} }
} }
if (old_dict_size > 0 && max_removed_lt == 0) { if (old_dict_size > 0 && max_removed_lt != 0) {
++processed_account_dispatch_queues_; ++processed_account_dispatch_queues_;
} }
return true; return true;
@ -3439,7 +3439,6 @@ bool ValidateQuery::unpack_dispatch_queue_update() {
have_unprocessed_account_dispatch_queue_ = false; have_unprocessed_account_dispatch_queue_ = false;
td::uint64 total_account_dispatch_queues = 0; td::uint64 total_account_dispatch_queues = 0;
ps_.dispatch_queue_->check_for_each([&](Ref<vm::CellSlice>, td::ConstBitPtr, int n) -> bool { ps_.dispatch_queue_->check_for_each([&](Ref<vm::CellSlice>, td::ConstBitPtr, int n) -> bool {
assert(n == 352);
++total_account_dispatch_queues; ++total_account_dispatch_queues;
if (total_account_dispatch_queues > processed_account_dispatch_queues_) { if (total_account_dispatch_queues > processed_account_dispatch_queues_) {
return false; return false;