trace(download): failed requests (#715)

This commit is contained in:
Roman Krasiuk
2023-01-04 20:55:59 +02:00
committed by GitHub
parent 9d6be78f4b
commit 8c413ad0a9
3 changed files with 12 additions and 8 deletions

View File

@ -106,7 +106,7 @@ impl Default for BodiesConfig {
fn default() -> Self {
Self {
commit_threshold: 5_000,
downloader_batch_size: 200,
downloader_batch_size: 100,
downloader_retries: 5,
downloader_concurrency: 10,
}

View File

@ -124,17 +124,18 @@ where
&self,
headers: Vec<&SealedHeader>,
) -> DownloadResult<Vec<BlockResponse>> {
let headers_with_txs_and_ommers =
// Filter headers with transaction or ommers. These are the only ones
// we will request
let request =
headers.iter().filter(|h| !h.is_empty()).map(|h| h.hash()).collect::<Vec<_>>();
if headers_with_txs_and_ommers.is_empty() {
if request.is_empty() {
tracing::trace!(target: "downloaders::bodies", len = headers.len(), "Nothing to download");
return Ok(headers.into_iter().cloned().map(BlockResponse::Empty).collect())
}
let request_len = headers_with_txs_and_ommers.len();
let request_len = request.len();
tracing::trace!(target: "downloaders::bodies", request_len, "Requesting bodies");
let (peer_id, bodies) =
self.client.get_block_bodies(headers_with_txs_and_ommers).await?.split();
let (peer_id, bodies) = self.client.get_block_bodies(request.clone()).await?.split();
tracing::trace!(
target: "downloaders::bodies", request_len, response_len = bodies.len(), ?peer_id, "Received bodies"
);
@ -154,7 +155,7 @@ where
Some(body) => body,
None => {
tracing::trace!(
target: "downloaders::bodies", ?peer_id, header = ?header.hash(), "Penalizing peer"
target: "downloaders::bodies", ?peer_id, header = ?header.hash(), ?request, "Penalizing peer"
);
self.client.report_bad_message(peer_id);
// TODO: We error always, this means that if we got no body from a peer
@ -177,7 +178,7 @@ where
// ones calculated manually from the block body.
self.consensus.pre_validate_block(&block).map_err(|error| {
tracing::trace!(
target: "downloaders::bodies", ?peer_id, header = ?header.hash(), ?error, "Penalizing peer"
target: "downloaders::bodies", ?peer_id, header = ?header.hash(), ?error, ?request, "Penalizing peer"
);
self.client.report_bad_message(peer_id);
DownloadError::BlockValidation { hash: header.hash(), error }

View File

@ -339,6 +339,9 @@ where
}
}
Err(error) => {
tracing::error!(
target: "downloaders::headers", request = ?fut.request, ?error, "Error processing header response",
);
// Penalize the peer for bad response
if let Some(peer_id) = peer_id {
tracing::trace!(target: "downloaders::headers", ?peer_id, ?error, "Penalizing peer");