mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Accelerator, part 1 (#1119)
This commit contains some parts of https://github.com/ton-blockchain/ton/tree/accelerator This is auxiliary code that mostly does not change node behavior. 1) Semiprivate overlays and other improvements in overlays code 2) Rename actual_min_split -> monitor_min_split, fix building shard overlays 3) Loading block candidates by block id from DB, fix accept_block after validator restart 4) Cells: ProofStorageStat and changes in CellUsageTree 5) Remove some unused code, other minor changes
This commit is contained in:
parent
9a10f79fba
commit
908415d00b
66 changed files with 2221 additions and 638 deletions
|
@ -1035,6 +1035,16 @@ void ValidatorManagerImpl::get_block_candidate_from_db(PublicKey source, BlockId
|
|||
td::actor::send_closure(db_, &Db::get_block_candidate, source, id, collated_data_file_hash, std::move(promise));
|
||||
}
|
||||
|
||||
void ValidatorManagerImpl::get_candidate_data_by_block_id_from_db(BlockIdExt id, td::Promise<td::BufferSlice> promise) {
|
||||
auto it = cached_block_candidates_.find(id);
|
||||
if (it != cached_block_candidates_.end()) {
|
||||
promise.set_result(it->second.data.clone());
|
||||
return;
|
||||
}
|
||||
td::actor::send_closure(db_, &Db::get_block_candidate_by_block_id, id,
|
||||
promise.wrap([](BlockCandidate &&b) { return std::move(b.data); }));
|
||||
}
|
||||
|
||||
void ValidatorManagerImpl::get_block_proof_from_db(ConstBlockHandle handle, td::Promise<td::Ref<Proof>> promise) {
|
||||
td::actor::send_closure(db_, &Db::get_block_proof, std::move(handle), std::move(promise));
|
||||
}
|
||||
|
@ -2040,15 +2050,13 @@ void ValidatorManagerImpl::update_shards() {
|
|||
auto it2 = next_validator_groups_.find(legacy_val_group_id);
|
||||
if (it2 != next_validator_groups_.end()) {
|
||||
if (!it2->second.actor.empty()) {
|
||||
td::actor::send_closure(it2->second.actor, &ValidatorGroup::start, prev, last_masterchain_block_id_,
|
||||
last_masterchain_state_->get_unix_time());
|
||||
td::actor::send_closure(it2->second.actor, &ValidatorGroup::start, prev, last_masterchain_block_id_);
|
||||
}
|
||||
new_validator_groups_.emplace(val_group_id, std::move(it2->second));
|
||||
} else {
|
||||
auto G = create_validator_group(val_group_id, shard, val_set, key_seqno, opts, started_);
|
||||
if (!G.empty()) {
|
||||
td::actor::send_closure(G, &ValidatorGroup::start, prev, last_masterchain_block_id_,
|
||||
last_masterchain_state_->get_unix_time());
|
||||
td::actor::send_closure(G, &ValidatorGroup::start, prev, last_masterchain_block_id_);
|
||||
}
|
||||
new_validator_groups_.emplace(val_group_id, ValidatorGroupEntry{std::move(G), shard});
|
||||
}
|
||||
|
@ -2096,15 +2104,13 @@ void ValidatorManagerImpl::update_shards() {
|
|||
auto it2 = next_validator_groups_.find(val_group_id);
|
||||
if (it2 != next_validator_groups_.end()) {
|
||||
if (!it2->second.actor.empty()) {
|
||||
td::actor::send_closure(it2->second.actor, &ValidatorGroup::start, prev, last_masterchain_block_id_,
|
||||
last_masterchain_state_->get_unix_time());
|
||||
td::actor::send_closure(it2->second.actor, &ValidatorGroup::start, prev, last_masterchain_block_id_);
|
||||
}
|
||||
new_validator_groups_.emplace(val_group_id, std::move(it2->second));
|
||||
} else {
|
||||
auto G = create_validator_group(val_group_id, shard, val_set, key_seqno, opts, started_);
|
||||
if (!G.empty()) {
|
||||
td::actor::send_closure(G, &ValidatorGroup::start, prev, last_masterchain_block_id_,
|
||||
last_masterchain_state_->get_unix_time());
|
||||
td::actor::send_closure(G, &ValidatorGroup::start, prev, last_masterchain_block_id_);
|
||||
}
|
||||
new_validator_groups_.emplace(val_group_id, ValidatorGroupEntry{std::move(G), shard});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue