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:
parent
2f1ce43588
commit
21c2727dcf
4 changed files with 15 additions and 7 deletions
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue