Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion crates/cli/commands/src/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ use reth_node_builder::NodeBuilder;
use reth_node_core::{
args::{
DatabaseArgs, DatadirArgs, DebugArgs, DevArgs, EngineArgs, EraArgs, MetricArgs,
NetworkArgs, PayloadBuilderArgs, PruningArgs, RpcServerArgs, StaticFilesArgs, TxPoolArgs,
NetworkArgs, PayloadBuilderArgs, PruningArgs, RocksDbArgs, RpcServerArgs, StaticFilesArgs,
TxPoolArgs,
},
node_config::NodeConfig,
version,
Expand Down Expand Up @@ -102,6 +103,10 @@ pub struct NodeCommand<C: ChainSpecParser, Ext: clap::Args + fmt::Debug = NoArgs
#[command(flatten)]
pub pruning: PruningArgs,

/// All `RocksDB` table routing arguments
#[command(flatten)]
pub rocksdb: RocksDbArgs,

/// Engine cli arguments
#[command(flatten, next_help_heading = "Engine")]
pub engine: EngineArgs,
Expand Down Expand Up @@ -166,6 +171,7 @@ where
db,
dev,
pruning,
rocksdb,
engine,
era,
static_files,
Expand All @@ -187,6 +193,7 @@ where
db,
dev,
pruning,
rocksdb,
engine,
era,
static_files,
Expand Down
32 changes: 20 additions & 12 deletions crates/node/builder/src/launch/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,9 @@ use reth_node_metrics::{
};
use reth_provider::{
providers::{NodeTypesForProvider, ProviderNodeTypes, RocksDBProvider, StaticFileProvider},
BlockHashReader, BlockNumReader, DatabaseProviderFactory, ProviderError, ProviderFactory,
ProviderResult, RocksDBProviderFactory, StageCheckpointReader, StaticFileProviderBuilder,
StaticFileProviderFactory,
BlockHashReader, BlockNumReader, DatabaseProviderFactory, MetadataProvider, ProviderError,
ProviderFactory, ProviderResult, RocksDBProviderFactory, StageCheckpointReader,
StaticFileProviderBuilder, StaticFileProviderFactory,
};
use reth_prune::{PruneModes, PrunerBuilder};
use reth_rpc_builder::config::RethRpcServerConfig;
Expand Down Expand Up @@ -676,19 +676,27 @@ where

/// Convenience function to [`Self::init_genesis`]
pub fn with_genesis(self) -> Result<Self, InitStorageError> {
init_genesis_with_settings(
self.provider_factory(),
self.node_config().static_files.to_settings(),
)?;
self.init_genesis()?;
Ok(self)
}

/// Write the genesis block and state if it has not already been written
/// Write the genesis block and state if it has not already been written.
///
/// After initialization, validates that any CLI `RocksDB` overrides match the persisted
/// storage settings. These settings are genesis-initialization-only and cannot be changed.
pub fn init_genesis(&self) -> Result<B256, InitStorageError> {
init_genesis_with_settings(
self.provider_factory(),
self.node_config().static_files.to_settings(),
)
let base_settings = self.node_config().static_files.to_settings();
let (settings, _) = self.node_config().rocksdb.apply_to_settings(base_settings);
let hash = init_genesis_with_settings(self.provider_factory(), settings)?;

// Validate CLI overrides match persisted settings
if let Some(persisted) = self.provider_factory().storage_settings()?
&& let Err(e) = self.node_config().rocksdb.validate_against_persisted(&persisted)
{
return Err(InitStorageError::RocksDbSettingsMismatch(e.to_string()));
}

Ok(hash)
}

/// Creates a new `WithMeteredProvider` container and attaches it to the
Expand Down
4 changes: 4 additions & 0 deletions crates/node/core/src/args/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,5 +80,9 @@ pub use era::{DefaultEraHost, EraArgs, EraSourceArgs};
mod static_files;
pub use static_files::{StaticFilesArgs, MINIMAL_BLOCKS_PER_FILE};

/// `RocksDbArgs` for configuring RocksDB table routing.
mod rocksdb;
pub use rocksdb::{RocksDbArgs, RocksDbSettingsMismatchError};

mod error;
pub mod types;
Loading
Loading