Skip to content

Commit 04f2bc1

Browse files
committed
Fix downloading persistent states in WaitBlockState
1 parent aca51a8 commit 04f2bc1

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

validator/manager.cpp

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -700,11 +700,10 @@ void ValidatorManagerImpl::wait_block_state(BlockHandle handle, td::uint32 prior
700700
auto P = td::PromiseCreator::lambda([SelfId = actor_id(this), handle](td::Result<td::Ref<ShardState>> R) {
701701
td::actor::send_closure(SelfId, &ValidatorManagerImpl::finished_wait_state, handle, std::move(R));
702702
});
703-
auto id =
704-
td::actor::create_actor<WaitBlockState>("waitstate", handle, priority, actor_id(this),
705-
td::Timestamp::at(timeout.at() + 10.0), std::move(P),
706-
get_block_persistent_state(handle->id()))
707-
.release();
703+
auto id = td::actor::create_actor<WaitBlockState>("waitstate", handle, priority, actor_id(this),
704+
td::Timestamp::at(timeout.at() + 10.0), std::move(P),
705+
get_block_persistent_state_to_download(handle->id()))
706+
.release();
708707
wait_state_[handle->id()].actor_ = id;
709708
it = wait_state_.find(handle->id());
710709
}
@@ -1150,9 +1149,10 @@ void ValidatorManagerImpl::finished_wait_state(BlockHandle handle, td::Result<td
11501149
auto P = td::PromiseCreator::lambda([SelfId = actor_id(this), handle](td::Result<td::Ref<ShardState>> R) {
11511150
td::actor::send_closure(SelfId, &ValidatorManagerImpl::finished_wait_state, handle, std::move(R));
11521151
});
1153-
auto id = td::actor::create_actor<WaitBlockState>("waitstate", handle, X.second, actor_id(this), X.first,
1154-
std::move(P), get_block_persistent_state(handle->id()))
1155-
.release();
1152+
auto id =
1153+
td::actor::create_actor<WaitBlockState>("waitstate", handle, X.second, actor_id(this), X.first,
1154+
std::move(P), get_block_persistent_state_to_download(handle->id()))
1155+
.release();
11561156
it->second.actor_ = id;
11571157
return;
11581158
}
@@ -3375,11 +3375,18 @@ void ValidatorManagerImpl::got_persistent_state_descriptions(std::vector<td::Ref
33753375
}
33763376
}
33773377

3378-
td::Ref<PersistentStateDescription> ValidatorManagerImpl::get_block_persistent_state(BlockIdExt block_id) {
3378+
td::Ref<PersistentStateDescription> ValidatorManagerImpl::get_block_persistent_state_to_download(BlockIdExt block_id) {
3379+
if (block_id.is_masterchain()) {
3380+
return {};
3381+
}
33793382
auto it = persistent_state_blocks_.find(block_id);
33803383
if (it == persistent_state_blocks_.end()) {
33813384
return {};
33823385
}
3386+
if (it->second->masterchain_id.seqno() + 16 >= min_confirmed_masterchain_seqno_) {
3387+
// Do not download persistent states during ordinary shard client sync
3388+
return {};
3389+
}
33833390
return it->second;
33843391
}
33853392

validator/manager.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -734,7 +734,7 @@ class ValidatorManagerImpl : public ValidatorManager {
734734

735735
void got_persistent_state_descriptions(std::vector<td::Ref<PersistentStateDescription>> descs);
736736
void add_persistent_state_description_impl(td::Ref<PersistentStateDescription> desc);
737-
td::Ref<PersistentStateDescription> get_block_persistent_state(BlockIdExt block_id);
737+
td::Ref<PersistentStateDescription> get_block_persistent_state_to_download(BlockIdExt block_id);
738738

739739
private:
740740
bool need_monitor(ShardIdFull shard) const {

0 commit comments

Comments
 (0)