mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
fullnode: support for TCP master/slave replication
This commit is contained in:
parent
bfa166d66c
commit
f40822b58a
50 changed files with 1109 additions and 244 deletions
|
@ -96,7 +96,7 @@ void ValidatorManagerMasterchainReiniter::downloaded_proof_link(td::BufferSlice
|
|||
LOG(WARNING) << "downloaded proof link failed: " << R.move_as_error();
|
||||
td::actor::send_closure(SelfId, &ValidatorManagerMasterchainReiniter::download_proof_link);
|
||||
} else {
|
||||
td::actor::send_closure(SelfId, &ValidatorManagerMasterchainReiniter::try_download_key_blocks);
|
||||
td::actor::send_closure(SelfId, &ValidatorManagerMasterchainReiniter::try_download_key_blocks, false);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -104,10 +104,10 @@ void ValidatorManagerMasterchainReiniter::downloaded_proof_link(td::BufferSlice
|
|||
}
|
||||
|
||||
void ValidatorManagerMasterchainReiniter::downloaded_zero_state() {
|
||||
try_download_key_blocks();
|
||||
try_download_key_blocks(false);
|
||||
}
|
||||
|
||||
void ValidatorManagerMasterchainReiniter::try_download_key_blocks() {
|
||||
void ValidatorManagerMasterchainReiniter::try_download_key_blocks(bool try_start) {
|
||||
if (!download_new_key_blocks_until_) {
|
||||
if (opts_->allow_blockchain_init()) {
|
||||
download_new_key_blocks_until_ = td::Timestamp::in(60.0);
|
||||
|
@ -115,15 +115,18 @@ void ValidatorManagerMasterchainReiniter::try_download_key_blocks() {
|
|||
download_new_key_blocks_until_ = td::Timestamp::in(600.0);
|
||||
}
|
||||
}
|
||||
if (key_blocks_.size() > 0) {
|
||||
if (key_blocks_.size() > 0 && try_start) {
|
||||
auto h = *key_blocks_.rbegin();
|
||||
CHECK(h->inited_unix_time());
|
||||
if (h->unix_time() + opts_->sync_blocks_before() > td::Clocks::system()) {
|
||||
choose_masterchain_state();
|
||||
return;
|
||||
}
|
||||
if ((opts_->allow_blockchain_init() || h->unix_time() + 2 * 86400 > td::Clocks::system()) &&
|
||||
download_new_key_blocks_until_.is_in_past()) {
|
||||
if (h->unix_time() + 2 * opts_->key_block_utime_step() > td::Clocks::system()) {
|
||||
choose_masterchain_state();
|
||||
return;
|
||||
}
|
||||
if (opts_->allow_blockchain_init() && download_new_key_blocks_until_.is_in_past()) {
|
||||
choose_masterchain_state();
|
||||
return;
|
||||
}
|
||||
|
@ -146,7 +149,7 @@ void ValidatorManagerMasterchainReiniter::got_next_key_blocks(std::vector<BlockI
|
|||
if (!vec.size()) {
|
||||
delay_action(
|
||||
[SelfId = actor_id(this)]() {
|
||||
td::actor::send_closure(SelfId, &ValidatorManagerMasterchainReiniter::try_download_key_blocks);
|
||||
td::actor::send_closure(SelfId, &ValidatorManagerMasterchainReiniter::try_download_key_blocks, true);
|
||||
},
|
||||
td::Timestamp::in(1.0));
|
||||
return;
|
||||
|
@ -181,7 +184,7 @@ void ValidatorManagerMasterchainReiniter::got_key_block_handle(td::uint32 idx, B
|
|||
key_blocks_[idx] = std::move(handle);
|
||||
CHECK(pending_ > 0);
|
||||
if (!--pending_) {
|
||||
try_download_key_blocks();
|
||||
try_download_key_blocks(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue