feat(prune): add static file pruning support for sender recovery (#21598)

This commit is contained in:
Georgios Konstantopoulos
2026-01-29 17:09:38 -08:00
committed by GitHub
parent 327a1a6681
commit 9de1f0905e

View File

@@ -1,14 +1,18 @@
use crate::{
db_ext::DbTxPruneExt,
segments::{PruneInput, Segment},
segments::{self, PruneInput, Segment},
PrunerError,
};
use reth_db_api::{tables, transaction::DbTxMut};
use reth_provider::{BlockReader, DBProvider, TransactionsProvider};
use reth_provider::{
BlockReader, DBProvider, EitherWriterDestination, StaticFileProviderFactory,
StorageSettingsCache, TransactionsProvider,
};
use reth_prune_types::{
PruneMode, PruneProgress, PrunePurpose, PruneSegment, SegmentOutput, SegmentOutputCheckpoint,
};
use tracing::{instrument, trace};
use reth_static_file_types::StaticFileSegment;
use tracing::{debug, instrument, trace};
#[derive(Debug)]
pub struct SenderRecovery {
@@ -23,7 +27,11 @@ impl SenderRecovery {
impl<Provider> Segment<Provider> for SenderRecovery
where
Provider: DBProvider<Tx: DbTxMut> + TransactionsProvider + BlockReader,
Provider: DBProvider<Tx: DbTxMut>
+ TransactionsProvider
+ BlockReader
+ StorageSettingsCache
+ StaticFileProviderFactory,
{
fn segment(&self) -> PruneSegment {
PruneSegment::SenderRecovery
@@ -39,6 +47,16 @@ where
#[instrument(target = "pruner", skip(self, provider), ret(level = "trace"))]
fn prune(&self, provider: &Provider, input: PruneInput) -> Result<SegmentOutput, PrunerError> {
if EitherWriterDestination::senders(provider).is_static_file() {
debug!(target: "pruner", "Pruning transaction senders from static files.");
return segments::prune_static_files(
provider,
input,
StaticFileSegment::TransactionSenders,
)
}
debug!(target: "pruner", "Pruning transaction senders from database.");
let tx_range = match input.get_next_tx_num_range(provider)? {
Some(range) => range,
None => {