Skip to content

chore(deps): bump the go-modules group with 19 updates - #4624

Merged
reinkrul merged 3 commits into
masterfrom
dependabot/go_modules/go-modules-2a043398dd
Oct 15, 2026
Merged

reinkrul merged 3 commits into
masterfrom
dependabot/go_modules/go-modules-2a043398dd

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 11, 2026

Copy link
Copy Markdown
Contributor

Bumps the go-modules group with 19 updates:

Package From To
github.com/Azure/azure-sdk-for-go/sdk/azcore 1.23.2 1.23.3
github.com/chromedp/chromedp 0.16.0 0.20.1
github.com/knadh/koanf/v2 2.3.7 2.3.8
github.com/piprate/json-gold 0.8.0 0.9.1
github.com/prometheus/client_golang 1.24.1 1.25.0
github.com/redis/go-redis/v9 9.22.0 9.23.0
github.com/twmb/murmur3 1.2.0 1.2.1
github.com/aws/aws-sdk-go-v2 1.47.1 1.47.2
github.com/aws/aws-sdk-go-v2/config 1.33.6 1.33.8
github.com/aws/aws-sdk-go-v2/feature/rds/auth 1.7.4 1.7.5
github.com/uptrace/opentelemetry-go-extra/otelgorm 0.3.2 0.4.0
go.opentelemetry.io/contrib/bridges/otellogrus 0.20.1 0.21.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp 0.71.0 0.72.0
go.opentelemetry.io/otel 1.46.0 1.47.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp 0.22.0 0.23.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp 1.46.0 1.47.0
go.opentelemetry.io/otel/sdk 1.46.0 1.47.0
go.opentelemetry.io/otel/sdk/log 0.22.0 1.47.0
go.opentelemetry.io/otel/trace 1.46.0 1.47.0

Updates github.com/Azure/azure-sdk-for-go/sdk/azcore from 1.23.2 to 1.23.3

Release notes

Sourced from github.com/Azure/azure-sdk-for-go/sdk/azcore's releases.

sdk/azcore/v1.23.3

1.23.3 (2026-10-06)

Bugs Fixed

  • Fixed arm.ResourceID.Location being empty when the locations segment uses different casing.

Other Changes

  • Added azure-deprecating to the default set of allowed (non-redacted) response headers for logging.
  • Replaced internal default HTTP client with the one from sdk/internal.
