Skip to content
Closed
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
c0dccbe
[service] better logging
clangenb Oct 9, 2023
09ba3d1
[service] probably fix OOM
clangenb Oct 9, 2023
7fb40ee
[service/parentchain_handler] rename `last_synced_header` to `sync_un…
clangenb Oct 12, 2023
30d99cb
[service/parentchain_handler] extract internal `sync_blocks` method
clangenb Oct 12, 2023
c608731
[service/parentchain_handler] some renaming
clangenb Oct 12, 2023
325303c
[service/parentchain_handler] some renaming
clangenb Oct 12, 2023
083ce2e
[service/parentchain_handler] fix break statement
clangenb Oct 12, 2023
960cc4d
[service/parentchain_handler] move check if up to date to the end of …
clangenb Oct 12, 2023
856a09e
[service/parentchain_handler] uplift total sync info from trace to pr…
clangenb Oct 12, 2023
dbb7474
[service/parentchain_handler] move check for monotonically rising blo…
clangenb Oct 12, 2023
cc8f3b7
[service/parentchain_handler] fix check for sleeping in sync process
clangenb Oct 12, 2023
58e14bc
[service/parentchain_handler] rename `until_header` to `sync_target`
clangenb Oct 12, 2023
a8b1928
[service/parentchain_handler] change for loop into while and better n…
clangenb Oct 12, 2023
42a2645
[service/parentchain_handler] add comment
clangenb Oct 12, 2023
43cac9e
[service/parentchain_handler] better logs
clangenb Oct 12, 2023
b749381
[service/parentchain_handler] better logs
clangenb Oct 12, 2023
89de215
[service/parentchain_handler] fix import condition in while loop
clangenb Oct 13, 2023
c2ba744
[service/parentchain_handler] introduce block sync error
clangenb Oct 13, 2023
4271c42
Merge branch 'master' into cl/fix-sidechain-light-client
clangenb Oct 13, 2023
600a983
Merge branch 'master' into cl/fix-sidechain-light-client
clangenb Oct 13, 2023
ec0a750
[service/main] improve log levels
clangenb Oct 14, 2023
3f8b757
[service] `sidechain_start_untrusted_rpc_server`downgrade tokyo handl…
clangenb Oct 14, 2023
14fbc5a
[service/main] distinguish better between different setups
clangenb Oct 14, 2023
f84e5ed
[service/main] extract duplicate code
clangenb Oct 14, 2023
0cbd95b
[service/main] fix clippy
clangenb Oct 14, 2023
e7d15e6
[service/main] fix clippy with teeracle feature
clangenb Oct 14, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[service/parentchain_handler] fix check for sleeping in sync process
  • Loading branch information
clangenb committed Oct 12, 2023
commit cc8f3b70b322182abae3ccf363ec610e2b487c91
42 changes: 34 additions & 8 deletions service/src/parentchain_handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -192,21 +192,47 @@ where
) -> ServiceResult<Header> {
let id = self.parentchain_id();

printl!(
"[{:?}] last synced block number: {}. synching until {}",
id,
last_synced_header.number,
until_header.number
println!(
"[{:?}] last synced block number: {}. syncing until {}",
id, last_synced_header.number, until_header.number
);
let mut last_synced_header = last_synced_header.clone();

while last_synced_header.number() < until_header.number() {
last_synced_header = self.sync_parentchain(last_synced_header)?;
let curr_block_number = self
.parentchain_api
.last_finalized_block()?
.ok_or(Error::MissingLastFinalizedBlock)?
.block
.header()
.number;

if curr_block_number < until_header.number
&& curr_block_number < last_synced_header.number + 1
{
// Skip the rest of the loop and wait if we have synced as much
// as possible, but haven't reached the sync target yet.
println!(
"[{:?}] sync target #{} is not finalized (#{}), wait a sec ...",
id, until_header.number, curr_block_number
);
std::thread::sleep(std::time::Duration::from_secs(1));
continue
}

// min(until_header, last_synced.number + chunk_size, current_parentchain_finalized_block)
let chunk_target = min(
min(last_synced_header.number + BLOCK_SYNC_BATCH_SIZE, curr_block_number),
until_header.number,
);

// Tested above that last_synced_header.number < current_block_number (i.e. chunk_target).
last_synced_header = self.sync_blocks(last_synced_header.number + 1, chunk_target)?;
trace!("[{:?}] synced block number: {}", id, last_synced_header.number);

// Verify and import blocks into the light client. This can't be done after the loop
// because the import is mandatory to remove them from RAM loop. When we register on
// a production system that has already many blocks this might lead to an OOM if we
// because the import is mandatory to remove them from RAM. When we register on
// a production system that has already many blocks, this might lead to an OOM if we
// import them all at once after the loop, see #1462.
self.trigger_parentchain_block_import()?;
}
Expand Down