Skip to content

build(deps): bump github.com/jhonsferg/relay from 0.1.1 to 0.1.24 in /ext/metrics#163

Open
dependabot[bot] wants to merge 79 commits intomasterfrom
dependabot/go_modules/ext/metrics/github.com/jhonsferg/relay-0.1.24
Open

build(deps): bump github.com/jhonsferg/relay from 0.1.1 to 0.1.24 in /ext/metrics#163
dependabot[bot] wants to merge 79 commits intomasterfrom
dependabot/go_modules/ext/metrics/github.com/jhonsferg/relay-0.1.24

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot bot commented on behalf of github Apr 6, 2026

Bumps github.com/jhonsferg/relay from 0.1.1 to 0.1.24.

Release notes

Sourced from github.com/jhonsferg/relay's releases.

v0.1.10 - WithErrorDecoder + lazy context allocation

What's changed

New feature: WithErrorDecoder

Translates HTTP error status codes into typed Go errors (OpenFeign parity).

var ErrNotFound = errors.New("not found")
client := relay.New(
relay.WithErrorDecoder(func(status int, body []byte) error {
if status == http.StatusNotFound {
return ErrNotFound
}
return nil  // nil = return response normally
}),
)

Behaviour:

  • Called only when status >= 400
  • Runs after all OnAfterResponse hooks
  • Returns non-nil error: response is pooled, Execute returns (nil, err)
  • Returns nil: response returned normally (opt-out per status code)
  • Default nil decoder: no behaviour change

Refactor: lazy context allocation

Redirect counter + httptrace context deferred until after circuit breaker check. When CB rejects a request, 11 allocations are avoided. Happy path unchanged at 104 allocs/op.

Full changelog: v0.1.9...v0.1.10

v0.1.9

What's changed

Performance

  • dns_cache.go: Pre-join host:port in cache entries at DNS resolution time, eliminating net.JoinHostPort from the hot dial path. Validated with benchstat (count=6, p=0.002): -10.00% allocs/op, -7.24% ns/op

Refactors

  • cache.go: Lazy-init expired map in evict() - avoids an unconditional heap allocation on every eviction cycle when no entries have expired

Tests

  • Added BenchmarkDNSCache_WarmDialPath to validate the DNS cache improvement
  • Added hotspot micro-benchmarks for PathBuilder, cache-hit replay and stream-open paths

Phase 2b audit findings

All 19 previously untouched source files profiled via pprof + escape analysis. Only dns_cache.go had a relay-controlled optimisation exceeding the 5% threshold. All other files are either dominated by net/http internals or the compiler already eliminates the allocation.

... (truncated)

Changelog

Sourced from github.com/jhonsferg/relay's changelog.

Changelog

All notable changes to relay will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

[Unreleased]

[0.2.1] - 2026-03-30 (ext/tracing, ext/metrics)

Fixed

  • ext/tracing: updated require github.com/jhonsferg/relay to v0.1.1 - fixes broken dependency chain from proxy-cached v0.2.0 that referenced relay@v0.1.0
  • ext/metrics: updated require github.com/jhonsferg/relay to v0.1.1 - same fix as above
Commits
  • ab8966b Merge pull request #127 from jhonsferg/docs/readme-revamp
  • ee84a99 docs: revamp README and add pkg.go.dev badge to docs index
  • e430b5a Merge pull request #126 from jhonsferg/fix/badges-dirty-work-sum
  • 8086569 fix(ci): discard go.work.sum changes before switching to badges branch
  • 9fb8219 Merge pull request #125 from jhonsferg/chore/pin-go124-compatible-deps
  • c94401a chore: bump x/net to v0.50.0 and x/sync to v0.19.0 (latest Go 1.24-compatible)
  • 671e0b0 Merge pull request #124 from jhonsferg/docs/vcr-extension
  • 4327a50 docs: add VCR cassette extension guide and nav entry (I1)
  • 6badb3a Merge pull request #123 from jhonsferg/docs/H1-H4-I2-features
  • d77a802 Merge pull request #122 from jhonsferg/feat/I1-vcr-ext
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

