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())) { if (!p || ValidatorManager::is_persistent_state(h->unix_time(), p->unix_time())) {
auto ttl = ValidatorManager::persistent_state_ttl(h->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) { if (ttl > td::Clocks::system() + time_to_download) {
handle = h; handle = h;
break; break;
@ -259,7 +259,7 @@ void ValidatorManagerMasterchainReiniter::download_masterchain_state() {
} }
}); });
td::actor::create_actor<DownloadShardState>("downloadstate", block_id_, block_id_, 2, manager_, 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(); .release();
} }
@ -267,7 +267,7 @@ void ValidatorManagerMasterchainReiniter::downloaded_masterchain_state(td::Ref<S
state_ = td::Ref<MasterchainState>{std::move(state)}; state_ = td::Ref<MasterchainState>{std::move(state)};
CHECK(handle_->received_state()); CHECK(handle_->received_state());
CHECK(handle_->is_applied()); CHECK(handle_->is_applied());
LOG(INFO) << "downloaded masterchain state";
auto P = td::PromiseCreator::lambda([SelfId = actor_id(this)](td::Result<td::Unit> R) { auto P = td::PromiseCreator::lambda([SelfId = actor_id(this)](td::Result<td::Unit> R) {
R.ensure(); R.ensure();
td::actor::send_closure(SelfId, &ValidatorManagerMasterchainReiniter::downloaded_all_shards); 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() { void ValidatorManagerMasterchainReiniter::downloaded_all_shards() {
LOG(INFO) << "downloaded all shards";
td::actor::send_closure(manager_, &ValidatorManager::update_gc_block_handle, handle_, td::actor::send_closure(manager_, &ValidatorManager::update_gc_block_handle, handle_,
[SelfId = actor_id(this)](td::Result<td::Unit> R) { [SelfId = actor_id(this)](td::Result<td::Unit> R) {
R.ensure(); R.ensure();
@ -286,6 +287,7 @@ void ValidatorManagerMasterchainReiniter::downloaded_all_shards() {
void ValidatorManagerMasterchainReiniter::finish() { void ValidatorManagerMasterchainReiniter::finish() {
CHECK(handle_->id().id.seqno == 0 || handle_->is_key_block()); CHECK(handle_->id().id.seqno == 0 || handle_->is_key_block());
promise_.set_value(ValidatorManagerInitResult{handle_, state_, std::move(client_), handle_, state_, handle_}); promise_.set_value(ValidatorManagerInitResult{handle_, state_, std::move(client_), handle_, state_, handle_});
LOG(INFO) << "persistent state download finished";
stop(); 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, void ValidatorManagerImpl::send_get_persistent_state_request(BlockIdExt id, BlockIdExt masterchain_block_id,
td::uint32 priority, td::uint32 priority,
td::Promise<td::BufferSlice> promise) { 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)); 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) { void DownloadState::abort_query(td::Status reason) {
if (promise_) { if (promise_) {
if (reason.code() == ErrorCode::notready || reason.code() == ErrorCode::timeout) { 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 { } else {
VLOG(FULL_NODE_NOTICE) << "failed to download state " << block_id_ << " from " << download_from_ << ": " VLOG(FULL_NODE_NOTICE) << "failed to download state " << block_id_ << " from " << download_from_ << ": "
<< reason; << reason;
@ -115,6 +115,7 @@ void DownloadState::got_block_handle(BlockHandle handle) {
void DownloadState::got_node_to_download(adnl::AdnlNodeIdShort node) { void DownloadState::got_node_to_download(adnl::AdnlNodeIdShort node) {
download_from_ = 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 { auto P = td::PromiseCreator::lambda([SelfId = actor_id(this)](td::Result<td::BufferSlice> R) mutable {
if (R.is_error()) { if (R.is_error()) {
@ -187,6 +188,10 @@ void DownloadState::got_block_state_part(td::BufferSlice data, td::uint32 reques
sum_ += data.size(); sum_ += data.size();
parts_.push_back(std::move(data)); parts_.push_back(std::move(data));
if (sum_ % (1 << 22) == 0) {
LOG(DEBUG) << "downloading state " << block_id_ << ": total=" << sum_;
}
if (last_part) { if (last_part) {
td::BufferSlice res{td::narrow_cast<std::size_t>(sum_)}; td::BufferSlice res{td::narrow_cast<std::size_t>(sum_)};
auto S = res.as_slice(); 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) { void DownloadState::got_block_state(td::BufferSlice data) {
state_ = std::move(data); state_ = std::move(data);
LOG(INFO) << "finished downloading state " << block_id_ << ": total=" << sum_;
finish_query(); finish_query();
} }

View file

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