mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Add timeout for out_msg_queue_cleanup (#679)
Co-authored-by: SpyCheese <mikle98@yandex.ru>
This commit is contained in:
parent
e6f2205dbf
commit
53fd88b67a
2 changed files with 7 additions and 1 deletions
|
@ -73,7 +73,7 @@ class Collator final : public td::actor::Actor {
|
||||||
Ref<ValidatorSet> validator_set_;
|
Ref<ValidatorSet> validator_set_;
|
||||||
td::actor::ActorId<ValidatorManager> manager;
|
td::actor::ActorId<ValidatorManager> manager;
|
||||||
td::Timestamp timeout;
|
td::Timestamp timeout;
|
||||||
td::Timestamp soft_timeout_, medium_timeout_;
|
td::Timestamp queue_cleanup_timeout_, soft_timeout_, medium_timeout_;
|
||||||
td::Promise<BlockCandidate> main_promise;
|
td::Promise<BlockCandidate> main_promise;
|
||||||
ton::BlockSeqno last_block_seqno{0};
|
ton::BlockSeqno last_block_seqno{0};
|
||||||
ton::BlockSeqno prev_mc_block_seqno{0};
|
ton::BlockSeqno prev_mc_block_seqno{0};
|
||||||
|
|
|
@ -67,6 +67,7 @@ Collator::Collator(ShardIdFull shard, bool is_hardfork, UnixTime min_ts, BlockId
|
||||||
, validator_set_(std::move(validator_set))
|
, validator_set_(std::move(validator_set))
|
||||||
, manager(manager)
|
, manager(manager)
|
||||||
, timeout(timeout)
|
, timeout(timeout)
|
||||||
|
, queue_cleanup_timeout_(td::Timestamp::at(timeout.at() - 5.0))
|
||||||
, soft_timeout_(td::Timestamp::at(timeout.at() - 3.0))
|
, soft_timeout_(td::Timestamp::at(timeout.at() - 3.0))
|
||||||
, medium_timeout_(td::Timestamp::at(timeout.at() - 1.5))
|
, medium_timeout_(td::Timestamp::at(timeout.at() - 1.5))
|
||||||
, main_promise(std::move(promise))
|
, main_promise(std::move(promise))
|
||||||
|
@ -1814,6 +1815,11 @@ bool Collator::out_msg_queue_cleanup() {
|
||||||
auto res = out_msg_queue_->filter([&](vm::CellSlice& cs, td::ConstBitPtr key, int n) -> int {
|
auto res = out_msg_queue_->filter([&](vm::CellSlice& cs, td::ConstBitPtr key, int n) -> int {
|
||||||
assert(n == 352);
|
assert(n == 352);
|
||||||
// LOG(DEBUG) << "key is " << key.to_hex(n);
|
// LOG(DEBUG) << "key is " << key.to_hex(n);
|
||||||
|
if (queue_cleanup_timeout_.is_in_past(td::Timestamp::now())) {
|
||||||
|
LOG(WARNING) << "cleaning up outbound queue takes too long, ending";
|
||||||
|
outq_cleanup_partial_ = true;
|
||||||
|
return (1 << 30) + 1; // retain all remaining outbound queue entries including this one without processing
|
||||||
|
}
|
||||||
if (block_full_) {
|
if (block_full_) {
|
||||||
LOG(WARNING) << "BLOCK FULL while cleaning up outbound queue, cleanup completed only partially";
|
LOG(WARNING) << "BLOCK FULL while cleaning up outbound queue, cleanup completed only partially";
|
||||||
outq_cleanup_partial_ = true;
|
outq_cleanup_partial_ = true;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue