Skip to content

Commit

Permalink
?
Browse files Browse the repository at this point in the history
  • Loading branch information
tvorogme committed Feb 11, 2024
1 parent 1d40d3a commit b186c7f
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 45 deletions.
2 changes: 2 additions & 0 deletions validator/impl/liteserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -848,6 +848,8 @@ void LiteQuery::perform_getAccountState(BlockIdExt blkid, WorkchainId workchain,
manager_, &ton::validator::ValidatorManager::get_last_liteserver_state_block,
[Self = actor_id(this)](td::Result<std::pair<Ref<ton::validator::MasterchainState>, BlockIdExt>> res) -> void {
if (res.is_error()) {
// Here can be not found
LOG(ERROR) << "Block not found raised here?";
td::actor::send_closure(Self, &LiteQuery::abort_query, res.move_as_error());
} else {
auto pair = res.move_as_ok();
Expand Down
36 changes: 3 additions & 33 deletions validator/manager-disk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -899,8 +899,8 @@ void ValidatorManagerImpl::new_block(BlockHandle handle, td::Ref<ShardState> sta
}
}

void ValidatorManagerImpl::add_lite_query_stats_extended(int lite_query_id, adnl::AdnlNodeIdShort dst, long start_at, long end_at,
bool success) {
void ValidatorManagerImpl::add_lite_query_stats_extended(int lite_query_id, adnl::AdnlNodeIdShort dst, long start_at,
long end_at, bool success) {
td::actor::send_closure(lslimiter_, &liteserver::LiteServerLimiter::add_lite_query_stats, lite_query_id, dst,
start_at, end_at, success);
}
Expand Down Expand Up @@ -965,39 +965,9 @@ void ValidatorManagerImpl::get_top_masterchain_state_block(
std::pair<td::Ref<MasterchainState>, BlockIdExt>{last_masterchain_state_, last_masterchain_block_id_});
}

td::Ref<MasterchainState> ValidatorManagerImpl::do_get_last_liteserver_state() {
if (last_masterchain_state_.is_null()) {
return {};
}
if (last_liteserver_state_.is_null()) {
last_liteserver_state_ = last_masterchain_state_;
return last_liteserver_state_;
}
if (last_liteserver_state_->get_seqno() == last_masterchain_state_->get_seqno()) {
return last_liteserver_state_;
}
// If liteserver seqno (i.e. shard client) lags then use last masterchain state for liteserver
// Allowed lag depends on the block rate
double time_per_block = double(last_masterchain_state_->get_unix_time() - last_liteserver_state_->get_unix_time()) /
double(last_masterchain_state_->get_seqno() - last_liteserver_state_->get_seqno());
if (td::Clocks::system() - double(last_liteserver_state_->get_unix_time()) > std::min(time_per_block * 8, 180.0)) {
last_liteserver_state_ = last_masterchain_state_;
}
return last_liteserver_state_;
}

void ValidatorManagerImpl::get_last_liteserver_state_block(
td::Promise<std::pair<td::Ref<MasterchainState>, BlockIdExt>> promise) {
if (!offline_){
auto state = do_get_last_liteserver_state();
if (state.is_null()) {
promise.set_error(td::Status::Error(ton::ErrorCode::notready, "not started"));
} else {
promise.set_result(std::pair<td::Ref<MasterchainState>, BlockIdExt>{state, state->get_block_id()});
}
} else {
return get_top_masterchain_state_block(std::move(promise));
}
return get_top_masterchain_state_block(std::move(promise));
}

void ValidatorManagerImpl::send_get_block_request(BlockIdExt id, td::uint32 priority,
Expand Down
12 changes: 0 additions & 12 deletions validator/manager-disk.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,6 @@ class ValidatorManagerImpl : public ValidatorManager {
void get_top_masterchain_state_block(td::Promise<std::pair<td::Ref<MasterchainState>, BlockIdExt>> promise) override;
void get_last_liteserver_state_block(td::Promise<std::pair<td::Ref<MasterchainState>, BlockIdExt>> promise) override;

td::Ref<MasterchainState> do_get_last_liteserver_state();

void send_get_block_request(BlockIdExt id, td::uint32 priority, td::Promise<ReceivedBlock> promise) override;
void send_get_zero_state_request(BlockIdExt id, td::uint32 priority, td::Promise<td::BufferSlice> promise) override;
void send_get_persistent_state_request(BlockIdExt id, BlockIdExt masterchain_block_id, td::uint32 priority,
Expand Down Expand Up @@ -382,14 +380,6 @@ class ValidatorManagerImpl : public ValidatorManager {
}
void update_shard_client_block_handle(BlockHandle handle, td::Ref<MasterchainState> state,
td::Promise<td::Unit> promise) override {
shard_client_handle_ = std::move(handle);
auto seqno = shard_client_handle_->id().seqno();
LOG(WARNING) << "Update shard client to: " << seqno;
if (state.not_null()) {
if (last_liteserver_state_.is_null() || last_liteserver_state_->get_block_id().seqno() < seqno) {
last_liteserver_state_ = std::move(state);
}
}
}

void prepare_stats(td::Promise<std::vector<std::pair<std::string, std::string>>> promise) override {
Expand Down Expand Up @@ -514,8 +504,6 @@ class ValidatorManagerImpl : public ValidatorManager {
std::string db_root_;
ShardIdFull shard_to_generate_;
BlockIdExt block_to_generate_;
td::Ref<MasterchainState> last_liteserver_state_;
BlockHandle shard_client_handle_;

int pending_new_shard_block_descr_{0};
std::vector<td::Promise<std::vector<td::Ref<ShardTopBlockDescription>>>> waiting_new_shard_block_descr_;
Expand Down

0 comments on commit b186c7f

Please sign in to comment.