Skip to content

Commit 93923c7

Browse files
committed
Refactor ArchiveImporterLocal using coroutines
1 parent 9b987d4 commit 93923c7

File tree

7 files changed

+240
-363
lines changed

7 files changed

+240
-363
lines changed

validator/db/archive-manager.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -649,13 +649,19 @@ void ArchiveManager::load_package(PackageId id) {
649649
}
650650
}
651651

652-
desc.file = td::actor::create_actor<ArchiveSlice>("slice", id.id, id.key, id.temp, false, 0, db_root_,
653-
archive_lru_.get(), statistics_);
652+
desc.file = create_archive_slice(id, 0);
654653

655654
m.emplace(id, std::move(desc));
656655
update_permanent_slices();
657656
}
658657

658+
td::actor::ActorOwn<ArchiveSlice> ArchiveManager::create_archive_slice(const PackageId &id,
659+
td::uint32 shard_split_depth) {
660+
return td::actor::create_actor<ArchiveSlice>(
661+
PSTRING() << "slice." << (id.temp ? "temp." : (id.key ? "key." : "")) << id.id, id.id, id.key, id.temp, false,
662+
shard_split_depth, db_root_, archive_lru_.get(), statistics_);
663+
}
664+
659665
const ArchiveManager::FileDescription *ArchiveManager::get_file_desc(ShardIdFull shard, PackageId id, BlockSeqno seqno,
660666
UnixTime ts, LogicalTime lt, bool force) {
661667
auto &f = get_file_map(id);
@@ -684,9 +690,7 @@ const ArchiveManager::FileDescription *ArchiveManager::add_file_desc(ShardIdFull
684690
FileDescription new_desc{id, false};
685691
td::mkdir(db_root_ + id.path()).ensure();
686692
std::string prefix = PSTRING() << db_root_ << id.path() << id.name();
687-
new_desc.file = td::actor::create_actor<ArchiveSlice>("slice", id.id, id.key, id.temp, false,
688-
id.key || id.temp ? 0 : cur_shard_split_depth_, db_root_,
689-
archive_lru_.get(), statistics_);
693+
new_desc.file = create_archive_slice(id, id.key || id.temp ? 0 : cur_shard_split_depth_);
690694
const FileDescription &desc = f.emplace(id, std::move(new_desc));
691695
if (!id.temp) {
692696
update_desc(f, desc, shard, seqno, ts, lt);

validator/db/archive-manager.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ class ArchiveManager : public td::actor::Actor {
200200
std::map<std::pair<BlockSeqno, FileHash>, PermState> perm_states_; // Mc block seqno, hash -> state
201201

202202
void load_package(PackageId seqno);
203+
td::actor::ActorOwn<ArchiveSlice> create_archive_slice(const PackageId& id, td::uint32 shard_split_depth);
203204
void delete_package(PackageId seqno, td::Promise<td::Unit> promise);
204205
void deleted_package(PackageId seqno, td::Promise<td::Unit> promise);
205206
void get_handle_cont(BlockIdExt block_id, PackageId id, td::Promise<BlockHandle> promise);

validator/db/archive-slice.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "common/delay.h"
2626
#include "files-async.hpp"
2727
#include "db-utils.h"
28+
#include "td/utils/PathView.h"
2829

2930
namespace ton {
3031

@@ -403,7 +404,9 @@ void ArchiveSlice::get_file(ConstBlockHandle handle, FileReference ref_id, td::P
403404
promise.set_value(std::move(R.move_as_ok().second));
404405
}
405406
});
406-
td::actor::create_actor<PackageReader>("reader", p->package, offset, std::move(P), statistics_.pack_statistics).release();
407+
td::actor::create_actor<PackageReader>(PSTRING() << "reader." << td::PathView(p->path).file_name(), p->package,
408+
offset, std::move(P), statistics_.pack_statistics)
409+
.release();
407410
}
408411

409412
void ArchiveSlice::get_block_common(AccountIdPrefixFull account_id,
@@ -846,7 +849,8 @@ void ArchiveSlice::add_package(td::uint32 seqno, ShardIdFull shard_prefix, td::u
846849
if (version >= 1) {
847850
pack->truncate(size).ensure();
848851
}
849-
auto writer = td::actor::create_actor<PackageWriter>("writer", pack, async_mode_, statistics_.pack_statistics);
852+
auto writer = td::actor::create_actor<PackageWriter>(PSTRING() << "writer." << td::PathView(path).file_name(), pack,
853+
async_mode_, statistics_.pack_statistics);
850854
packages_.emplace_back(std::move(pack), std::move(writer), seqno, shard_prefix, path, idx, version);
851855
}
852856

validator/impl/fabric.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,7 @@ td::Ref<BlockSignatureSet> create_signature_set(std::vector<BlockSignature> sig_
113113
return td::Ref<BlockSignatureSetQ>{true, std::move(sig_set)};
114114
}
115115

116-
td::Result<td::Ref<ExtMessage>> create_ext_message(td::BufferSlice data,
117-
block::SizeLimitsConfig::ExtMsgLimits limits) {
116+
td::Result<td::Ref<ExtMessage>> create_ext_message(td::BufferSlice data, block::SizeLimitsConfig::ExtMsgLimits limits) {
118117
TRY_RESULT(res, ExtMessageQ::create_ext_message(std::move(data), limits));
119118
return std::move(res);
120119
}
@@ -228,8 +227,10 @@ void run_liteserver_query(td::BufferSlice data, td::actor::ActorId<ValidatorMana
228227
LiteQuery::run_query(std::move(data), std::move(manager), std::move(cache), std::move(promise));
229228
}
230229

231-
void run_fetch_account_state(WorkchainId wc, StdSmcAddress addr, td::actor::ActorId<ValidatorManager> manager,
232-
td::Promise<std::tuple<td::Ref<vm::CellSlice>,UnixTime,LogicalTime,std::unique_ptr<block::ConfigInfo>>> promise) {
230+
void run_fetch_account_state(
231+
WorkchainId wc, StdSmcAddress addr, td::actor::ActorId<ValidatorManager> manager,
232+
td::Promise<std::tuple<td::Ref<vm::CellSlice>, UnixTime, LogicalTime, std::unique_ptr<block::ConfigInfo>>>
233+
promise) {
233234
LiteQuery::fetch_account_state(wc, addr, std::move(manager), std::move(promise));
234235
}
235236

0 commit comments

Comments
 (0)