Skip to content

prep release: v2.10.3#9556

Merged
abernix merged 1 commit into
2.10.3from
prep-2.10.3
May 29, 2026
Merged

prep release: v2.10.3#9556
abernix merged 1 commit into
2.10.3from
prep-2.10.3

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Note

When approved, this PR will merge into the 2.10.3 branch which will — upon being approved itself — merge into main.

Things to review in this PR:

  • Changelog correctness (preview below; see Files Changed for the true reality)
  • Version bumps
  • That it targets the right release branch (2.10.3 in this case!)

Opened automatically by the test-release-prep workflow.


🐛 Fixes

Support non-ASCII (UTF-8) WebSocket header values (Issue #1485, PR #9051)

The router can now handle WebSocket connections with UTF-8 encoded header values, including non-ASCII characters like "Montréal". Previously, such connections failed because of serialization issues in the underlying tungstenite library.

The fix comes from updating tokio-tungstenite from v0.28.0 to v0.29.0.

By @BobaFetters in #9051

Handle both deprecated enum values when merging coprocessor context (PR #8913)

A change to coprocessor context merges in Router v2.10 caused keys to be deleted when context: true is used as the coprocessor context selector in the router configuration file.

The workaround was to pass context: deprecated instead. This change brings parity when context: true is provided.

By @carodewig in #8913

🛠 Maintenance

Pin transitive h2 dependency at minimum v0.4.13 to pick up critical flow-control, deadlock, and tracing fixes (PR #9033)

h2 0.4.13 (released January 5, 2026) contains three fixes directly relevant to the router, which uses h2 exclusively as a client when connecting to subgraphs:

  • Capacity deadlock under concurrent streams (#860) — high relevance: Under concurrent load with max_concurrent_streams limits in effect, flow-control capacity could be assigned to streams still in pending_open state. Those streams could never consume the capacity, starving already-open streams and permanently freezing all outgoing traffic on the connection with no error surfaced. This is directly triggerable in the router: any subgraph behind Envoy or a gRPC backend advertises a max_concurrent_streams limit (Envoy defaults to 100), and under production load the router will routinely queue more concurrent requests than that limit allows.

  • OTel tracing span lifetime leak (#868) — high relevance: The h2 Connection object captured the active tracing span at connection creation time as its parent, keeping that span alive for the entire lifetime of the connection. Since the router wraps every subgraph request in an OpenTelemetry span and connections are pooled, affected spans could linger indefinitely under sustained traffic — never being exported to the tracing backend and accumulating in memory.

  • Flow-control stall on padded DATA frames (#869) — lower relevance for typical subgraphs, higher for connectors: Padding bytes in DATA frames were not being returned to the flow-control window, causing the connection window to drain to zero and permanently stalling downloads with no error. Typical GraphQL/gRPC subgraphs do not send padded frames, but router connectors calling arbitrary HTTP APIs (e.g., Google Cloud Storage or CDN-backed endpoints) can encounter this.

By @theJC in #9033

@apollo-librarian

apollo-librarian Bot commented May 29, 2026

Copy link
Copy Markdown
Contributor

✅ Docs preview ready

The preview is ready to be viewed. View the preview

File Changes

15 new, 58 changed, 4 removed
+ graphos/routing/(latest)/customization/coprocessor.mdx
+ graphos/routing/(latest)/cloud/aws-migration.mdx
+ graphos/routing/(latest)/cloud/configuration.mdx
+ graphos/routing/(latest)/cloud/custom-domains.mdx
+ graphos/routing/(latest)/cloud/dedicated-quickstart.mdx
+ graphos/routing/(latest)/cloud/dedicated.mdx
+ graphos/routing/(latest)/cloud/index.mdx
+ graphos/routing/(latest)/cloud/lattice-configuration.mdx
+ graphos/routing/(latest)/cloud/lattice-management.mdx
+ graphos/routing/(latest)/cloud/lattice-troubleshooting.mdx
+ graphos/routing/(latest)/cloud/migrate-to-dedicated.mdx
+ graphos/routing/(latest)/cloud/secure-subgraphs.mdx
+ graphos/routing/(latest)/cloud/serverless.mdx
+ graphos/routing/(latest)/cloud/subscriptions.mdx
+ graphos/routing/(latest)/cloud/throughput-guide.mdx
* graphos/routing/(latest)/about-v2.mdx
* graphos/routing/(latest)/errors.mdx
* graphos/routing/(latest)/license.mdx
* graphos/routing/(latest)/uplink.mdx
* graphos/routing/(latest)/configuration/cli.mdx
* graphos/routing/(latest)/configuration/envvars.mdx
* graphos/routing/(latest)/configuration/overview.mdx
* graphos/routing/(latest)/configuration/yaml.mdx
* graphos/routing/(latest)/customization/custom-binary.mdx
* graphos/routing/(latest)/customization/native-plugins.mdx
* graphos/routing/(latest)/customization/coprocessor/index.mdx
* graphos/routing/(latest)/customization/coprocessor/reference.mdx
* graphos/routing/(latest)/customization/rhai/index.mdx
* graphos/routing/(latest)/customization/rhai/reference.mdx
* graphos/routing/(latest)/observability/graphos/federated-trace-data.mdx
* graphos/routing/(latest)/observability/graphos/graphos-reporting.mdx
* graphos/routing/(latest)/observability/router-telemetry-otel/apm-guides/datadog/router-instrumentation.mdx
* graphos/routing/(latest)/observability/router-telemetry-otel/apm-guides/datadog/observing-and-monitoring/dashboard-template.mdx
* graphos/routing/(latest)/observability/router-telemetry-otel/apm-guides/zipkin/zipkin-traces.mdx
* graphos/routing/(latest)/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx
* graphos/routing/(latest)/observability/router-telemetry-otel/enabling-telemetry/spans.mdx
* graphos/routing/(latest)/observability/router-telemetry-otel/enabling-telemetry/standard-instruments.mdx
* graphos/routing/(latest)/observability/router-telemetry-otel/telemetry-pipelines/log-exporters/stdout.mdx
* graphos/routing/(latest)/observability/router-telemetry-otel/telemetry-pipelines/metrics-exporters/otlp.mdx
* graphos/routing/(latest)/observability/router-telemetry-otel/telemetry-pipelines/metrics-exporters/overview.mdx
* graphos/routing/(latest)/observability/router-telemetry-otel/telemetry-pipelines/trace-exporters/otlp.mdx
* graphos/routing/(latest)/operations/apq.mdx
* graphos/routing/(latest)/operations/defer.mdx
* graphos/routing/(latest)/operations/file-upload.mdx
* graphos/routing/(latest)/operations/subscriptions/api-gateway.mdx
* graphos/routing/(latest)/operations/subscriptions/configuration.mdx
* graphos/routing/(latest)/operations/subscriptions/overview.mdx
* graphos/routing/(latest)/performance/query-batching.mdx
* graphos/routing/(latest)/performance/traffic-shaping.mdx
* graphos/routing/(latest)/performance/caching/response-caching/customization.mdx
* graphos/routing/(latest)/performance/caching/response-caching/faq.mdx
* graphos/routing/(latest)/performance/caching/response-caching/invalidation.mdx
* graphos/routing/(latest)/performance/caching/response-caching/observability.mdx
* graphos/routing/(latest)/performance/caching/response-caching/quickstart.mdx
* graphos/routing/(latest)/query-planning/caching.mdx
* graphos/routing/(latest)/security/authorization.mdx
* graphos/routing/(latest)/security/demand-control.mdx
* graphos/routing/(latest)/security/index.mdx
* graphos/routing/(latest)/security/jwt.mdx
* graphos/routing/(latest)/security/persisted-queries.mdx
* graphos/routing/(latest)/security/request-limits.mdx
* graphos/routing/(latest)/security/router-authentication.mdx
* graphos/routing/(latest)/security/tls.mdx
* graphos/routing/(latest)/self-hosted/index.mdx
* graphos/routing/(latest)/self-hosted/containerization/aws.mdx
* graphos/routing/(latest)/self-hosted/containerization/azure.mdx
* graphos/routing/(latest)/self-hosted/containerization/docker-router-only.mdx
* graphos/routing/(latest)/self-hosted/containerization/docker.mdx
* graphos/routing/(latest)/self-hosted/containerization/gcp.mdx
* graphos/routing/(latest)/self-hosted/containerization/index.mdx
* graphos/routing/(latest)/self-hosted/containerization/kubernetes/quickstart.mdx
* graphos/routing/(latest)/upgrade/from-router-v1.mdx
* graphos/routing/(latest)/_sidebar.yaml
- graphos/routing/(latest)/configuration/hot-reload-schema.mdx
- graphos/routing/(latest)/configuration/schema-file.mdx
- graphos/routing/(latest)/performance/circuit-breaking.mdx
- graphos/routing/(latest)/self-hosted/containerization/proxy-certificates.mdx

Build ID: 54d13caf310343750bbf6356
Build Logs: View logs

URL: https://www.apollographql.com/docs/deploy-preview/54d13caf310343750bbf6356


✅ AI Style Review — No Issues Found

The pull request does not have any style issues.

Duration: 3147ms
Review Log: View detailed log

This review is AI-generated. Please use common sense when accepting these suggestions, as they may not always be accurate or appropriate for your specific context.

@abernix
abernix enabled auto-merge (squash) May 29, 2026 17:27
@abernix
abernix merged commit c840238 into 2.10.3 May 29, 2026
15 checks passed
@abernix
abernix deleted the prep-2.10.3 branch May 29, 2026 17:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant