Skip to main content

reth_node_core/args/
rpc_state_cache.rs

1use clap::Args;
2use reth_rpc_server_types::constants::cache::{
3    DEFAULT_BAL_CACHE_MAX_LEN, DEFAULT_BLOCK_CACHE_MAX_LEN, DEFAULT_CONCURRENT_DB_REQUESTS,
4    DEFAULT_HEADER_CACHE_MAX_LEN, DEFAULT_MAX_CACHED_TX_HASHES, DEFAULT_RECEIPT_CACHE_MAX_LEN,
5};
6
7/// Parameters to configure RPC state cache.
8#[derive(Debug, Clone, Args, PartialEq, Eq)]
9#[command(next_help_heading = "RPC State Cache")]
10pub struct RpcStateCacheArgs {
11    /// Max number of blocks in cache.
12    #[arg(
13        long = "rpc-cache.max-blocks",
14        default_value_t = DEFAULT_BLOCK_CACHE_MAX_LEN,
15    )]
16    pub max_blocks: u32,
17
18    /// Max number receipts in cache.
19    #[arg(
20        long = "rpc-cache.max-receipts",
21        default_value_t = DEFAULT_RECEIPT_CACHE_MAX_LEN,
22    )]
23    pub max_receipts: u32,
24
25    /// Legacy no-op retained for CLI compatibility.
26    #[arg(
27        long = "rpc-cache.max-headers",
28        alias = "rpc-cache.max-envs",
29        default_value_t = DEFAULT_HEADER_CACHE_MAX_LEN,
30        hide = true,
31    )]
32    pub max_headers: u32,
33
34    /// Max number of block access lists in cache.
35    #[arg(
36        long = "rpc-cache.max-bals",
37        default_value_t = DEFAULT_BAL_CACHE_MAX_LEN,
38    )]
39    pub max_bals: u32,
40
41    /// Max number of concurrent database requests.
42    #[arg(
43        long = "rpc-cache.max-concurrent-db-requests",
44        default_value_t = DEFAULT_CONCURRENT_DB_REQUESTS,
45    )]
46    pub max_concurrent_db_requests: usize,
47
48    /// Maximum number of transaction hashes to cache for transaction lookups.
49    #[arg(
50        long = "rpc-cache.max-cached-tx-hashes",
51        default_value_t = DEFAULT_MAX_CACHED_TX_HASHES,
52    )]
53    pub max_cached_tx_hashes: u32,
54}
55
56impl RpcStateCacheArgs {
57    /// Sets the Cache sizes to zero, effectively disabling caching.
58    pub const fn set_zero_lengths(&mut self) {
59        self.max_blocks = 0;
60        self.max_receipts = 0;
61        self.max_headers = 0;
62        self.max_bals = 0;
63    }
64}
65
66impl Default for RpcStateCacheArgs {
67    fn default() -> Self {
68        Self {
69            max_blocks: DEFAULT_BLOCK_CACHE_MAX_LEN,
70            max_receipts: DEFAULT_RECEIPT_CACHE_MAX_LEN,
71            max_headers: DEFAULT_HEADER_CACHE_MAX_LEN,
72            max_bals: DEFAULT_BAL_CACHE_MAX_LEN,
73            max_concurrent_db_requests: DEFAULT_CONCURRENT_DB_REQUESTS,
74            max_cached_tx_hashes: DEFAULT_MAX_CACHED_TX_HASHES,
75        }
76    }
77}