Releases: yermakovsa/rcpx
Release list
rcpx v0.5.0
Adds an opt-in cooldown setting for request deadline failures.
This release adds CooldownConfig.CountDeadlineExceeded. When enabled, an attempted context.DeadlineExceeded is recorded as a cooldown failure for that upstream, so repeated deadline failures can cause future requests to skip it while it is cooling down.
The current request still returns immediately and does not fail over after its context deadline is exceeded. context.Canceled does not count, and default behavior is unchanged.
Changes
- Add
CooldownConfig.CountDeadlineExceeded - Count attempted
context.DeadlineExceededoutcomes toward cooldown when enabled - Keep deadline-exceeded requests from failing over within the same request
- Keep
context.Cancelednon-counting - Update README documentation
rcpx v0.4.0
Adds attempt observation for upstream visibility.
This release adds Config.OnAttempt, an optional hook that is called once for each attempted upstream. It can be used for logging or metrics, including recording which upstream handled a successful request.
The hook receives AttemptInfo with the attempt number, upstream URL, best-effort JSON-RPC method info, status code, error, and whether the attempt was final.
OnAttempt does not affect retry, failover, cooldown, or non-idempotent safety behavior.
Changes
- Add
Config.OnAttempt - Add
AttemptInfo - Report successful, failed, failover, policy-stopped, and non-idempotent-blocked attempts
- Update README documentation
- Document synchronous callback behavior and unredacted upstream URLs
rcpx v0.3.0
Adds configurable non-idempotent JSON-RPC methods.
This release adds Config.AdditionalNonIdempotentMethods, which lets callers mark extra JSON-RPC method names as unsafe to replay.
Configured methods are additive. The built-in non-idempotent methods remain unchanged: eth_sendTransaction and eth_sendRawTransaction.
AllowNonIdempotent applies to both built-in and configured methods.
Changes
- Add
Config.AdditionalNonIdempotentMethods - Treat configured method names as non-idempotent in addition to the built-ins
- Validate configured method names during transport creation
- Preserve conservative batch behavior
- Update README documentation
rcpx v0.2.0
Adds configurable retryable HTTP statuses.
This release adds Config.AdditionalRetryableStatusCodes, which lets callers opt into retrying extra HTTP status codes such as 500.
Configured statuses are additive. The default retryable set remains unchanged: 429, 502, 503, and 504.
Changes
- Add
Config.AdditionalRetryableStatusCodes - Treat configured status codes as retryable in addition to the defaults
- Validate configured status codes during transport creation
- Update README documentation
rcpx v0.1.0
First public release of rcpx.
rcpx is a Go HTTP JSON-RPC failover transport designed for go-ethereum clients.
It plugs into http.Client as a custom http.RoundTripper and fails over
eligible requests across upstreams in priority order.
Highlights:
- Sequential upstream failover
- Configurable retry policy
- Cooldown for unhealthy upstreams
- Default protection against failover of non-idempotent write methods
- Runnable examples for go-ethereum integration and error inspection
This is the first public version of rcpx, and the API may continue to evolve.