Skip to content

Commit fcb6bcf

Browse files
authored
rpc: filter set filter value (#19491)
Set Default filter to 10000 (as Geth) the Algo to evict oldest data is already present
1 parent 21ec50d commit fcb6bcf

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

rpc/rpchelper/config.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
2122
type 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.
3234
var 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

Comments
 (0)