mirror of
https://github.com/ton-blockchain/ton
synced 2025-02-12 19:22:37 +00:00
fixed download of an serialized state
This commit is contained in:
parent
ceaed40ac4
commit
6143b2051f
3 changed files with 18 additions and 6 deletions
|
@ -82,6 +82,10 @@ void ArchiveImporter::start_up() {
|
|||
}
|
||||
|
||||
auto seqno = masterchain_blocks_.begin()->first;
|
||||
if (seqno > state_->get_seqno() + 1) {
|
||||
abort_query(td::Status::Error(ErrorCode::notready, "too big first masterchain seqno"));
|
||||
return;
|
||||
}
|
||||
|
||||
check_masterchain_block(seqno);
|
||||
}
|
||||
|
@ -197,6 +201,9 @@ void ArchiveImporter::got_new_materchain_state(td::Ref<MasterchainState> state)
|
|||
}
|
||||
|
||||
void ArchiveImporter::checked_all_masterchain_blocks(BlockSeqno seqno) {
|
||||
if (shard_client_seqno_ > seqno) {
|
||||
shard_client_seqno_ = seqno;
|
||||
}
|
||||
check_next_shard_client_seqno(shard_client_seqno_ + 1);
|
||||
}
|
||||
|
||||
|
|
|
@ -1484,8 +1484,9 @@ void ValidatorManagerImpl::download_next_archive() {
|
|||
td::actor::send_closure(SelfId, &ValidatorManagerImpl::downloaded_archive_slice, R.move_as_ok());
|
||||
}
|
||||
});
|
||||
callback_->download_archive(shard_client_handle_->id().seqno() + 1, db_root_ + "/tmp/", td::Timestamp::in(3600.0),
|
||||
std::move(P));
|
||||
|
||||
auto seqno = std::min(last_masterchain_seqno_, shard_client_handle_->id().seqno());
|
||||
callback_->download_archive(seqno + 1, db_root_ + "/tmp/", td::Timestamp::in(3600.0), std::move(P));
|
||||
}
|
||||
|
||||
void ValidatorManagerImpl::downloaded_archive_slice(std::string name) {
|
||||
|
@ -1500,8 +1501,10 @@ void ValidatorManagerImpl::downloaded_archive_slice(std::string name) {
|
|||
}
|
||||
});
|
||||
|
||||
td::actor::create_actor<ArchiveImporter>("archiveimport", name, last_masterchain_state_,
|
||||
shard_client_handle_->id().seqno(), opts_, actor_id(this), std::move(P))
|
||||
auto seqno = std::min(last_masterchain_seqno_, shard_client_handle_->id().seqno());
|
||||
|
||||
td::actor::create_actor<ArchiveImporter>("archiveimport", name, last_masterchain_state_, seqno, opts_, actor_id(this),
|
||||
std::move(P))
|
||||
.release();
|
||||
}
|
||||
|
||||
|
@ -1509,7 +1512,7 @@ void ValidatorManagerImpl::checked_archive_slice(std::vector<BlockSeqno> seqno)
|
|||
CHECK(seqno.size() == 2);
|
||||
LOG(INFO) << "checked downloaded archive slice: mc_top_seqno=" << seqno[0] << " shard_top_seqno_=" << seqno[1];
|
||||
CHECK(seqno[0] <= last_masterchain_seqno_);
|
||||
CHECK(seqno[1] <= seqno[0]);
|
||||
CHECK(seqno[1] <= last_masterchain_seqno_);
|
||||
|
||||
BlockIdExt b;
|
||||
if (seqno[1] < last_masterchain_seqno_) {
|
||||
|
|
|
@ -94,7 +94,8 @@ void AsyncStateSerializer::next_iteration() {
|
|||
td::actor::send_closure(manager_, &ValidatorManager::get_block_handle, last_block_id_, true, std::move(P));
|
||||
return;
|
||||
}
|
||||
if (!masterchain_handle_->inited_unix_time() || !masterchain_handle_->inited_is_key_block()) {
|
||||
if (!masterchain_handle_->inited_unix_time() || !masterchain_handle_->inited_is_key_block() ||
|
||||
!masterchain_handle_->is_applied()) {
|
||||
return;
|
||||
}
|
||||
CHECK(masterchain_handle_->id() == last_block_id_);
|
||||
|
@ -213,6 +214,7 @@ void AsyncStateSerializer::got_shard_state(BlockHandle handle, td::Ref<ShardStat
|
|||
});
|
||||
td::actor::send_closure(manager_, &ValidatorManager::store_persistent_state_file, handle->id(),
|
||||
masterchain_handle_->id(), std::move(B), std::move(P));
|
||||
LOG(INFO) << "storing persistent state for " << masterchain_handle_->id().seqno() << ":" << handle->id().id.shard;
|
||||
next_idx_++;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue