@@ -18,21 +18,23 @@ package rpchelper
1818
1919// FiltersConfig defines the configuration settings for RPC subscription filters.
2020// Each field represents a limit on the number of respective items that can be stored per subscription.
21+ // A value of 0 disables the limit (no cap). Oldest items are evicted first (FIFO) when the limit is reached.
2122type FiltersConfig struct {
22- RpcSubscriptionFiltersMaxLogs int // Maximum number of logs to store per subscription. Default: 0 (no limit)
23- RpcSubscriptionFiltersMaxHeaders int // Maximum number of block headers to store per subscription. Default: 0 (no limit)
24- RpcSubscriptionFiltersMaxTxs int // Maximum number of transactions to store per subscription. Default: 0 (no limit)
23+ RpcSubscriptionFiltersMaxLogs int // Maximum number of logs to store per subscription. Default: 10000
24+ RpcSubscriptionFiltersMaxHeaders int // Maximum number of block headers to store per subscription. Default: 10000
25+ RpcSubscriptionFiltersMaxTxs int // Maximum number of transactions to store per subscription. Default: 10000
2526 RpcSubscriptionFiltersMaxAddresses int // Maximum number of addresses per subscription to filter logs by. Default: 0 (no limit)
2627 RpcSubscriptionFiltersMaxTopics int // Maximum number of topics per subscription to filter logs by. Default: 0 (no limit)
2728}
2829
2930// DefaultFiltersConfig defines the default settings for filter configurations.
30- // These default values set no limits on the number of logs, block headers, transactions,
31- // addresses, or topics that can be stored per subscription.
31+ // Logs, headers and transactions are capped at 10000 items per subscription to prevent
32+ // unbounded memory growth when polling clients stop calling eth_getFilterChanges.
33+ // Oldest items are evicted first (FIFO) when the cap is reached.
3234var DefaultFiltersConfig = FiltersConfig {
33- RpcSubscriptionFiltersMaxLogs : 0 , // No limit on the number of logs per subscription
34- RpcSubscriptionFiltersMaxHeaders : 0 , // No limit on the number of block headers per subscription
35- RpcSubscriptionFiltersMaxTxs : 0 , // No limit on the number of transactions per subscription
36- RpcSubscriptionFiltersMaxAddresses : 0 , // No limit on the number of addresses per subscription to filter logs by
37- RpcSubscriptionFiltersMaxTopics : 0 , // No limit on the number of topics per subscription to filter logs by
35+ RpcSubscriptionFiltersMaxLogs : 10000 ,
36+ RpcSubscriptionFiltersMaxHeaders : 10000 ,
37+ RpcSubscriptionFiltersMaxTxs : 10000 ,
38+ RpcSubscriptionFiltersMaxAddresses : 0 , // no limit
39+ RpcSubscriptionFiltersMaxTopics : 0 , // no limit
3840}
0 commit comments