mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
trace(download): failed requests (#715)
This commit is contained in:
@ -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,
|
||||
}
|
||||
|
||||
@ -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 }
|
||||
|
||||
@ -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");
|
||||
|
||||
Reference in New Issue
Block a user