reth_rpc_eth_types/cache/
config.rs1use serde::{Deserialize, Serialize};
4use std::time::Duration;
5
6use reth_rpc_server_types::constants::cache::{
7 DEFAULT_BAL_CACHE_MAX_BYTES, DEFAULT_BAL_CACHE_MAX_LEN, DEFAULT_BLOCK_CACHE_MAX_BYTES,
8 DEFAULT_BLOCK_CACHE_MAX_LEN, DEFAULT_CACHE_IDLE_TIMEOUT, DEFAULT_CONCURRENT_DB_REQUESTS,
9 DEFAULT_MAX_CACHED_TX_HASHES, DEFAULT_RECEIPT_CACHE_MAX_BYTES, DEFAULT_RECEIPT_CACHE_MAX_LEN,
10};
11
12#[derive(Debug, Clone, Copy, Eq, PartialEq, Serialize, Deserialize)]
17#[serde(default, rename_all = "camelCase")]
18pub struct EthStateCacheConfig {
19 pub max_blocks: u32,
23 pub max_receipts: u32,
27 pub max_bals: u32,
31 pub max_blocks_bytes: usize,
35 pub max_receipts_bytes: usize,
39 pub max_bals_bytes: usize,
43 pub idle_timeout: Duration,
49 #[serde(default)]
51 pub cache_computed_bals: bool,
52 #[serde(default)]
57 pub prewarm_bals: Option<usize>,
58 pub max_concurrent_db_requests: usize,
62 pub max_cached_tx_hashes: u32,
64}
65
66impl Default for EthStateCacheConfig {
67 fn default() -> Self {
68 Self {
69 max_blocks: DEFAULT_BLOCK_CACHE_MAX_LEN,
70 max_receipts: DEFAULT_RECEIPT_CACHE_MAX_LEN,
71 max_bals: DEFAULT_BAL_CACHE_MAX_LEN,
72 max_blocks_bytes: DEFAULT_BLOCK_CACHE_MAX_BYTES,
73 max_receipts_bytes: DEFAULT_RECEIPT_CACHE_MAX_BYTES,
74 max_bals_bytes: DEFAULT_BAL_CACHE_MAX_BYTES,
75 idle_timeout: DEFAULT_CACHE_IDLE_TIMEOUT,
76 cache_computed_bals: false,
77 prewarm_bals: None,
78 max_concurrent_db_requests: DEFAULT_CONCURRENT_DB_REQUESTS,
79 max_cached_tx_hashes: DEFAULT_MAX_CACHED_TX_HASHES,
80 }
81 }
82}
83
84#[cfg(test)]
85mod tests {
86 use super::*;
87
88 #[test]
89 fn legacy_cache_config_uses_default_limits() {
90 let config: EthStateCacheConfig = serde_json::from_value(serde_json::json!({
91 "maxBlocks": 1000,
92 "maxReceipts": 500,
93 "maxBals": 1000,
94 "maxConcurrentDbRequests": 512,
95 "maxCachedTxHashes": 100000
96 }))
97 .unwrap();
98
99 assert_eq!(config, EthStateCacheConfig::default());
100 assert_eq!(config.max_blocks_bytes, DEFAULT_BLOCK_CACHE_MAX_BYTES);
101 assert_eq!(config.max_receipts_bytes, DEFAULT_RECEIPT_CACHE_MAX_BYTES);
102 assert_eq!(config.max_bals_bytes, DEFAULT_BAL_CACHE_MAX_BYTES);
103 assert_eq!(config.idle_timeout, DEFAULT_CACHE_IDLE_TIMEOUT);
104 }
105}