Skip to content

Commit

Permalink
Do not run gc on readonly
Browse files Browse the repository at this point in the history
  • Loading branch information
tvorogme committed Feb 3, 2024
1 parent 28f6722 commit e38d053
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 7 deletions.
2 changes: 1 addition & 1 deletion validator/manager-disk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -908,7 +908,7 @@ void ValidatorManagerImpl::start_up() {
td::actor::send_closure(SelfId, &ValidatorManagerImpl::started, R.move_as_ok());
});

validator_manager_init(opts_, actor_id(this), db_.get(), std::move(P));
validator_manager_init(opts_, actor_id(this), db_.get(), std::move(P), read_only_);
}

void ValidatorManagerImpl::started(ValidatorManagerInitResult R) {
Expand Down
11 changes: 8 additions & 3 deletions validator/manager-init.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,11 @@ void ValidatorManagerMasterchainStarter::got_init_block_state(td::Ref<Masterchai
state_ = std::move(state);
CHECK(state_->get_block_id() == opts_->init_block_id() || state_->ancestor_is_valid(opts_->init_block_id()) ||
state_->get_block_id().seqno() < opts_->get_last_fork_masterchain_seqno());
//finish();

if (read_only_) {
finish();
return;
}

auto P = td::PromiseCreator::lambda(
[SelfId = actor_id(this), block_id = opts_->init_block_id()](td::Result<BlockIdExt> R) {
Expand Down Expand Up @@ -609,10 +613,11 @@ void ValidatorManagerMasterchainStarter::finish() {
}

void validator_manager_init(td::Ref<ValidatorManagerOptions> opts, td::actor::ActorId<ValidatorManager> manager,
td::actor::ActorId<Db> db, td::Promise<ValidatorManagerInitResult> promise) {
td::actor::ActorId<Db> db, td::Promise<ValidatorManagerInitResult> promise,
bool read_only_) {
CHECK(!opts.is_null());
td::actor::create_actor<ValidatorManagerMasterchainStarter>("starter", std::move(opts), manager, db,
std::move(promise))
std::move(promise), read_only_)
.release();
}

Expand Down
2 changes: 1 addition & 1 deletion validator/manager-init.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ struct ValidatorManagerInitResult {
};

void validator_manager_init(td::Ref<ValidatorManagerOptions> opts, td::actor::ActorId<ValidatorManager> manager,
td::actor::ActorId<Db> db, td::Promise<ValidatorManagerInitResult> promise);
td::actor::ActorId<Db> db, td::Promise<ValidatorManagerInitResult> promise, bool read_only_ = false);

} // namespace validator

Expand Down
5 changes: 3 additions & 2 deletions validator/manager-init.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,8 @@ class ValidatorManagerMasterchainStarter : public td::actor::Actor {
public:
ValidatorManagerMasterchainStarter(td::Ref<ValidatorManagerOptions> opts,
td::actor::ActorId<ValidatorManager> manager, td::actor::ActorId<Db> db,
td::Promise<ValidatorManagerInitResult> promise)
: opts_(std::move(opts)), manager_(manager), db_(db), promise_(std::move(promise)) {
td::Promise<ValidatorManagerInitResult> promise, bool read_only = false)
: opts_(std::move(opts)), manager_(manager), db_(db), promise_(std::move(promise)), read_only_(read_only) {
}

void start_up() override;
Expand Down Expand Up @@ -121,6 +121,7 @@ class ValidatorManagerMasterchainStarter : public td::actor::Actor {
td::Ref<MasterchainState> gc_state_;
BlockHandle last_key_block_handle_;
bool has_new_hardforks_{false};
bool read_only_ = false;

td::actor::ActorId<ValidatorManager> manager_;
td::actor::ActorId<Db> db_;
Expand Down

0 comments on commit e38d053

Please sign in to comment.