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

Increase timeout for downloading astate and add logs

This commit is contained in:
SpyCheese 2022-05-03 17:19:31 +03:00
parent 2f1ce43588
commit 21c2727dcf
4 changed files with 15 additions and 7 deletions

View file

@ -227,7 +227,7 @@ void ValidatorManagerMasterchainReiniter::choose_masterchain_state() {
}
if (!p || ValidatorManager::is_persistent_state(h->unix_time(), p->unix_time())) {
auto ttl = ValidatorManager::persistent_state_ttl(h->unix_time());
double time_to_download = 3600;
double time_to_download = 3600 * 3;
if (ttl > td::Clocks::system() + time_to_download) {
handle = h;
break;
@ -259,7 +259,7 @@ void ValidatorManagerMasterchainReiniter::download_masterchain_state() {
}
});
td::actor::create_actor<DownloadShardState>("downloadstate", block_id_, block_id_, 2, manager_,
td::Timestamp::in(3600), std::move(P))
td::Timestamp::in(3600 * 3), std::move(P))
.release();
}
@ -267,7 +267,7 @@ void ValidatorManagerMasterchainReiniter::downloaded_masterchain_state(td::Ref<S
state_ = td::Ref<MasterchainState>{std::move(state)};
CHECK(handle_->received_state());
CHECK(handle_->is_applied());
LOG(INFO) << "downloaded masterchain state";
auto P = td::PromiseCreator::lambda([SelfId = actor_id(this)](td::Result<td::Unit> R) {
R.ensure();
td::actor::send_closure(SelfId, &ValidatorManagerMasterchainReiniter::downloaded_all_shards);
@ -276,6 +276,7 @@ void ValidatorManagerMasterchainReiniter::downloaded_masterchain_state(td::Ref<S
}
void ValidatorManagerMasterchainReiniter::downloaded_all_shards() {
LOG(INFO) << "downloaded all shards";
td::actor::send_closure(manager_, &ValidatorManager::update_gc_block_handle, handle_,
[SelfId = actor_id(this)](td::Result<td::Unit> R) {
R.ensure();
@ -286,6 +287,7 @@ void ValidatorManagerMasterchainReiniter::downloaded_all_shards() {
void ValidatorManagerMasterchainReiniter::finish() {
CHECK(handle_->id().id.seqno == 0 || handle_->is_key_block());
promise_.set_value(ValidatorManagerInitResult{handle_, state_, std::move(client_), handle_, state_, handle_});
LOG(INFO) << "persistent state download finished";
stop();
}

View file

@ -1328,7 +1328,7 @@ void ValidatorManagerImpl::send_get_zero_state_request(BlockIdExt id, td::uint32
void ValidatorManagerImpl::send_get_persistent_state_request(BlockIdExt id, BlockIdExt masterchain_block_id,
td::uint32 priority,
td::Promise<td::BufferSlice> promise) {
callback_->download_persistent_state(id, masterchain_block_id, priority, td::Timestamp::in(3600.0),
callback_->download_persistent_state(id, masterchain_block_id, priority, td::Timestamp::in(3600 * 3),
std::move(promise));
}

View file

@ -53,7 +53,7 @@ DownloadState::DownloadState(BlockIdExt block_id, BlockIdExt masterchain_block_i
void DownloadState::abort_query(td::Status reason) {
if (promise_) {
if (reason.code() == ErrorCode::notready || reason.code() == ErrorCode::timeout) {
VLOG(FULL_NODE_DEBUG) << "failed to download state " << block_id_ << "from " << download_from_ << ": " << reason;
VLOG(FULL_NODE_DEBUG) << "failed to download state " << block_id_ << " from " << download_from_ << ": " << reason;
} else {
VLOG(FULL_NODE_NOTICE) << "failed to download state " << block_id_ << " from " << download_from_ << ": "
<< reason;
@ -115,6 +115,7 @@ void DownloadState::got_block_handle(BlockHandle handle) {
void DownloadState::got_node_to_download(adnl::AdnlNodeIdShort node) {
download_from_ = node;
LOG(INFO) << "downloading state " << block_id_ << " from " << download_from_;
auto P = td::PromiseCreator::lambda([SelfId = actor_id(this)](td::Result<td::BufferSlice> R) mutable {
if (R.is_error()) {
@ -187,6 +188,10 @@ void DownloadState::got_block_state_part(td::BufferSlice data, td::uint32 reques
sum_ += data.size();
parts_.push_back(std::move(data));
if (sum_ % (1 << 22) == 0) {
LOG(DEBUG) << "downloading state " << block_id_ << ": total=" << sum_;
}
if (last_part) {
td::BufferSlice res{td::narrow_cast<std::size_t>(sum_)};
auto S = res.as_slice();
@ -224,6 +229,7 @@ void DownloadState::got_block_state_part(td::BufferSlice data, td::uint32 reques
void DownloadState::got_block_state(td::BufferSlice data) {
state_ = std::move(data);
LOG(INFO) << "finished downloading state " << block_id_ << ": total=" << sum_;
finish_query();
}

View file

@ -98,8 +98,8 @@ void ShardClient::start_up_init_mode() {
});
td::actor::create_actor<DownloadShardState>("downloadstate", shard->top_block_id(),
masterchain_block_handle_->id(), 2, manager_, td::Timestamp::in(3600),
std::move(P))
masterchain_block_handle_->id(), 2, manager_,
td::Timestamp::in(3600 * 3), std::move(P))
.release();
}
}