Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions .changesets/feat_zelda_jemalloc_metrics.md

This file was deleted.

9 changes: 0 additions & 9 deletions .changesets/fix_bnjjj_fix_error_log_subs.md

This file was deleted.

7 changes: 0 additions & 7 deletions .changesets/fix_bnjjj_fix_subs_closing.md

This file was deleted.

7 changes: 0 additions & 7 deletions .changesets/fix_bryn_connection_cancellation_race.md

This file was deleted.

15 changes: 0 additions & 15 deletions .changesets/fix_tylerb_fed_644.md

This file was deleted.

63 changes: 63 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,69 @@ All notable changes to Router will be documented in this file.

This project adheres to [Semantic Versioning v2.0.0](https://semver.org/spec/v2.0.0.html).

# [1.61.11] - 2025-10-27

## 🚀 Features

### jemalloc metrics ([PR #7735](https://github.com/apollographql/router/pull/7735))

The router adds the following new metrics when running the router on Linux with its default `global-allocator` feature:

- [`apollo_router_jemalloc_active`](https://jemalloc.net/jemalloc.3.html#stats.active): Total number of bytes in active pages allocated by the application.
- [`apollo_router_jemalloc_allocated`](https://jemalloc.net/jemalloc.3.html#stats.allocated): Total number of bytes allocated by the application.
- [`apollo_router_jemalloc_mapped`](https://jemalloc.net/jemalloc.3.html#stats.mapped): Total number of bytes in active extents mapped by the allocator.
- [`apollo_router_jemalloc_metadata`](https://jemalloc.net/jemalloc.3.html#stats.metadata): Total number of bytes dedicated to metadata, which comprise base allocations used for bootstrap-sensitive allocator metadata structures and internal allocations.
- [`apollo_router_jemalloc_resident`](https://jemalloc.net/jemalloc.3.html#stats.resident): Maximum number of bytes in physically resident data pages mapped by the allocator, comprising all pages dedicated to allocator metadata, pages backing active allocations, and unused dirty pages.
- [`apollo_router_jemalloc_retained`](https://jemalloc.net/jemalloc.3.html#stats.retained): Total number of bytes in virtual memory mappings that were retained rather than being returned to the operating system via e.g. `munmap(2)` or similar.

By [@Velfi](https://github.com/Velfi) in https://github.com/apollographql/router/pull/7735

## 🐛 Fixes

### Query planning errors with progressive override on interface implementations ([PR #7929](https://github.com/apollographql/router/pull/7929))

The router now correctly generates query plans when using [progressive override](https://www.apollographql.com/docs/graphos/schema-design/federated-schemas/entities/migrate-fields#incremental-migration-with-progressive-override) (`@override` with labels) on types that implement interfaces within the same subgraph.

Previously, the Rust query planner would fail to generate plans for these scenarios with the error `"Was not able to find any options for {}: This shouldn't have happened."`, while the JavaScript planner handled them correctly.

This fix resolves planning failures when your schema uses:

- Interface implementations local to a subgraph
- Progressive override directives on both the implementing type and its fields
- Queries that traverse through the overridden interface implementations

These will now successfully plan and execute.

By [@TylerBloom](https://github.com/TylerBloom) in https://github.com/apollographql/router/pull/7929

### WebSocket connection cleanup for subscriptions ([PR #8104](https://github.com/apollographql/router/pull/8104))

WebSocket connections to subgraphs now close properly when all client subscriptions end, preventing unnecessary resource usage.

Previously, connections could remain open after clients disconnected, not being cleaned up until a new event was received. The router now tracks active subscriptions and closes the subgraph connection when the last client disconnects, ensuring efficient resource management.

By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/8104

### Reduce log level for interrupted WebSocket streams ([PR #8344](https://github.com/apollographql/router/pull/8344))

The router now logs interrupted WebSocket streams at `trace` level instead of `error` level.

Previously, WebSocket stream interruptions logged at `error` level, creating excessive noise in logs when clients disconnected normally or networks experienced transient issues. Client disconnections and network interruptions are expected operational events that don't require immediate attention.

Your logs will now be cleaner and more actionable, making genuine errors easier to spot. You can enable `trace` level logging when debugging WebSocket connection issues.

By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/8344

### Connection shutdown race condition during hot reload ([PR #8169](https://github.com/apollographql/router/pull/8169))

The router now reliably terminates all connections during hot reload, preventing out-of-memory errors from multiple active pipelines.

A race condition during hot reload occasionally left connections in an active state instead of terminating. Connections that are opening during shutdown now immediately terminate, maintaining stable memory usage through hot reloads.

By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/8169



# [1.61.10] - 2025-07-24

## 🐛 Fixes
Expand Down
8 changes: 4 additions & 4 deletions Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ dependencies = [

[[package]]
name = "apollo-federation"
version = "1.61.11-rc.1"
version = "1.61.11"
dependencies = [
"apollo-compiler",
"derive_more",
Expand Down Expand Up @@ -256,7 +256,7 @@ dependencies = [

[[package]]
name = "apollo-router"
version = "1.61.11-rc.1"
version = "1.61.11"
dependencies = [
"access-json",
"ahash",
Expand Down Expand Up @@ -424,7 +424,7 @@ dependencies = [

[[package]]
name = "apollo-router-benchmarks"
version = "1.61.11-rc.1"
version = "1.61.11"
dependencies = [
"apollo-parser",
"apollo-router",
Expand All @@ -440,7 +440,7 @@ dependencies = [

[[package]]
name = "apollo-router-scaffold"
version = "1.61.11-rc.1"
version = "1.61.11"
dependencies = [
"anyhow",
"cargo-scaffold",
Expand Down
2 changes: 1 addition & 1 deletion apollo-federation/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "apollo-federation"
version = "1.61.11-rc.1"
version = "1.61.11"
authors = ["The Apollo GraphQL Contributors"]
edition = "2021"
description = "Apollo Federation"
Expand Down
2 changes: 1 addition & 1 deletion apollo-router-benchmarks/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "apollo-router-benchmarks"
version = "1.61.11-rc.1"
version = "1.61.11"
authors = ["Apollo Graph, Inc. <packages@apollographql.com>"]
edition = "2021"
license = "Elastic-2.0"
Expand Down
2 changes: 1 addition & 1 deletion apollo-router-scaffold/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "apollo-router-scaffold"
version = "1.61.11-rc.1"
version = "1.61.11"
authors = ["Apollo Graph, Inc. <packages@apollographql.com>"]
edition = "2021"
license = "Elastic-2.0"
Expand Down
2 changes: 1 addition & 1 deletion apollo-router-scaffold/templates/base/Cargo.template.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ apollo-router = { path ="{{integration_test}}apollo-router" }
apollo-router = { git="https://github.com/apollographql/router.git", branch="{{branch}}" }
{{else}}
# Note if you update these dependencies then also update xtask/Cargo.toml
apollo-router = "1.61.11-rc.1"
apollo-router = "1.61.11"
{{/if}}
{{/if}}
async-trait = "0.1.52"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ apollo-router-scaffold = { path ="{{integration_test}}apollo-router-scaffold" }
{{#if branch}}
apollo-router-scaffold = { git="https://github.com/apollographql/router.git", branch="{{branch}}" }
{{else}}
apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.61.11-rc.1" }
apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.61.11" }
{{/if}}
{{/if}}
anyhow = "1.0.58"
Expand Down
4 changes: 2 additions & 2 deletions apollo-router/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "apollo-router"
version = "1.61.11-rc.1"
version = "1.61.11"
authors = ["Apollo Graph, Inc. <packages@apollographql.com>"]
repository = "https://github.com/apollographql/router/"
documentation = "https://docs.rs/apollo-router"
Expand Down Expand Up @@ -60,7 +60,7 @@ ci = []
access-json = "0.1.0"
anyhow = "1.0.86"
apollo-compiler.workspace = true
apollo-federation = { path = "../apollo-federation", version = "=1.61.11-rc.1" }
apollo-federation = { path = "../apollo-federation", version = "=1.61.11" }
arc-swap = "1.6.0"
async-channel = "1.9.0"
async-compression = { version = "0.4.6", features = [
Expand Down
2 changes: 1 addition & 1 deletion dockerfiles/tracing/docker-compose.jaeger.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ services:
apollo-router:
container_name: apollo-router
#build: ./router
image: ghcr.io/apollographql/router:v1.61.11-rc.1
image: ghcr.io/apollographql/router:v1.61.11
volumes:
- ./supergraph.graphql:/etc/config/supergraph.graphql
- ./router/jaeger.router.yaml:/etc/config/configuration.yaml
Expand Down
30 changes: 15 additions & 15 deletions docs/shared/k8s-manual-config.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ kind: ServiceAccount
metadata:
name: release-name-router
labels:
helm.sh/chart: router-1.61.11-rc.1
helm.sh/chart: router-1.61.11
app.kubernetes.io/name: router
app.kubernetes.io/instance: release-name
app.kubernetes.io/version: "v1.61.11-rc.1"
app.kubernetes.io/version: "v1.61.11"
app.kubernetes.io/managed-by: Helm
---
# Source: router/templates/secret.yaml
Expand All @@ -18,10 +18,10 @@ kind: Secret
metadata:
name: "release-name-router"
labels:
helm.sh/chart: router-1.61.11-rc.1
helm.sh/chart: router-1.61.11
app.kubernetes.io/name: router
app.kubernetes.io/instance: release-name
app.kubernetes.io/version: "v1.61.11-rc.1"
app.kubernetes.io/version: "v1.61.11"
app.kubernetes.io/managed-by: Helm
data:
managedFederationApiKey: "UkVEQUNURUQ="
Expand All @@ -32,10 +32,10 @@ kind: ConfigMap
metadata:
name: release-name-router
labels:
helm.sh/chart: router-1.61.11-rc.1
helm.sh/chart: router-1.61.11
app.kubernetes.io/name: router
app.kubernetes.io/instance: release-name
app.kubernetes.io/version: "v1.61.11-rc.1"
app.kubernetes.io/version: "v1.61.11"
app.kubernetes.io/managed-by: Helm
data:
configuration.yaml: |
Expand All @@ -55,10 +55,10 @@ kind: Service
metadata:
name: release-name-router
labels:
helm.sh/chart: router-1.61.11-rc.1
helm.sh/chart: router-1.61.11
app.kubernetes.io/name: router
app.kubernetes.io/instance: release-name
app.kubernetes.io/version: "v1.61.11-rc.1"
app.kubernetes.io/version: "v1.61.11"
app.kubernetes.io/managed-by: Helm
spec:
type: ClusterIP
Expand All @@ -81,10 +81,10 @@ kind: Deployment
metadata:
name: release-name-router
labels:
helm.sh/chart: router-1.61.11-rc.1
helm.sh/chart: router-1.61.11
app.kubernetes.io/name: router
app.kubernetes.io/instance: release-name
app.kubernetes.io/version: "v1.61.11-rc.1"
app.kubernetes.io/version: "v1.61.11"
app.kubernetes.io/managed-by: Helm


Expand All @@ -103,10 +103,10 @@ spec:
annotations:
kubectl.kubernetes.io/default-container: router
labels:
helm.sh/chart: router-1.61.11-rc.1
helm.sh/chart: router-1.61.11
app.kubernetes.io/name: router
app.kubernetes.io/instance: release-name
app.kubernetes.io/version: "v1.61.11-rc.1"
app.kubernetes.io/version: "v1.61.11"
app.kubernetes.io/managed-by: Helm
spec:
serviceAccountName: release-name-router
Expand All @@ -117,7 +117,7 @@ spec:
- name: router
securityContext:
{}
image: "ghcr.io/apollographql/router:v1.61.11-rc.1"
image: "ghcr.io/apollographql/router:v1.61.11"
imagePullPolicy: IfNotPresent
args:
- --hot-reload
Expand Down Expand Up @@ -171,10 +171,10 @@ kind: Pod
metadata:
name: "release-name-router-test-connection"
labels:
helm.sh/chart: router-1.61.11-rc.1
helm.sh/chart: router-1.61.11
app.kubernetes.io/name: router
app.kubernetes.io/instance: release-name
app.kubernetes.io/version: "v1.61.11-rc.1"
app.kubernetes.io/version: "v1.61.11"
app.kubernetes.io/managed-by: Helm
annotations:
"helm.sh/hook": test
Expand Down
4 changes: 2 additions & 2 deletions helm/chart/router/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ type: application
# so it matches the shape of our release process and release automation.
# By proxy of that decision, this version uses SemVer 2.0.0, though the prefix
# of "v" is not included.
version: 1.61.11-rc.1
version: 1.61.11

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "v1.61.11-rc.1"
appVersion: "v1.61.11"
6 changes: 3 additions & 3 deletions helm/chart/router/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[router](https://github.com/apollographql/router) Rust Graph Routing runtime for Apollo Federation

![Version: 1.61.11-rc.1](https://img.shields.io/badge/Version-1.61.11--rc.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.61.11-rc.1](https://img.shields.io/badge/AppVersion-v1.61.11--rc.1-informational?style=flat-square)
![Version: 1.61.11](https://img.shields.io/badge/Version-1.61.11-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.61.11](https://img.shields.io/badge/AppVersion-v1.61.11-informational?style=flat-square)

## Prerequisites

Expand All @@ -11,15 +11,15 @@
## Get Repo Info

```console
helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.61.11-rc.1
helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.61.11
```

## Install Chart

**Important:** only helm3 is supported

```console
helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.61.11-rc.1 --values my-values.yaml
helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.61.11 --values my-values.yaml
```

_See [configuration](#configuration) below._
Expand Down
Loading