Skip to content

Releases: yermakovsa/rcpx

rcpx v0.5.0

Choose a tag to compare

@yermakovsa yermakovsa released this 28 Jun 11:58
c66a728

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.DeadlineExceeded outcomes toward cooldown when enabled
  • Keep deadline-exceeded requests from failing over within the same request
  • Keep context.Canceled non-counting
  • Update README documentation

rcpx v0.4.0

Choose a tag to compare

@yermakovsa yermakovsa released this 21 Jun 06:37
40664ce

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

Choose a tag to compare

@yermakovsa yermakovsa released this 14 Jun 14:22
c2138d4

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

Choose a tag to compare

@yermakovsa yermakovsa released this 31 May 15:31
520a3b8

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

Choose a tag to compare

@yermakovsa yermakovsa released this 11 Apr 16:46
4b1a30f

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.