feat(rpc): Add flags to disable read tx timeout (#11856)

This commit is contained in:
Francis Li
2024-10-22 05:43:25 -07:00
committed by GitHub
parent df57aedba6
commit 60337d9614
19 changed files with 67 additions and 1 deletions

View File

@ -1,12 +1,14 @@
//! clap [Args](clap::Args) for database configuration
use std::time::Duration;
use crate::version::default_client_version;
use clap::{
builder::{PossibleValue, TypedValueParser},
error::ErrorKind,
Arg, Args, Command, Error,
};
use reth_db::ClientVersion;
use reth_db::{mdbx::MaxReadTransactionDuration, ClientVersion};
use reth_storage_errors::db::LogLevel;
/// Parameters for database configuration
@ -20,6 +22,9 @@ pub struct DatabaseArgs {
/// NFS volume.
#[arg(long = "db.exclusive")]
pub exclusive: Option<bool>,
/// Read transaction timeout in seconds, 0 means no timeout.
#[arg(long = "db.read-transaction-timeout")]
pub read_transaction_timeout: Option<u64>,
}
impl DatabaseArgs {
@ -33,9 +38,16 @@ impl DatabaseArgs {
&self,
client_version: ClientVersion,
) -> reth_db::mdbx::DatabaseArguments {
let max_read_transaction_duration = match self.read_transaction_timeout {
None => None, // if not specified, use default value
Some(0) => Some(MaxReadTransactionDuration::Unbounded), // if 0, disable timeout
Some(secs) => Some(MaxReadTransactionDuration::Set(Duration::from_secs(secs))),
};
reth_db::mdbx::DatabaseArguments::new(client_version)
.with_log_level(self.log_level)
.with_exclusive(self.exclusive)
.with_max_read_transaction_duration(max_read_transaction_duration)
}
}