mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-02-19 03:04:27 -05:00
fix(prune): improve pruner log readability (#21522)
Co-authored-by: Amp <amp@ampcode.com> Co-authored-by: joshieDo <93316087+joshieDo@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
48a999a81b
commit
497985ca86
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -10248,6 +10248,7 @@ dependencies = [
|
||||
"strum 0.27.2",
|
||||
"thiserror 2.0.18",
|
||||
"toml",
|
||||
"tracing",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -149,21 +149,7 @@ where
|
||||
let elapsed = start.elapsed();
|
||||
self.metrics.duration_seconds.record(elapsed);
|
||||
|
||||
let message = match output.progress {
|
||||
PruneProgress::HasMoreData(_) => "Pruner interrupted and has more data to prune",
|
||||
PruneProgress::Finished => "Pruner finished",
|
||||
};
|
||||
|
||||
debug!(
|
||||
target: "pruner",
|
||||
%tip_block_number,
|
||||
?elapsed,
|
||||
?deleted_entries,
|
||||
?limiter,
|
||||
?output,
|
||||
?stats,
|
||||
"{message}",
|
||||
);
|
||||
output.debug_log(tip_block_number, deleted_entries, elapsed);
|
||||
|
||||
self.event_sender.notify(PrunerEvent::Finished { tip_block_number, elapsed, stats });
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ alloy-primitives.workspace = true
|
||||
derive_more.workspace = true
|
||||
strum = { workspace = true, features = ["derive"] }
|
||||
thiserror.workspace = true
|
||||
tracing.workspace = true
|
||||
|
||||
modular-bitfield = { workspace = true, optional = true }
|
||||
serde = { workspace = true, features = ["derive"], optional = true }
|
||||
@@ -42,8 +43,9 @@ std = [
|
||||
"derive_more/std",
|
||||
"serde?/std",
|
||||
"serde_json/std",
|
||||
"thiserror/std",
|
||||
"strum/std",
|
||||
"thiserror/std",
|
||||
"tracing/std",
|
||||
]
|
||||
test-utils = [
|
||||
"std",
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
use crate::{PruneCheckpoint, PruneMode, PruneSegment};
|
||||
use alloc::vec::Vec;
|
||||
use alloc::{format, string::ToString, vec::Vec};
|
||||
use alloy_primitives::{BlockNumber, TxNumber};
|
||||
use core::time::Duration;
|
||||
use derive_more::Display;
|
||||
use tracing::debug;
|
||||
|
||||
/// Pruner run output.
|
||||
#[derive(Debug)]
|
||||
@@ -18,6 +20,49 @@ impl From<PruneProgress> for PrunerOutput {
|
||||
}
|
||||
}
|
||||
|
||||
impl PrunerOutput {
|
||||
/// Logs a human-readable summary of the pruner run at DEBUG level.
|
||||
///
|
||||
/// Format: `"Pruner finished tip=24328929 deleted=10886 elapsed=148ms
|
||||
/// segments=AccountHistory[24318865, done] ..."`
|
||||
#[inline]
|
||||
pub fn debug_log(
|
||||
&self,
|
||||
tip_block_number: BlockNumber,
|
||||
deleted_entries: usize,
|
||||
elapsed: Duration,
|
||||
) {
|
||||
let message = match self.progress {
|
||||
PruneProgress::HasMoreData(_) => "Pruner interrupted, has more data",
|
||||
PruneProgress::Finished => "Pruner finished",
|
||||
};
|
||||
|
||||
let segments: Vec<_> = self
|
||||
.segments
|
||||
.iter()
|
||||
.filter(|(_, seg)| seg.pruned > 0)
|
||||
.map(|(segment, seg)| {
|
||||
let block = seg
|
||||
.checkpoint
|
||||
.and_then(|c| c.block_number)
|
||||
.map(|b| b.to_string())
|
||||
.unwrap_or_else(|| "?".to_string());
|
||||
let status = if seg.progress.is_finished() { "done" } else { "in_progress" };
|
||||
format!("{segment}[{block}, {status}]")
|
||||
})
|
||||
.collect();
|
||||
|
||||
debug!(
|
||||
target: "pruner",
|
||||
%tip_block_number,
|
||||
deleted_entries,
|
||||
?elapsed,
|
||||
segments = %segments.join(" "),
|
||||
"{message}",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Represents information of a pruner run for a segment.
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Display)]
|
||||
#[display("(table={segment}, pruned={pruned}, status={progress})")]
|
||||
|
||||
Reference in New Issue
Block a user