mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
refactor: don't reference StaticFileProvider in static_file::Segment (#12558)
This commit is contained in:
@ -2,10 +2,7 @@ use crate::segments::Segment;
|
||||
use alloy_primitives::BlockNumber;
|
||||
use reth_db::tables;
|
||||
use reth_db_api::{cursor::DbCursorRO, transaction::DbTx};
|
||||
use reth_provider::{
|
||||
providers::{StaticFileProvider, StaticFileWriter},
|
||||
DBProvider,
|
||||
};
|
||||
use reth_provider::{providers::StaticFileWriter, DBProvider, StaticFileProviderFactory};
|
||||
use reth_static_file_types::StaticFileSegment;
|
||||
use reth_storage_errors::provider::ProviderResult;
|
||||
use std::ops::RangeInclusive;
|
||||
@ -14,7 +11,7 @@ use std::ops::RangeInclusive;
|
||||
#[derive(Debug, Default)]
|
||||
pub struct Headers;
|
||||
|
||||
impl<Provider: DBProvider> Segment<Provider> for Headers {
|
||||
impl<Provider: StaticFileProviderFactory + DBProvider> Segment<Provider> for Headers {
|
||||
fn segment(&self) -> StaticFileSegment {
|
||||
StaticFileSegment::Headers
|
||||
}
|
||||
@ -22,9 +19,9 @@ impl<Provider: DBProvider> Segment<Provider> for Headers {
|
||||
fn copy_to_static_files(
|
||||
&self,
|
||||
provider: Provider,
|
||||
static_file_provider: StaticFileProvider,
|
||||
block_range: RangeInclusive<BlockNumber>,
|
||||
) -> ProviderResult<()> {
|
||||
let static_file_provider = provider.static_file_provider();
|
||||
let mut static_file_writer =
|
||||
static_file_provider.get_writer(*block_range.start(), StaticFileSegment::Headers)?;
|
||||
|
||||
|
||||
@ -10,22 +10,22 @@ mod receipts;
|
||||
pub use receipts::Receipts;
|
||||
|
||||
use alloy_primitives::BlockNumber;
|
||||
use reth_provider::providers::StaticFileProvider;
|
||||
use reth_provider::StaticFileProviderFactory;
|
||||
use reth_static_file_types::StaticFileSegment;
|
||||
use reth_storage_errors::provider::ProviderResult;
|
||||
use std::ops::RangeInclusive;
|
||||
|
||||
/// A segment represents moving some portion of the data to static files.
|
||||
pub trait Segment<Provider>: Send + Sync {
|
||||
pub trait Segment<Provider: StaticFileProviderFactory>: Send + Sync {
|
||||
/// Returns the [`StaticFileSegment`].
|
||||
fn segment(&self) -> StaticFileSegment;
|
||||
|
||||
/// Move data to static files for the provided block range. [`StaticFileProvider`] will handle
|
||||
/// Move data to static files for the provided block range.
|
||||
/// [`StaticFileProvider`](reth_provider::providers::StaticFileProvider) will handle
|
||||
/// the management of and writing to files.
|
||||
fn copy_to_static_files(
|
||||
&self,
|
||||
provider: Provider,
|
||||
static_file_provider: StaticFileProvider,
|
||||
block_range: RangeInclusive<BlockNumber>,
|
||||
) -> ProviderResult<()>;
|
||||
}
|
||||
|
||||
@ -3,8 +3,7 @@ use alloy_primitives::BlockNumber;
|
||||
use reth_db::tables;
|
||||
use reth_db_api::{cursor::DbCursorRO, transaction::DbTx};
|
||||
use reth_provider::{
|
||||
providers::{StaticFileProvider, StaticFileWriter},
|
||||
BlockReader, DBProvider,
|
||||
providers::StaticFileWriter, BlockReader, DBProvider, StaticFileProviderFactory,
|
||||
};
|
||||
use reth_static_file_types::StaticFileSegment;
|
||||
use reth_storage_errors::provider::{ProviderError, ProviderResult};
|
||||
@ -14,7 +13,9 @@ use std::ops::RangeInclusive;
|
||||
#[derive(Debug, Default)]
|
||||
pub struct Receipts;
|
||||
|
||||
impl<Provider: DBProvider + BlockReader> Segment<Provider> for Receipts {
|
||||
impl<Provider: StaticFileProviderFactory + DBProvider + BlockReader> Segment<Provider>
|
||||
for Receipts
|
||||
{
|
||||
fn segment(&self) -> StaticFileSegment {
|
||||
StaticFileSegment::Receipts
|
||||
}
|
||||
@ -22,9 +23,9 @@ impl<Provider: DBProvider + BlockReader> Segment<Provider> for Receipts {
|
||||
fn copy_to_static_files(
|
||||
&self,
|
||||
provider: Provider,
|
||||
static_file_provider: StaticFileProvider,
|
||||
block_range: RangeInclusive<BlockNumber>,
|
||||
) -> ProviderResult<()> {
|
||||
let static_file_provider = provider.static_file_provider();
|
||||
let mut static_file_writer =
|
||||
static_file_provider.get_writer(*block_range.start(), StaticFileSegment::Receipts)?;
|
||||
|
||||
|
||||
@ -3,8 +3,7 @@ use alloy_primitives::BlockNumber;
|
||||
use reth_db::tables;
|
||||
use reth_db_api::{cursor::DbCursorRO, transaction::DbTx};
|
||||
use reth_provider::{
|
||||
providers::{StaticFileProvider, StaticFileWriter},
|
||||
BlockReader, DBProvider,
|
||||
providers::StaticFileWriter, BlockReader, DBProvider, StaticFileProviderFactory,
|
||||
};
|
||||
use reth_static_file_types::StaticFileSegment;
|
||||
use reth_storage_errors::provider::{ProviderError, ProviderResult};
|
||||
@ -14,7 +13,9 @@ use std::ops::RangeInclusive;
|
||||
#[derive(Debug, Default)]
|
||||
pub struct Transactions;
|
||||
|
||||
impl<Provider: DBProvider + BlockReader> Segment<Provider> for Transactions {
|
||||
impl<Provider: StaticFileProviderFactory + DBProvider + BlockReader> Segment<Provider>
|
||||
for Transactions
|
||||
{
|
||||
fn segment(&self) -> StaticFileSegment {
|
||||
StaticFileSegment::Transactions
|
||||
}
|
||||
@ -24,9 +25,9 @@ impl<Provider: DBProvider + BlockReader> Segment<Provider> for Transactions {
|
||||
fn copy_to_static_files(
|
||||
&self,
|
||||
provider: Provider,
|
||||
static_file_provider: StaticFileProvider,
|
||||
block_range: RangeInclusive<BlockNumber>,
|
||||
) -> ProviderResult<()> {
|
||||
let static_file_provider = provider.static_file_provider();
|
||||
let mut static_file_writer = static_file_provider
|
||||
.get_writer(*block_range.start(), StaticFileSegment::Transactions)?;
|
||||
|
||||
|
||||
@ -85,7 +85,9 @@ where
|
||||
impl<Provider> StaticFileProducerInner<Provider>
|
||||
where
|
||||
Provider: StaticFileProviderFactory
|
||||
+ DatabaseProviderFactory<Provider: StageCheckpointReader + BlockReader>,
|
||||
+ DatabaseProviderFactory<
|
||||
Provider: StaticFileProviderFactory + StageCheckpointReader + BlockReader,
|
||||
>,
|
||||
{
|
||||
/// Listen for events on the `static_file_producer`.
|
||||
pub fn events(&self) -> EventStream<StaticFileProducerEvent> {
|
||||
@ -136,7 +138,7 @@ where
|
||||
// Create a new database transaction on every segment to prevent long-lived read-only
|
||||
// transactions
|
||||
let provider = self.provider.database_provider_ro()?.disable_long_read_transaction_safety();
|
||||
segment.copy_to_static_files(provider, self.provider.static_file_provider(), block_range.clone())?;
|
||||
segment.copy_to_static_files(provider, block_range.clone())?;
|
||||
|
||||
let elapsed = start.elapsed(); // TODO(alexey): track in metrics
|
||||
debug!(target: "static_file", segment = %segment.segment(), ?block_range, ?elapsed, "Finished StaticFileProducer segment");
|
||||
|
||||
Reference in New Issue
Block a user