From 9471be5116040d150aaa7f994e8ae5baa0407fd1 Mon Sep 17 00:00:00 2001 From: Roshan <48975233+pythonberg1997@users.noreply.github.com> Date: Tue, 21 Oct 2025 16:52:30 +0800 Subject: [PATCH 1/2] chore: update example.config.toml (#16) --- example.config.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/example.config.toml b/example.config.toml index 2463d8d..c8b246c 100644 --- a/example.config.toml +++ b/example.config.toml @@ -49,7 +49,7 @@ max_latency_threshold = "10s" # Maximum latency accepted to serve requests before degraded, default 5s max_degraded_latency_threshold = "5s" # Maximum error rate accepted to serve requests, default 0.5 (i.e. 50%) -max_error_rate_threshold = 0.3 +max_error_rate_threshold = 0.5 [backends] # A map of backends by name. @@ -126,6 +126,7 @@ eth_getBalance = "query" eth_getBlockByHash = "query" eth_getBlockByNumber = "query" eth_getCode = "query" +eth_getHeaderByNumber = "query" eth_getTransactionCount = "query" eth_getTransactionReceipt = "query" eth_maxPriorityFeePerGas = "query" From f0ff84d1f111ae7811cc9bd44904d54929cdf15f Mon Sep 17 00:00:00 2001 From: Roshan <48975233+pythonberg1997@users.noreply.github.com> Date: Wed, 29 Oct 2025 15:06:26 +0800 Subject: [PATCH 2/2] chore: update MethodOverrides lims (#17) --- server.go | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/server.go b/server.go index d9e8b64..6c5da02 100644 --- a/server.go +++ b/server.go @@ -333,7 +333,12 @@ func (s *Server) HandleRPC(w http.ResponseWriter, r *http.Request) { if method == "" { lim = s.mainLim } else { + // Check if there's a method-specific override lim = s.overrideLims[method] + // If no override exists, fallback to base rate limiter + if lim == nil { + lim = s.mainLim + } } if lim == nil { @@ -510,23 +515,10 @@ func (s *Server) handleBatchRPC(ctx context.Context, reqs []json.RawMessage, isL continue } - // Take base rate limit first - if isLimited("") { - log.Debug( - "rate limited individual RPC in a batch request", - "source", "rpc", - "req_id", parsedReq.ID, - "method", parsedReq.Method, - ) - RecordRPCError(ctx, BackendProxyd, parsedReq.Method, ErrOverRateLimit) - responses[i] = NewRPCErrorRes(parsedReq.ID, ErrOverRateLimit) - continue - } - - // Take rate limit for specific methods. - if _, ok := s.overrideLims[parsedReq.Method]; ok && isLimited(parsedReq.Method) { + // Check rate limit (method override if exists, otherwise base rate) + if isLimited(parsedReq.Method) { log.Debug( - "rate limited specific RPC", + "rate limited RPC", "source", "rpc", "req_id", GetReqID(ctx), "method", parsedReq.Method,