Skip to content

Commit b67dc6e

Browse files
authored
Persistent state retrieval cleanup (#1880)
* Always use v2 requests for persistent state downloads * Retire legacy tonNode.downloadPersistentState
1 parent 460200d commit b67dc6e

File tree

6 files changed

+7
-65
lines changed

6 files changed

+7
-65
lines changed

tl/generate/scheme/ton_api.tl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,6 @@ tonNode.getArchiveSlice archive_id:long offset:long max_size:int = tonNode.Data;
507507
tonNode.getOutMsgQueueProof dst_shard:tonNode.shardId blocks:(vector tonNode.blockIdExt)
508508
limits:tonNode.importedMsgQueueLimits = tonNode.OutMsgQueueProof;
509509

510-
tonNode.downloadPersistentState block:tonNode.blockIdExt masterchain_block:tonNode.blockIdExt = tonNode.Data;
511510
tonNode.downloadPersistentStateSlice block:tonNode.blockIdExt masterchain_block:tonNode.blockIdExt offset:long max_size:long = tonNode.Data;
512511
tonNode.getPersistentStateSize block:tonNode.blockIdExt masterchain_block:tonNode.blockIdExt = tonNode.PersistentStateSize;
513512
tonNode.preparePersistentState block:tonNode.blockIdExt masterchain_block:tonNode.blockIdExt = tonNode.PreparedState;

validator/full-node-master.cpp

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -337,23 +337,6 @@ void FullNodeMasterImpl::process_query(adnl::AdnlNodeIdShort src, ton_api::tonNo
337337
td::actor::send_closure(validator_manager_, &ValidatorManagerInterface::get_zero_state, block_id, std::move(P));
338338
}
339339

340-
void FullNodeMasterImpl::process_query(adnl::AdnlNodeIdShort src, ton_api::tonNode_downloadPersistentState &query,
341-
td::Promise<td::BufferSlice> promise) {
342-
auto P = td::PromiseCreator::lambda(
343-
[SelfId = actor_id(this), promise = std::move(promise)](td::Result<td::BufferSlice> R) mutable {
344-
if (R.is_error()) {
345-
promise.set_error(R.move_as_error_prefix("failed to get state from db: "));
346-
return;
347-
}
348-
349-
promise.set_value(R.move_as_ok());
350-
});
351-
auto block_id = create_block_id(query.block_);
352-
auto masterchain_block_id = create_block_id(query.masterchain_block_);
353-
td::actor::send_closure(validator_manager_, &ValidatorManagerInterface::get_persistent_state, block_id,
354-
masterchain_block_id, UnsplitStateType{}, std::move(P));
355-
}
356-
357340
void FullNodeMasterImpl::process_query(adnl::AdnlNodeIdShort src, ton_api::tonNode_downloadPersistentStateSlice &query,
358341
td::Promise<td::BufferSlice> promise) {
359342
auto query_v2 = create_tl_object<ton_api::tonNode_downloadPersistentStateSliceV2>(

validator/full-node-master.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,6 @@ class FullNodeMasterImpl : public FullNodeMaster {
7272
td::Promise<td::BufferSlice> promise);
7373
void process_query(adnl::AdnlNodeIdShort src, ton_api::tonNode_downloadZeroState &query,
7474
td::Promise<td::BufferSlice> promise);
75-
void process_query(adnl::AdnlNodeIdShort src, ton_api::tonNode_downloadPersistentState &query,
76-
td::Promise<td::BufferSlice> promise);
7775
void process_query(adnl::AdnlNodeIdShort src, ton_api::tonNode_downloadPersistentStateSlice &query,
7876
td::Promise<td::BufferSlice> promise);
7977
void process_query(adnl::AdnlNodeIdShort src, ton_api::tonNode_getCapabilities &query,

validator/full-node-shard.cpp

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -576,30 +576,6 @@ void FullNodeShardImpl::process_query(adnl::AdnlNodeIdShort src, ton_api::tonNod
576576
td::actor::send_closure(validator_manager_, &ValidatorManagerInterface::get_zero_state, block_id, std::move(P));
577577
}
578578

579-
void FullNodeShardImpl::process_query(adnl::AdnlNodeIdShort src, ton_api::tonNode_downloadPersistentState &query,
580-
td::Promise<td::BufferSlice> promise) {
581-
td::uint64 max_size = 1 << 24;
582-
auto P = td::PromiseCreator::lambda(
583-
[SelfId = actor_id(this), promise = std::move(promise), max_size](td::Result<td::BufferSlice> R) mutable {
584-
if (R.is_error()) {
585-
promise.set_error(R.move_as_error_prefix("failed to get state from db: "));
586-
return;
587-
}
588-
td::BufferSlice s = R.move_as_ok();
589-
if (s.size() > max_size) {
590-
promise.set_error(td::Status::Error("state is too big"));
591-
return;
592-
}
593-
promise.set_value(std::move(s));
594-
});
595-
auto block_id = create_block_id(query.block_);
596-
auto masterchain_block_id = create_block_id(query.masterchain_block_);
597-
VLOG(FULL_NODE_DEBUG) << "Got query downloadPersistentState " << block_id.to_str() << " "
598-
<< masterchain_block_id.to_str() << " from " << src;
599-
td::actor::send_closure(validator_manager_, &ValidatorManagerInterface::get_persistent_state_slice, block_id,
600-
masterchain_block_id, UnsplitStateType{}, 0, max_size + 1, std::move(P));
601-
}
602-
603579
void FullNodeShardImpl::process_query(adnl::AdnlNodeIdShort src, ton_api::tonNode_downloadPersistentStateSlice &query,
604580
td::Promise<td::BufferSlice> promise) {
605581
auto query_v2 = create_tl_object<ton_api::tonNode_downloadPersistentStateSliceV2>(

validator/full-node-shard.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,6 @@ class FullNodeShardImpl : public FullNodeShard {
131131
td::Promise<td::BufferSlice> promise);
132132
void process_query(adnl::AdnlNodeIdShort src, ton_api::tonNode_downloadZeroState &query,
133133
td::Promise<td::BufferSlice> promise);
134-
void process_query(adnl::AdnlNodeIdShort src, ton_api::tonNode_downloadPersistentState &query,
135-
td::Promise<td::BufferSlice> promise);
136134
void process_query(adnl::AdnlNodeIdShort src, ton_api::tonNode_downloadPersistentStateSlice &query,
137135
td::Promise<td::BufferSlice> promise);
138136
void process_query(adnl::AdnlNodeIdShort src, ton_api::tonNode_getCapabilities &query,

validator/net/download-state.cpp

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -251,15 +251,9 @@ void DownloadState::request_total_size() {
251251
td::actor::send_closure(SelfId, &DownloadState::got_total_size, res.ok()->size_);
252252
});
253253

254-
td::BufferSlice query;
255-
if (effective_shard_ == 0) {
256-
query = create_serialize_tl_object<ton_api::tonNode_getPersistentStateSize>(
257-
create_tl_block_id(block_id_), create_tl_block_id(masterchain_block_id_));
258-
} else {
259-
query = create_serialize_tl_object<ton_api::tonNode_getPersistentStateSizeV2>(
260-
create_tl_object<ton_api::tonNode_persistentStateIdV2>(
261-
create_tl_block_id(block_id_), create_tl_block_id(masterchain_block_id_), effective_shard_));
262-
}
254+
td::BufferSlice query = create_serialize_tl_object<ton_api::tonNode_getPersistentStateSizeV2>(
255+
create_tl_object<ton_api::tonNode_persistentStateIdV2>(
256+
create_tl_block_id(block_id_), create_tl_block_id(masterchain_block_id_), effective_shard_));
263257
if (client_.empty()) {
264258
td::actor::send_closure(overlays_, &overlay::Overlays::send_query_via, download_from_, local_id_, overlay_id_,
265259
"get size", std::move(P), td::Timestamp::in(3.0), std::move(query),
@@ -326,16 +320,10 @@ void DownloadState::got_block_state_part(td::BufferSlice data, td::uint32 reques
326320
}
327321
});
328322

329-
td::BufferSlice query;
330-
if (effective_shard_ == 0) {
331-
query = create_serialize_tl_object<ton_api::tonNode_downloadPersistentStateSlice>(
332-
create_tl_block_id(block_id_), create_tl_block_id(masterchain_block_id_), sum_, part_size);
333-
} else {
334-
query = create_serialize_tl_object<ton_api::tonNode_downloadPersistentStateSliceV2>(
335-
create_tl_object<ton_api::tonNode_persistentStateIdV2>(
336-
create_tl_block_id(block_id_), create_tl_block_id(masterchain_block_id_), effective_shard_),
337-
sum_, part_size);
338-
}
323+
td::BufferSlice query = create_serialize_tl_object<ton_api::tonNode_downloadPersistentStateSliceV2>(
324+
create_tl_object<ton_api::tonNode_persistentStateIdV2>(
325+
create_tl_block_id(block_id_), create_tl_block_id(masterchain_block_id_), effective_shard_),
326+
sum_, part_size);
339327
if (client_.empty()) {
340328
td::actor::send_closure(overlays_, &overlay::Overlays::send_query_via, download_from_, local_id_, overlay_id_,
341329
"download state", std::move(P), td::Timestamp::in(20.0), std::move(query),

0 commit comments

Comments
 (0)