Commits
  • b0d63ac Prep azcore@v1.23.3 for release (#27681)
  • 83e527f [azdatalake] Update azblob to v1.8.2 for service.Client GetSASURL fix (#27657)
  • 4e68728 [Service Bus] Stabilize session timeout tests (#27609)
  • f3c857e Sync eng/common directory with azure-sdk-tools for PR 17077 (#27678)
  • c76d8f0 Fix location parsing for mixed-case resource IDs (#27669)
  • 6e5da8b fix: add period to LICENSE.txt (#26886)
  • add0a52 Configurations: 'specification/azurefleet/resource-manager/Microsoft.AzureFl...
  • 856b379 feat(azcore): add azure-deprecating to default allowed logging headers (#27...
  • 50a269f Fix base template. (#27666)
  • 3714be0 Sync eng/common directory with azure-sdk-tools for PR 17167 (#27665)
  • Additional commits viewable in compare view

Updates github.com/chromedp/chromedp from 0.16.0 to 0.20.1

Release notes

Sourced from github.com/chromedp/chromedp's releases.

v0.20.1

Documentation only. The README, the package documentation and the docs have the current versions (chromedp v0.20.0, cdproto v0.157.8, remote v0.2.0), the CI matrix and the release history. The README describes termcast and the 43 programs of chromedp/examples.

v0.20.0

chromedp supports Go 1.25 and later. Before this release, the module needed Go 1.27 (see #1536).

  • The JSON types come from github.com/chromedp/cdproto/cdp/jsonv2. With Go 1.27 or GOEXPERIMENT=jsonv2 they are aliases of the types of the standard encoding/json/v2 and jsontext, so the public API is the same. With Go 1.25 and 1.26 they come from github.com/go-json-experiment/json.
  • The modules chromedp, remote and test use go 1.25 and cdproto v0.157.8.
  • The CI runs Go 1.25, 1.26 and stable on Linux, stable on Windows and macOS, and the experiment and the compatibility tag.

v0.19.1

Documentation only. The README and the package documentation describe termcast, which draws the screen of a page in a terminal, and the 43 programs of chromedp/examples.

v0.19.0

This release adds new actions and options, fixes bugs, and works on Linux, Windows and macOS in CI. See docs/MIGRATION.md for every change.

New

  • Tap and TapXY send a touch tap.
  • DragAndDrop and DragAndDropXY drag and drop with the mouse and with HTML5 drag and drop.
  • Console reads the console, the uncaught exceptions and the browser log of a page as one iterator.
  • ExposeFunc calls a Go function from the page, like exposeFunction in Puppeteer.
  • PrintToPDF takes options for the paper, the margins, the scale, the page ranges, the header and the footer, the outline and a stream.
  • WithNewWindow chooses a window or a tab for a new target. NoInheritEnv starts the browser with only the given variables. WithDetachOnCancel leaves the tab open when the context ends.
  • EvalAwaitPromise waits for a promise that an expression returns.

Fixed

  • Call on a Target or a Browser returns an error when the connection to the browser is lost, and does not hang.
  • The exec allocator keeps the order of the flags.
  • WaitNotPresent works with a JSPath that gives null or an empty list.
  • Evaluate returns ErrJSNull for null when the type cannot be nil, and Text works on a text node.
  • The pipe transport, the allocator and the tests work on Windows and macOS, and the default browser lookup on Windows falls back to Microsoft Edge.

Notes

  • Use errors.Is(err, context.Canceled) and not == for the error of a call after the connection was lost.
  • The tests run on Linux, Windows and macOS in CI, and every night against the stable, beta and dev channels of headless-shell.
  • The module github.com/chromedp/chromedp/remote is unchanged and stays at remote/v0.1.0.
Commits
  • dddfecf Sweep the documentation
  • 156907f Require chromedp v0.20.0 in the test module
  • a5acf48 Require chromedp v0.20.0 in the remote module
  • 4a5437d Support Go 1.25 and later
  • 3c56b8b Describe termcast and the new examples in the README and the package document...
  • 67e1ea2 Update the actions of the workflows to checkout v7 and setup-go v7
  • 8b41617 Wait longer for the report of an HTML5 drag, and ignore the Windows pipe swit...
  • 7b6b962 Fix three tests that could pass for the wrong reason
  • a6e93be Name the variables that a browser can need with NoInheritEnv
  • 2bc273c Close the PDF stream when a read fails and document the zero values
  • Additional commits viewable in compare view

Updates github.com/knadh/koanf/v2 from 2.3.7 to 2.3.8

Release notes

Sourced from github.com/knadh/koanf/v2's releases.

v2.3.8

What's Changed

New Contributors

Full Changelog: knadh/koanf@v2.3.7...v2.3.8

Commits
  • 182a04e Fix UnmarshalWithConf ignoring a caller's DecoderConfig.TagName (#441)
  • 9232c82 cliflagv2: read each flag from the command that defines it (#453)
  • 05a17cc Fix IntfaceKeysToStrings missing maps inside nested slices (#442)
  • 2c35f37 Fix Cut(), Copy() and Slices() to retain Conf settings (#443)
  • 70b68c5 Fix MapKeys() returning empty slice on natively-typed maps (#447)
  • b0d46a9 fix: preserve config state when a strict merge fails (#452)
  • 3e00cf1 cliflagv3: read each flag from the command that defines it (#451)
  • See full diff in compare view

Updates github.com/piprate/json-gold from 0.8.0 to 0.9.1

Release notes

Sourced from github.com/piprate/json-gold's releases.

v0.9.1

What's Changed

Full Changelog: piprate/json-gold@v0.9.0...v0.9.1

v0.9.0

What's Changed

Full Changelog: piprate/json-gold@v0.8.0...v0.9.0

Commits
  • f43b7e3 Merge pull request #109 from tggo/perf-iskeyword
  • 87b5237 perf: IsKeyword matches with a string switch
  • cecce96 Merge pull request #108 from tggo/perf-graphtordf-iri-validation
  • 10edaa8 feat: implement JSON LD Framing 1.1 (#97)
  • 3acee60 perf: remember IRI validity within a ToRDF graph
  • 667ee76 Merge pull request #98 from redmer/update-tests
  • 94f2226 feat: report the JSON Pointer of each expanded node object (#104)
  • 38c14cb Merge pull request #103 from tggo/fix/resolve-nil-panic
  • 6f7e2ef fix: Resolve panics on an unparseable base or reference
  • 7441d7a test: update conformance report
  • Additional commits viewable in compare view

Updates github.com/prometheus/client_golang from 1.24.1 to 1.25.0

Release notes

Sourced from github.com/prometheus/client_golang's releases.

v1.25.0

⚠️ This release raises the minimum required Go version to 1.26 and includes breaking API changes in api/prometheus/v1 (see the [CHANGE] entries below). ⚠️

1.25.0 / 2026-10-07

  • [CHANGE] Minimum required Go version is now 1.26, only the two latest Go versions (1.26 and 1.27) are supported from now on. #2138
  • [CHANGE] api/prometheus/v1: Query, QueryRange, Series, LabelNames, and LabelValues now return Infos annotations in addition to Warnings, matching the Prometheus server's info annotations. This changes the signatures of these methods and of api.Client's Do/DoGetFallback; custom API client implementations must be updated. #1963
  • [CHANGE] api/prometheus/v1: Rework TSDBBlocks result types to align with the Prometheus server's tsdb.BlockMeta: TSDBBlocksResult now contains Blocks []TSDBBlockMeta directly instead of mirroring the full API envelope, nested types are renamed (TSDBBlockMeta, TSDBBlockStats, TSDBBlockMetaCompaction), stat fields are uint64 with omitempty tags, and the optional compaction parents field is included. #1928
  • [FEATURE] testutil: Add GatherAndFormat to encode a subset of metrics from a Gatherer. #2091
  • [FEATURE] promhttp: Add HandlerOpts.AcceptedFormats to customize the formats negotiated from the incoming Accept header, enabling opt-in to experimental formats such as OpenMetrics 2.0 without changing default negotiation. #2146
  • [ENHANCEMENT] promhttp: Negotiated metrics responses now include a Vary header. #2142
  • [ENHANCEMENT] prometheus: Regenerate the default runtime collector metrics for Go 1.25 and Go 1.26. #2090, #2095
  • [ENHANCEMENT] testutil: Finalize OpenMetrics output in GatherAndFormat and CollectAndFormat (terminating # EOF). #2125
  • [BUGFIX] api: Match complete URL path placeholders only; a :foo argument no longer substitutes inside :foobar. #2136
  • [BUGFIX] exp/api/remote: Reset the pooled buffer before generic proto marshaling, preventing corrupted remote-write payloads. #2139
  • [BUGFIX] testutil/promlint: Fix "mibi" unit prefix to "mebi". #2135

What's Changed

... (truncated)

Changelog

Sourced from github.com/prometheus/client_golang's changelog.

1.25.0 / 2026-10-07

  • [CHANGE] Minimum required Go version is now 1.26, only the two latest Go versions (1.26 and 1.27) are supported from now on. #2138
  • [CHANGE] api/prometheus/v1: Query, QueryRange, Series, LabelNames, and LabelValues now return Infos annotations in addition to Warnings, matching the Prometheus server's info annotations. This changes the signatures of these methods and of api.Client's Do/DoGetFallback; custom API client implementations must be updated. #1963
  • [CHANGE] api/prometheus/v1: Rework TSDBBlocks result types to align with the Prometheus server's tsdb.BlockMeta: TSDBBlocksResult now contains Blocks []TSDBBlockMeta directly instead of mirroring the full API envelope, nested types are renamed (TSDBBlockMeta, TSDBBlockStats, TSDBBlockMetaCompaction), stat fields are uint64 with omitempty tags, and the optional compaction parents field is included. #1928
  • [FEATURE] testutil: Add GatherAndFormat to encode a subset of metrics from a Gatherer. #2091
  • [FEATURE] promhttp: Add HandlerOpts.AcceptedFormats to customize the formats negotiated from the incoming Accept header, enabling opt-in to experimental formats such as OpenMetrics 2.0 without changing default negotiation. #2146
  • [ENHANCEMENT] promhttp: Negotiated metrics responses now include a Vary header. #2142
  • [ENHANCEMENT] prometheus: Regenerate the default runtime collector metrics for Go 1.25 and Go 1.26. #2090, #2095
  • [ENHANCEMENT] testutil: Finalize OpenMetrics output in GatherAndFormat and CollectAndFormat (terminating # EOF). #2125
  • [BUGFIX] api: Match complete URL path placeholders only; a :foo argument no longer substitutes inside :foobar. #2136
  • [BUGFIX] exp/api/remote: Reset the pooled buffer before generic proto marshaling, preventing corrupted remote-write payloads. #2139
  • [BUGFIX] testutil/promlint: Fix "mibi" unit prefix to "mebi". #2135
Commits

Updates github.com/redis/go-redis/v9 from 9.22.0 to 9.23.0

Release notes

Sourced from github.com/redis/go-redis/v9's releases.

9.23.0

This is a minor release. It contains everything from 9.23.0-beta.1, so these notes cover the full 9.22.0 → 9.23.0 upgrade.

⚠️ Changes to check when you upgrade from 9.22.0:

  • Go 1.26 is now the minimum Go version (#4060). The go directive of the root module and of the submodules moved from 1.24 to 1.26, as part of the dependency bumps for govulncheck findings. Projects that build with Go 1.24 or 1.25 must upgrade the toolchain.
  • Each Client has a dedicated pipeline connection pool (#4002). This includes failover clients and cluster node clients. Pipeline, TxPipeline, and autopipeline operations use this pool, so they do not compete with regular commands for main-pool connections. The pool is for burst capacity only: it dials only when necessary, an unused pool holds zero connections, and if the pool is full an operation uses the main pool. Set PipelinePoolSize: -1 to get the previous single-pool behavior.
  • AutoPipelineOptions.MaxBatchBytes has a default of 128 KiB (before, there was no limit). The default prevents a write/reply deadlock; it is not a throughput control. The buffers of the pipeline pool also have a default of 128 KiB.

⚠️ Changes to experimental APIs since 9.23.0-beta.1 (no effect if you upgrade from 9.22.0):

  • AutoPipelineOptions.FullDuplexFastSubmit is removed (#4018). The submit channel is replaced by a queue that takes a full wave of commands in one lock, so the separate fast path is not necessary. Remove the field from your options.
  • Options.ClientSideCacheRefreshRecencyWindow is removed (#4034). Refresh-on-invalidate now reads again every cached entry of an invalidated key and does not look at how recently the entry was read. On a write-heavy keyspace this means refresh traffic across the full resident cache. Remove the field from your options.
  • LocalCache.LRUClock() is removed (#4034). It returned the recency token that the removed recency window used, and has no replacement. Remove calls to it.
  • ClientSideCacheInvalidationBatchWindow served stale values in beta.1 (#4033). Under load the batcher applied only ~15% of invalidations, and the cache served invalidated values with a ~100% hit rate. 9.23.0 applies all of them. If you used this option on beta.1, upgrade.

🚀 Highlights

Full-Duplex Auto-Pipelining (Experimental)

Set AutoPipelineOptions.FullDuplex to enable the full-duplex mode of the automatic pipeliner. The default mode sends one batch per round trip. In full-duplex mode the engine holds one pipeline-pool connection, and a writer goroutine and a reader goroutine move the ordered command stream in both directions at the same time. On a high-latency link each command completes in approximately one round-trip time (RTT) on a single connection. On a 50 ms WAN profile: ~389k ops/s at 52 ms p50, against ~207k ops/s at 116 ms on the half-duplex ordered path.

The mode works on both faces of a standalone Client (AutoPipeline() and AsyncAutoPipeline()), and natively on a ClusterClient when routing goes to masters only. On a cluster, one child engine per master sends each command to the node that owns its slot, and follows MOVED / ASK redirects and retryable replies (LOADING, READONLY, ...) through the usual cluster redirect path. With replica routing (ReadOnly, RouteByLatency, or RouteRandomly), the autopipeliner uses the half-duplex shard flushers, which obey the shard picker. Config().FullDuplex reports the mode in effect.

Options:

  • FullDuplexWindow — the maximum number of commands in flight (backpressure).
  • FullDuplexIdleTimeout and FullDuplexMaxHold — when the engine returns the held connection to the pool. The pool hooks then do re-authentication and maintenance-notification handoffs.
  • MaxFlushDelay — now also used in full-duplex mode (#4014). The writer waits only when enough commands are in flight, so low-concurrency callers keep the 1×RTT behavior. With MaxFlushDelay=250µs at 1024 callers: +22% ops/s and −26% p99. The default is 0, so this is opt-in.
  • NumShards — on a standalone Client, the number of full-duplex engines (#4022). See below.

Pipeline() on the full-duplex connection (#4021). Standalone Client only. Before, ap.Pipeline() used a pooled connection for each Exec. It now submits the batch to the engine as one contiguous run (FDPipelined), so replies come back in submit order, as on a dedicated connection. At 256–1024 callers with 10 commands per Exec: +49% to +52% throughput on one socket instead of ~150. Errors, retries, hooks, and metrics behave like an ordinary pipeline. A batch that cannot use the stream (a blocking command, a per-command read timeout, a diverted command, or a batch larger than the queue) falls back to the ordinary pipeline. TxPipeline stays on a pooled connection, because MULTI/EXEC needs connection affinity. On a ClusterClient, ap.Pipeline() is still the ordinary cluster pipeline. A batch that the queue cannot admit now reserves its slots and waits in a first-come line, so single commands cannot starve a long pipeline (#4057, merged as part of #4021) by @​vlady-kotsev.

Several engines on one client (#4022). With FullDuplex, NumShards > 1 now means N engines on one client: one pool, one hook chain, N held connections. Commands route by a hash of their first key, so commands on the same key stay on one connection and keep their order without Unordered. Keyless commands are distributed round-robin. An FDPipelined batch stays on one engine. The pipeline pool must hold at least NumShards connections for each full-duplex autopipeliner. More engines help only under high concurrency: with 10-command pipelines, 8 engines were 30% slower than 1 at 8 callers, equal at about 128 callers, and 2.2× faster at 1024 callers.

The full-duplex path supports blocking commands, Options.Limiter (one admission per written batch), per-command and pipeline hooks, OTel metrics, retry budgets (a NoRetry command is never sent again after it is on the wire), and seamless maintenance handoffs. Limits of the stream model:

  • A hook can observe a command, but cannot stop it. A ProcessHook that returns without calling next does not cancel the command on the full-duplex path; the command is already queued on the held connection. Run policy or kill-switch hooks on a plain client or on the half-duplex autopipeliner.
  • Diverted commands are not ordered with the stream. The engine diverts blocking commands, connection-hostile commands, and managed HIMPORT commands. On the async face, wait for the result of a diverted command before you submit a command that depends on it.
  • Single commands on the full-duplex stream do not use the client-side cache. If CSC is enabled, a cacheable command on the stream does not read or write the cache.
  • Duration metrics are recorded per reply. A command that fails before it reaches the reader (lease failure, limiter denial, retry exhaustion, close) calls the error callback but records no operation-duration sample.
rdb := redis.NewClient(&redis.Options{
	Addr: "localhost:6379",
	AutoPipelineOptions: &redis.AutoPipelineOptions{
		FullDuplex: true, // stream commands on one held connection, ~1 RTT each
	},
})
defer rdb.Close()
</tr></table> 

... (truncated)

Changelog

Sourced from github.com/redis/go-redis/v9's changelog.

9.23.0 (2026-10-05)

This is a minor release. It contains everything from 9.23.0-beta.1, so these notes cover the full 9.22.0 → 9.23.0 upgrade. The release adds:

  • An experimental full-duplex mode for the automatic pipeliner, now with Pipeline() on the full-duplex connection and several engines on one client.
  • Refresh-on-invalidate and miss coalescing for client-side caching, and a faster cache read path.
  • Better distribution of cluster reads under latency-based routing.
  • Client.EphemeralConn, an opt-in limit on queued autopipeline commands, and many stability fixes.

⚠️ Changes to check when you upgrade from 9.22.0:

  • Go 1.26 is now the minimum Go version (#4060). The go directive of the root module and of the submodules moved from 1.24 to 1.26, as part of the dependency bumps for govulncheck findings. Projects that build with Go 1.24 or 1.25 must upgrade the toolchain.
  • Each Client has a dedicated pipeline connection pool (#4002). This includes failover clients and cluster node clients. Pipeline, TxPipeline, and autopipeline operations use this pool, so they do not compete with regular commands for main-pool connections. The pool is for burst capacity only: it dials only when necessary, an unused pool holds zero connections, and if the pool is full an operation uses the main pool. Set PipelinePoolSize: -1 to get the previous single-pool behavior.
  • AutoPipelineOptions.MaxBatchBytes has a default of 128 KiB (before, there was no limit). The default prevents a write/reply deadlock; it is not a throughput control. The buffers of the pipeline pool also have a default of 128 KiB.

⚠️ Changes to experimental APIs since 9.23.0-beta.1 (no effect if you upgrade from 9.22.0):

  • AutoPipelineOptions.FullDuplexFastSubmit is removed (#4018). The submit channel is replaced by a queue that takes a full wave of commands in one lock, so the separate fast path is not necessary. Remove the field from your options.
  • Options.ClientSideCacheRefreshRecencyWindow is removed (#4034). Refresh-on-invalidate now reads again every cached entry of an invalidated key and does not look at how recently the entry was read. On a write-heavy keyspace this means refresh traffic across the full resident cache. Remove the field from your options.
  • LocalCache.LRUClock() is removed (#4034). It returned the recency token that the removed recency window used, and has no replacement. Remove calls to it.
  • ClientSideCacheInvalidationBatchWindow served stale values in beta.1 (#4033). Under load the batcher applied only ~15% of invalidations, and the cache served invalidated values with a ~100% hit rate. 9.23.0 applies all of them. If you used this option on beta.1, upgrade.

🚀 Highlights

Full-Duplex Auto-Pipelining (Experimental)

Set AutoPipelineOptions.FullDuplex to enable the full-duplex mode of the automatic pipeliner. The default mode sends one batch per round trip. In full-duplex mode the engine holds one pipeline-pool connection, and a writer goroutine and a reader goroutine move the ordered command stream in both directions at the same time. On a high-latency link each command completes in approximately one round-trip time (RTT) on a single connection. On a 50 ms WAN profile: ~389k ops/s at 52 ms p50, against ~207k ops/s at 116 ms on the half-duplex ordered path.

The mode works on both faces of a standalone Client (AutoPipeline() and AsyncAutoPipeline()), and natively on a ClusterClient when routing goes to masters only. On a cluster, one child engine per master sends each command to the node that owns its slot, and follows MOVED / ASK redirects and retryable replies (LOADING, READONLY, ...) through the usual cluster redirect path. With replica routing (ReadOnly, RouteByLatency, or RouteRandomly), the autopipeliner uses the half-duplex shard flushers, which obey the shard picker. Config().FullDuplex reports the mode in effect.

Options:

  • FullDuplexWindow — the maximum number of commands in flight (backpressure).
  • FullDuplexIdleTimeout and FullDuplexMaxHold — when the engine returns the held connection to the pool. The pool hooks then do re-authentication and maintenance-notification handoffs.
  • MaxFlushDelay — now also used in full-duplex mode (#4014). The writer waits only when enough commands are in flight, so low-concurrency callers keep the 1×RTT behavior. With MaxFlushDelay=250µs at 1024 callers: +22% ops/s and −26% p99. The default is 0, so this is opt-in.
  • NumShards — on a standalone Client, the number of full-duplex engines (#4022). See below.

Pipeline() on the full-duplex connection (#4021). Standalone Client only. Before, ap.Pipeline() used a pooled connection for each Exec. It now submits the batch to the engine as one contiguous run (FDPipelined), so replies come back in submit order, as on a dedicated connection. At 256–1024 callers with 10 commands per Exec: +49% to +52% throughput on one socket instead of ~150. Errors, retries, hooks, and metrics behave like an ordinary pipeline. A batch that cannot use the stream (a blocking command, a per-command read timeout, a diverted command, or a batch larger than the queue) falls back to the ordinary pipeline. TxPipeline stays on a pooled connection, because MULTI/EXEC needs connection affinity. On a ClusterClient, ap.Pipeline() is still the ordinary cluster pipeline. A batch that the queue cannot admit now reserves its slots and waits in a first-come line, so single commands cannot starve a long pipeline (#4057, merged as part of #4021) by @​vlady-kotsev.

Several engines on one client (#4022). With FullDuplex, NumShards > 1 now means N engines on one client: one pool, one hook chain, N held connections. Commands route by a hash of their first key, so commands on the same key stay on one connection and keep their order without Unordered. Keyless commands are distributed round-robin. An FDPipelined batch stays on one engine. The pipeline pool must hold at least NumShards connections for each full-duplex autopipeliner. More engines help only under high concurrency: with 10-command pipelines, 8 engines were 30% slower than 1 at 8 callers, equal at about 128 callers, and 2.2× faster at 1024 callers.

The full-duplex path supports blocking commands, Options.Limiter (one admission per written batch), per-command and pipeline hooks, OTel metrics, retry budgets (a NoRetry command is never sent again after it is on the wire), and seamless maintenance handoffs. Limits of the stream model:

  • A hook can observe a command, but cannot stop it. A ProcessHook that returns without calling next does not cancel the command on the full-duplex path; the command is already queued on the held connection. Run policy or kill-switch hooks on a plain client or on the half-duplex autopipeliner.
  • Diverted commands are not ordered with the stream. The engine diverts blocking commands, connection-hostile commands, and managed HIMPORT commands. On the async face, wait for the result of a diverted command before you submit a command that depends on it.
  • Single commands on the full-duplex stream do not use the client-side cache. If CSC is enabled, a cacheable command on the stream does not read or write the cache.
  • Duration metrics are recorded per reply. A command that fails before it reaches the reader (lease failure, limiter denial, retry exhaustion, close) calls the error callback but records no operation-duration sample.
rdb := redis.NewClient(&redis.Options{
</tr></table> 

... (truncated)

Commits
  • 6f2b263 chore(release): v9.23.0 (#4074)
  • ec50c69 feat(conn): add DisposableConn to discard on Close (#4039)
  • e3d2548 fix(pool): fix ConnStateMachine waiter races (#4072)
  • 2ee6d86 fix(pool): wake waiters when a connection is released to the pool (#4028)
  • 83d45ed fix:(proto): support uintptr in WriteArg (#4054)
  • c2002af docs(example): add full-duplex examples (#4061)
  • b5f8864 feat(autopipeline): add MaxQueuedCommands hard limit (#4070)
  • 89ecbc5 fix(options): reject invalid skip_verify values in ParseURL (#4064)
  • f813adc feat(autopipeline): run N full-duplex engines on one client (#4022)
  • 349bcf4 feat(autopipeline): run Pipeline on the full-duplex connection (#4021)
  • Additional commits viewable in compare view

Updates github.com/twmb/murmur3 from 1.2.0 to 1.2.1

Commits
  • f1e4657 Merge pull request #14 from antmat/stream-unroll4
  • 8103a85 murmur128: unroll the streaming mixer four blocks at a time
  • See full diff in compare view

Updates github.com/aws/aws-sdk-go-v2 from 1.47.1 to 1.47.2

Commits

Updates github.com/aws/aws-sdk-go-v2/config from 1.33.6 to 1.33.8

Commits

Updates github.com/aws/aws-sdk-go-v2/feature/rds/auth from 1.7.4 to 1.7.5

Commits

Bumps the go-modules group with 19 updates:

| Package | From | To |
| --- | --- | --- |
| [github.com/Azure/azure-sdk-for-go/sdk/azcore](https://github.com/Azure/azure-sdk-for-go) | `1.23.2` | `1.23.3` |
| [github.com/chromedp/chromedp](https://github.com/chromedp/chromedp) | `0.16.0` | `0.20.1` |
| [github.com/knadh/koanf/v2](https://github.com/knadh/koanf) | `2.3.7` | `2.3.8` |
| [github.com/piprate/json-gold](https://github.com/piprate/json-gold) | `0.8.0` | `0.9.1` |
| [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) | `1.24.1` | `1.25.0` |
| [github.com/redis/go-redis/v9](https://github.com/redis/go-redis) | `9.22.0` | `9.23.0` |
| [github.com/twmb/murmur3](https://github.com/twmb/murmur3) | `1.2.0` | `1.2.1` |
| [github.com/aws/aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2) | `1.47.1` | `1.47.2` |
| [github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2) | `1.33.6` | `1.33.8` |
| [github.com/aws/aws-sdk-go-v2/feature/rds/auth](https://github.com/aws/aws-sdk-go-v2) | `1.7.4` | `1.7.5` |
| [github.com/uptrace/opentelemetry-go-extra/otelgorm](https://github.com/uptrace/opentelemetry-go-extra) | `0.3.2` | `0.4.0` |
| [go.opentelemetry.io/contrib/bridges/otellogrus](https://github.com/open-telemetry/opentelemetry-go-contrib) | `0.20.1` | `0.21.0` |
| [go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp](https://github.com/open-telemetry/opentelemetry-go-contrib) | `0.71.0` | `0.72.0` |
| [go.opentelemetry.io/otel](https://github.com/open-telemetry/opentelemetry-go) | `1.46.0` | `1.47.0` |
| [go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp](https://github.com/open-telemetry/opentelemetry-go) | `0.22.0` | `0.23.0` |
| [go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp](https://github.com/open-telemetry/opentelemetry-go) | `1.46.0` | `1.47.0` |
| [go.opentelemetry.io/otel/sdk](https://github.com/open-telemetry/opentelemetry-go) | `1.46.0` | `1.47.0` |
| [go.opentelemetry.io/otel/sdk/log](https://github.com/open-telemetry/opentelemetry-go) | `0.22.0` | `1.47.0` |
| [go.opentelemetry.io/otel/trace](https://github.com/open-telemetry/opentelemetry-go) | `1.46.0` | `1.47.0` |


Updates `github.com/Azure/azure-sdk-for-go/sdk/azcore` from 1.23.2 to 1.23.3
- [Release notes](https://github.com/Azure/azure-sdk-for-go/releases)
- [Commits](Azure/azure-sdk-for-go@sdk/azcore/v1.23.2...sdk/azcore/v1.23.3)

Updates `github.com/chromedp/chromedp` from 0.16.0 to 0.20.1
- [Release notes](https://github.com/chromedp/chromedp/releases)
- [Commits](chromedp/chromedp@v0.16.0...v0.20.1)

Updates `github.com/knadh/koanf/v2` from 2.3.7 to 2.3.8
- [Release notes](https://github.com/knadh/koanf/releases)
- [Commits](knadh/koanf@v2.3.7...v2.3.8)

Updates `github.com/piprate/json-gold` from 0.8.0 to 0.9.1
- [Release notes](https://github.com/piprate/json-gold/releases)
- [Changelog](https://github.com/piprate/json-gold/blob/master/CHANGELOG.md)
- [Commits](piprate/json-gold@v0.8.0...v0.9.1)

Updates `github.com/prometheus/client_golang` from 1.24.1 to 1.25.0
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/v1.25.0/CHANGELOG.md)
- [Commits](prometheus/client_golang@v1.24.1...v1.25.0)

Updates `github.com/redis/go-redis/v9` from 9.22.0 to 9.23.0
- [Release notes](https://github.com/redis/go-redis/releases)
- [Changelog](https://github.com/redis/go-redis/blob/master/RELEASE-NOTES.md)
- [Commits](redis/go-redis@v9.22.0...v9.23.0)

Updates `github.com/twmb/murmur3` from 1.2.0 to 1.2.1
- [Commits](twmb/murmur3@v1.2.0...v1.2.1)

Updates `github.com/aws/aws-sdk-go-v2` from 1.47.1 to 1.47.2
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](aws/aws-sdk-go-v2@v1.47.1...v1.47.2)

Updates `github.com/aws/aws-sdk-go-v2/config` from 1.33.6 to 1.33.8
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](aws/aws-sdk-go-v2@config/v1.33.6...config/v1.33.8)

Updates `github.com/aws/aws-sdk-go-v2/feature/rds/auth` from 1.7.4 to 1.7.5
- [Release notes](https://github.com/aws/aws-sdk-go-v2/releases)
- [Commits](aws/aws-sdk-go-v2@service/m2/v1.7.4...service/m2/v1.7.5)

Updates `github.com/uptrace/opentelemetry-go-extra/otelgorm` from 0.3.2 to 0.4.0
- [Release notes](https://github.com/uptrace/opentelemetry-go-extra/releases)
- [Changelog](https://github.com/uptrace/opentelemetry-go-extra/blob/main/CHANGELOG.md)
- [Commits](uptrace/opentelemetry-go-extra@v0.3.2...v0.4.0)

Updates `go.opentelemetry.io/contrib/bridges/otellogrus` from 0.20.1 to 0.21.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-go-contrib/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-go-contrib@bridges/otelzap/v0.20.1...v0.21.0)

Updates `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp` from 0.71.0 to 0.72.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-go-contrib/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-go-contrib@zpages/v0.71.0...zpages/v0.72.0)

Updates `go.opentelemetry.io/otel` from 1.46.0 to 1.47.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-go@v1.46.0...v1.47.0)

Updates `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp` from 0.22.0 to 0.23.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-go@log/v0.22.0...metric/v0.23.0)

Updates `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp` from 1.46.0 to 1.47.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-go@v1.46.0...v1.47.0)

Updates `go.opentelemetry.io/otel/sdk` from 1.46.0 to 1.47.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-go@v1.46.0...v1.47.0)

Updates `go.opentelemetry.io/otel/sdk/log` from 0.22.0 to 1.47.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-go@log/v0.22.0...v1.47.0)

Updates `go.opentelemetry.io/otel/trace` from 1.46.0 to 1.47.0
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-go@v1.46.0...v1.47.0)

---
updated-dependencies:
- dependency-name: github.com/Azure/azure-sdk-for-go/sdk/azcore
  dependency-version: 1.23.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-modules
- dependency-name: github.com/chromedp/chromedp
  dependency-version: 0.20.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-modules
- dependency-name: github.com/knadh/koanf/v2
  dependency-version: 2.3.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-modules
- dependency-name: github.com/piprate/json-gold
  dependency-version: 0.9.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-modules
- dependency-name: github.com/prometheus/client_golang
  dependency-version: 1.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-modules
- dependency-name: github.com/redis/go-redis/v9
  dependency-version: 9.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-modules
- dependency-name: github.com/twmb/murmur3
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-modules
- dependency-name: github.com/aws/aws-sdk-go-v2
  dependency-version: 1.47.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-modules
- dependency-name: github.com/aws/aws-sdk-go-v2/config
  dependency-version: 1.33.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-modules
- dependency-name: github.com/aws/aws-sdk-go-v2/feature/rds/auth
  dependency-version: 1.7.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go-modules
- dependency-name: github.com/uptrace/opentelemetry-go-extra/otelgorm
  dependency-version: 0.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-modules
- dependency-name: go.opentelemetry.io/contrib/bridges/otellogrus
  dependency-version: 0.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-modules
- dependency-name: go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
  dependency-version: 0.72.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-modules
- dependency-name: go.opentelemetry.io/otel
  dependency-version: 1.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-modules
- dependency-name: go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp
  dependency-version: 0.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-modules
- dependency-name: go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp
  dependency-version: 1.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-modules
- dependency-name: go.opentelemetry.io/otel/sdk
  dependency-version: 1.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-modules
- dependency-name: go.opentelemetry.io/otel/sdk/log
  dependency-version: 1.47.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: go-modules
- dependency-name: go.opentelemetry.io/otel/trace
  dependency-version: 1.47.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go-modules
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot requested a review from woutslakhorst as a code owner October 11, 2026 21:08
@dependabot dependabot Bot added the dependencies Pull requests that update a dependency file label Oct 11, 2026
@dependabot dependabot Bot added the go Pull requests that update Go code label Oct 11, 2026
chromedp v0.20 moved the remote allocator to the separate module
github.com/chromedp/chromedp/remote and made actions generic: Run
returns the value of a single action and Do runs steps that return
nothing.

Assisted-by: AI
@reinkrul

Copy link
Copy Markdown
Member

@dependabot rebase

@dependabot @github

dependabot Bot commented on behalf of github Oct 15, 2026

Copy link
Copy Markdown
Contributor Author

Looks like this PR has been edited by someone other than Dependabot. That means Dependabot can't rebase it - sorry!

If you're happy for Dependabot to recreate it from scratch, overwriting any edits, you can request @dependabot recreate.

@reinkrul
reinkrul merged commit 9b119a1 into master Oct 15, 2026
13 checks passed
@reinkrul
reinkrul deleted the dependabot/go_modules/go-modules-2a043398dd branch October 15, 2026 09:17
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 go Pull requests that update Go code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants