diff --git a/beacon_node/network/src/sync/block_lookups/mod.rs b/beacon_node/network/src/sync/block_lookups/mod.rs index 081cc2b221..b28e48c842 100644 --- a/beacon_node/network/src/sync/block_lookups/mod.rs +++ b/beacon_node/network/src/sync/block_lookups/mod.rs @@ -909,11 +909,12 @@ impl BlockLookups { PeerAction::MidToleranceError, "single_block_failure", ); - if let Some(blob_id_ref) = blob_id_ref { - // Try it again if possible. - if !request_ref.awaiting_download(ResponseType::Blob) { + if matches!(response_type, ResponseType::Blob) + || (!request_ref.blob_request_state.component_processed + && !request_ref.downloading(ResponseType::Blob)) + { retry_request_after_failure( - blob_id_ref, + blob_id_ref.as_mut().unwrap(), request_ref, ResponseType::Blob, peer_id.as_peer_id(), @@ -921,20 +922,20 @@ impl BlockLookups { &self.log, ); } - } - if let Some(block_id_ref) = block_id_ref { - if !request_ref.awaiting_download(ResponseType::Block) { + if matches!(response_type, ResponseType::Block) + || (!request_ref.block_request_state.component_processed + && !request_ref.downloading(ResponseType::Block)) + { // Try it again if possible. retry_request_after_failure( - block_id_ref, + block_id_ref.as_mut().unwrap(), request_ref, ResponseType::Block, peer_id.as_peer_id(), cx, &self.log, ); - } } ShouldRemoveLookup::False } @@ -1502,7 +1503,7 @@ fn should_remove_missing_components( } request_ref.remove_peer_if_useless(blob_peer.as_peer_id(), ResponseType::Blob); if let Some(blob_id_ref) = blob_id_ref { - if !request_ref.awaiting_download(ResponseType::Blob) { + if !request_ref.downloading(ResponseType::Blob) { // Try it again if possible. return retry_request_after_failure( blob_id_ref, diff --git a/beacon_node/network/src/sync/block_lookups/single_block_lookup.rs b/beacon_node/network/src/sync/block_lookups/single_block_lookup.rs index 36e976dad0..c5da84a88f 100644 --- a/beacon_node/network/src/sync/block_lookups/single_block_lookup.rs +++ b/beacon_node/network/src/sync/block_lookups/single_block_lookup.rs @@ -48,6 +48,15 @@ impl SingleBlockLookup bool { + match response_type { + ResponseType::Block => { + matches!(self.block_request_state.state, State::Downloading {..}) + } + ResponseType::Blob => matches!(self.blob_request_state.state, State::Downloading { .. }), + } + } + pub(crate) fn remove_peer_if_useless(&mut self, peer_id: &PeerId, response_type: ResponseType) { match response_type { ResponseType::Block => self.block_request_state.remove_peer_if_useless(peer_id), diff --git a/beacon_node/network/src/sync/block_lookups/tests.rs b/beacon_node/network/src/sync/block_lookups/tests.rs index f0793d3216..a89eca2c28 100644 --- a/beacon_node/network/src/sync/block_lookups/tests.rs +++ b/beacon_node/network/src/sync/block_lookups/tests.rs @@ -1704,8 +1704,8 @@ mod deneb_only { .block_response_triggering_process() .invalid_block_processed() .expect_penalty() - .expect_blobs_request() .expect_block_request() + .expect_no_blobs_request() .blobs_response() .missing_components_from_blob_request() .expect_no_penalty() @@ -1726,7 +1726,7 @@ mod deneb_only { .invalid_blob_processed() .expect_penalty() .expect_blobs_request() - .expect_block_request(); + .expect_no_block_request(); } #[test] @@ -1881,8 +1881,8 @@ mod deneb_only { .block_response_triggering_process() .invalid_block_processed() .expect_penalty() - .expect_blobs_request() .expect_block_request() + .expect_no_blobs_request() .blobs_response() .missing_components_from_blob_request() .expect_no_penalty() @@ -1903,7 +1903,7 @@ mod deneb_only { .invalid_blob_processed() .expect_penalty() .expect_blobs_request() - .expect_block_request(); + .expect_no_block_request(); } #[test]