Import target block body during warp sync (#12300)

* Receive and import target block body

* Request target block

* minor: wording

* Check for block body in the test

* Import target block justifications

* Fix: do not fail block validation if no justifications received

* Fix: import target blocks without justifications

Co-authored-by: arkpar <arkady.paronyan@gmail.com>
This commit is contained in:
Dmitry Markin
2022-09-20 18:05:44 +03:00
committed by GitHub
parent 6e424467a2
commit ea1c8bd2db
8 changed files with 211 additions and 31 deletions
+2 -2
View File
@@ -1192,7 +1192,7 @@ fn warp_sync() {
..Default::default()
});
let gap_end = net.peer(0).push_blocks(63, false);
net.peer(0).push_blocks(1, false);
let target = net.peer(0).push_blocks(1, false);
net.peer(1).push_blocks(64, false);
net.peer(2).push_blocks(64, false);
// Wait for peer 1 to sync state.
@@ -1203,7 +1203,7 @@ fn warp_sync() {
// Wait for peer 1 download block history
block_on(futures::future::poll_fn::<(), _>(|cx| {
net.poll(cx);
if net.peer(3).has_block(&gap_end) {
if net.peer(3).has_body(&gap_end) && net.peer(3).has_body(&target) {
Poll::Ready(())
} else {
Poll::Pending