dependabot bot and others added 30 commits April 4, 2026 16:27
…zap (#75)

Dependabot couldn't find the original pull request head commit, 5f3505e.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#74)

Dependabot couldn't find the original pull request head commit, 241cb40.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ext/sigv4 (#72)

Dependabot couldn't find the original pull request head commit, 21004cb.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…cing (#70)

Dependabot couldn't find the original pull request head commit, 7dcb2d4.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…try (#68)

Dependabot couldn't find the original pull request head commit, 1ed7b99.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…try (#67)

Dependabot couldn't find the original pull request head commit, 02a404a.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…elimit/distributed (#65)

Dependabot couldn't find the original pull request head commit, 900d165.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ext/ratelimit/distributed (#64)

Dependabot couldn't find the original pull request head commit, e7c12bb.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…metheus (#63)

Dependabot couldn't find the original pull request head commit, 92924fc.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…22.5 in /ext/openapi (#62)

Dependabot couldn't find the original pull request head commit, 7800e09.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…is (#61)

Dependabot couldn't find the original pull request head commit, 113d09e.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
#60)

Dependabot couldn't find the original pull request head commit, d9889a2.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Consolidates 30 Dependabot PRs. All deps pinned to last Go 1.24-compatible versions.
…7.0 in /examples (#21)

Dependabot couldn't find the original pull request head commit, c564cef.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github.com/alicebob/miniredis/v2](https://github.com/alicebob/miniredis) from 2.33.0 to 2.37.0.
- [Release notes](https://github.com/alicebob/miniredis/releases)
- [Changelog](https://github.com/alicebob/miniredis/blob/master/CHANGELOG.md)
- [Commits](alicebob/miniredis@v2.33.0...v2.37.0)

---
updated-dependencies:
- dependency-name: github.com/alicebob/miniredis/v2
  dependency-version: 2.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Dependabot couldn't find the original pull request head commit, 5452448.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github.com/alicebob/miniredis/v2](https://github.com/alicebob/miniredis) from 2.33.0 to 2.37.0.
- [Release notes](https://github.com/alicebob/miniredis/releases)
- [Changelog](https://github.com/alicebob/miniredis/blob/master/CHANGELOG.md)
- [Commits](alicebob/miniredis@v2.33.0...v2.37.0)

---
updated-dependencies:
- dependency-name: github.com/alicebob/miniredis/v2
  dependency-version: 2.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ext/logrus (#12)

Dependabot couldn't find the original pull request head commit, 80bce5f.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [github.com/getsentry/sentry-go](https://github.com/getsentry/sentry-go) from 0.28.1 to 0.44.1.
- [Release notes](https://github.com/getsentry/sentry-go/releases)
- [Changelog](https://github.com/getsentry/sentry-go/blob/master/CHANGELOG.md)
- [Commits](getsentry/sentry-go@v0.28.1...v0.44.1)

---
updated-dependencies:
- dependency-name: github.com/getsentry/sentry-go
  dependency-version: 0.44.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Dependabot couldn't find the original pull request head commit, d4a6870.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Dependabot couldn't find the original pull request head commit, f078b41.

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…44.1 (#103)

sentry-go v0.44.1 added FlushWithContext(context.Context) bool and
Close() to the Transport interface. Update captureTransport test mock
to implement all required methods.
- Add BeforeRetryHookFunc, BeforeRedirectHookFunc, OnErrorHookFunc types
  for improved API discoverability over the generic OnBeforeRequest/OnAfterResponse
- Add WithBeforeRetryHook: called before each retry sleep, receives ctx + Request
- Add WithBeforeRedirectHook: called before each redirect, can abort chain
- Add WithOnErrorHook: called when Execute returns a non-nil error (logging/metrics)
- Add WithAutoIdempotencyOnSafeRetries: injects X-Idempotency-Key only for
  GET, HEAD, PUT, OPTIONS, TRACE (RFC 9110 safe methods); POST/PATCH/DELETE skipped
- Add IsRetryableError, IsTimeout, IsCircuitOpen convenience helpers in classification
- All hooks are composable: multiple calls append in registration order
- BeforeRetryHooks use a thread-safe per-Execute retrier copy (no global mutation)
…chain

E4 - Generic response coercion:
- Add DecodeJSON[T](resp) (T, error): typed JSON unmarshal without pre-allocated target
- Add DecodeXML[T](resp) (T, error): typed XML unmarshal
- Add DecodeAs[T](resp) (T, error): typed content-type-aware decode (JSON/XML/custom)
- Add Response.Text() string: readable alias for String()
- Add Response.Bytes() []byte: copy of Body() for API discoverability

E5 - Redirect chain tracking:
- Add RedirectInfo{From, To, StatusCode} type
- Add Response.RedirectChain() []RedirectInfo: ordered list of redirect hops
- Captures status code via req.Response in CheckRedirect policy
- Uses context-pointer pattern (zero-alloc on no-redirect paths)
- RedirectCount field continues to work unchanged
…y-errors

feat(hooks): semantic hook types, safe-method idempotency, error helpers
F1 - granular transport timeouts: DialTimeout, TLSHandshakeTimeout,
     ResponseHeaderTimeout, IdleConnTimeout, ExpectContinueTimeout
F2 - bulkhead isolation: MaxConcurrentRequests with semaphore channel
F3 - pagination helper: Paginate/PaginateWith with RFC 5988 Link header
F4 - content negotiation: DefaultAccept config, WithAccept, ContentType()
F5 - request hedging: HedgeAfter/HedgeMaxAttempts with first-wins race
…d-hedging

feat: Phase F - granular timeouts, bulkhead, pagination, content negotiation, hedging
Add comprehensive documentation for all Phase E and F features:
- Semantic hooks (BeforeRetry, BeforeRedirect, OnError)
- Auto idempotency on safe method retries
- Error classification helpers (IsRetryableError, IsTimeout, etc.)
- Generic response coercion (DecodeJSON[T], DecodeXML[T], DecodeAs[T])
- Redirect chain tracking (RedirectChain(), RedirectInfo)
- Granular transport timeouts (Connect, TLS, Read, Write, DNS)
- Bulkhead isolation (WithMaxConcurrentRequests)
- Pagination helper (Paginate, PaginateWith, PageFunc)
- Content negotiation (WithContentTypeEncoder/Decoder, DefaultAccept)
- Request hedging (WithHedging, HedgeAfter, HedgeMaxAttempts)
docs: Phase E and F feature documentation
G1: first-class WebSocket API via Client.ExecuteWebSocket and WSConn
G2: ext/http3 module with QUIC transport via quic-go
G3: dynamic TLS cert reloading via CertWatcher with atomic hot-reload
G4: custom transport adapters via WithTransportAdapter and schemeRouter
jhonsferg and others added 23 commits April 5, 2026 16:25
feat(core): client-side load balancer with round-robin and random strategies
feat(core): add adaptive timeout based on observed latency percentiles (H4)
Implement feature I1 - VCR (Video Cassette Recorder) extension for HTTP
interaction recording and playback in tests.

Features:
- Record mode: capture real HTTP requests/responses to cassette file
- Playback mode: replay interactions without hitting real server
- Passthrough mode: disable VCR for testing
- Sequential matching by method and URL
- JSON cassette format

The module provides a relay transport middleware that integrates seamlessly
with the relay HTTP client library.

All tests pass with race detector enabled.
feat: VCR cassette recording/playback extension (I1)
docs: add feature guides for H1-H4 and extensions H5/I2
docs: add VCR cassette extension guide (I1)
chore: pin x/net and x/sync to latest Go 1.24-compatible versions
fix(ci): discard go.work.sum changes before switching to badges branch
- Slim README from 1533 to 163 lines, point users to GitHub Pages docs
- Add pkg.go.dev reference badge and nav link in README
- Add pkg.go.dev badge to docs/index.md
- Keep all CI/coverage/release badges
docs: revamp README and add pkg.go.dev links
…oll helper

- Add Priority type (Low/Normal/High/Critical) with heap-based priorityQueue
- WithPriorityQueue() client option integrates with bulkhead semaphore so higher-priority requests proceed first when concurrency is constrained
- Add enqueueDirect() (internal, test-only) to pre-populate heap without blocking
- ExecuteSSEWithReconnect: reconnect loop with configurable delay, LastEventID tracking, event-type filtering
- ExecuteSSEStream: channel-based SSE consumer for range-over-channel style usage
- ExecuteLongPoll: single-request long-polling helper with timeout and result decoding
- Fix: TestExecuteSSEStream_BasicUsage used bare 'break' inside select-for which only exits the select; use labelled break instead
- Fix: BenchmarkPriorityQueue{Enqueue,Dequeue} used EnqueueAndWait (blocking); replaced with enqueueDirect

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
feat(priority): request priority queue, SSE reconnect and long-poll helper
…favour of ext/slog

Both packages will continue to work and will not be removed before v1.0.
New applications should use ext/slog which requires only the standard library.

- Add deprecation note to package godoc in logrus.go and zerolog.go
- Add README.md to each module explaining the migration path to ext/slog

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
deprecate(logging): mark ext/logrus and ext/zerolog as deprecated in favour of ext/slog
- features/priority-queue.md: WithPriorityQueue(), Priority constants,
  WithPriority() per-request, bulkhead integration and context cancellation
- features/enhanced-sse.md: ExecuteSSEWithReconnect with SSEClientConfig
  (reconnect delay, event-type filtering), ExecuteSSEStream channel API
- features/long-polling.md: ExecuteLongPoll with ETag-based change detection,
  graceful shutdown, timeout guidance and comparison table
- mkdocs.yml: add all three pages to the Features nav section

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
docs: priority queue, enhanced SSE and long-poll
Bumps [github.com/jhonsferg/relay](https://github.com/jhonsferg/relay) from 0.1.1 to 0.1.24.
- [Release notes](https://github.com/jhonsferg/relay/releases)
- [Changelog](https://github.com/jhonsferg/relay/blob/master/CHANGELOG.md)
- [Commits](v0.1.1...v0.1.24)

---
updated-dependencies:
- dependency-name: github.com/jhonsferg/relay
  dependency-version: 0.1.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot bot commented on behalf of github Apr 6, 2026

Labels

The following labels could not be found: ext. Please create it before Dependabot can add it to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

@dependabot dependabot bot added the dependencies Pull requests that update a dependency file label Apr 6, 2026
@dependabot dependabot bot requested a review from jhonsferg as a code owner April 6, 2026 02:38
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 6, 2026

🔍 Trivy Security Scan Results

No vulnerabilities found

@codecov-commenter
Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot bot commented on behalf of github Apr 7, 2026

A newer version of github.com/jhonsferg/relay exists, but since this PR has been edited by someone other than Dependabot I haven't updated it. You'll get a PR for the updated version as normal once this PR is merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants