Skip to content

Commit 36e97b6

Browse files
authored
Merge pull request oreoslabs#50 from dguenther/fix-batch-overlap
Fetch next block for start of next batch
2 parents 17f1f81 + 2e347d7 commit 36e97b6

File tree

1 file changed

+6
-10
lines changed

1 file changed

+6
-10
lines changed

crates/server/src/handlers.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -264,8 +264,7 @@ async fn update_scan_status(
264264
message.account = account.name.clone();
265265
let mut blocks = message.blocks.clone();
266266
blocks.sort_by(|a, b| b.sequence.cmp(&a.sequence));
267-
let mut start_hash = String::new();
268-
let mut end_hash;
267+
let mut start_hash = message.start.clone();
269268
loop {
270269
let mut message = message.clone();
271270
let mut limited_blocks = Vec::with_capacity(batch_size);
@@ -278,21 +277,18 @@ async fn update_scan_status(
278277
if !first_request && limited_blocks.is_empty() {
279278
break;
280279
}
281-
if !first_request {
282-
message.start = start_hash;
283-
}
280+
message.start = start_hash.clone();
284281
if !limited_blocks.is_empty() && !blocks.is_empty() {
285-
end_hash = limited_blocks.last().unwrap().hash.clone();
286-
} else {
287-
end_hash = message.end.clone();
282+
let last_block = limited_blocks.last().unwrap();
283+
message.end = last_block.hash.clone();
284+
let q = shared.rpc_handler.get_blocks(last_block.sequence as u64, last_block.sequence as u64 + 1)?;
285+
start_hash = q.data.blocks[q.data.blocks.len() - 1].block.hash.clone();
288286
}
289287

290-
message.end = end_hash.clone();
291288
message.blocks = limited_blocks;
292289
shared.rpc_handler.set_account_head(message)?;
293290
{
294291
first_request = false;
295-
start_hash = end_hash;
296292
}
297293
}
298294
if scan_complete {

0 commit comments

Comments
 (0)