Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
41dfce7
Remove duplicate reqwest (#7329)
dylan-apollo Apr 23, 2025
b1fac24
Port first batch of supgraph validation tests (#7321)
conwuegb Apr 23, 2025
9deec61
chore(deps): update xtask/Cargo.lock h2 dependency (#7336)
abernix Apr 24, 2025
3afd53e
[docs] Add new page for query planning best practices (#7263)
smyrick Apr 24, 2025
36b6621
fix: terminate unused Redis connections on schema update (#7319)
carodewig Apr 24, 2025
8911be3
test(federation/composition): ported the rest of "@core/@link handlin…
duckki Apr 24, 2025
9356c2e
Add code for add_shareable and has_applied_directive (#7327)
clenfest Apr 24, 2025
af2efa1
Basic changes to connect/
naomijub Apr 24, 2025
23e580e
docs: otlp metrics exporters (#7334)
shorgi Apr 24, 2025
253a392
Removes redundant clones
naomijub Apr 24, 2025
b4829de
add const fn warning
naomijub Apr 24, 2025
81a1608
Remove const_fn warning
naomijub Apr 24, 2025
1f8046f
Apply comments
naomijub Apr 25, 2025
15c401c
Remove todo comment
naomijub Apr 25, 2025
fe5a881
Merge branch 'dev' into aggressive-linting
naomijub Apr 25, 2025
998d50a
Update apollo-federation/src/sources/connect/json_selection/parser.rs
naomijub Apr 25, 2025
9e10269
Update apollo-federation/src/sources/connect/json_selection/parser.rs
naomijub Apr 25, 2025
28fbe7f
Reformats code after suggestions
naomijub Apr 25, 2025
a241404
fix(deps): update rust crate thiserror to v2 (#7288)
renovate[bot] Apr 28, 2025
cef3f13
deps: update apollo-compiler (#7338)
goto-bus-stop Apr 28, 2025
e938110
Merge branch 'dev' into aggressive-linting
naomijub Apr 28, 2025
de75dce
Add _dd.measured to spans when agent sampling is enabled (#7344)
BrynCooke Apr 28, 2025
5164dc4
Merge branch 'dev' into aggressive-linting
naomijub Apr 28, 2025
517ec16
Fix metric `apollo.router.operations.batching.size` (#7306)
bnjjj Apr 29, 2025
788f707
Clarify coprocessor config `context: true` behaviour (#7349)
goto-bus-stop Apr 29, 2025
91c7b0a
Avoid unnecessary cloning in the deduplication plugin (#7347)
Apr 29, 2025
f9242df
release: v2.2.0 (#7330)
abernix Apr 29, 2025
3e584aa
expanded supergraph now uses join spec v0.5 so that we don't skip the…
lennyburdette Apr 29, 2025
a53ab9a
make use of new build image when building the router (#7355)
Apr 29, 2025
8797f7a
Merge branch 'dev' into aggressive-linting
naomijub Apr 29, 2025
0b62c79
Move content negotiation to a plugin (#7316)
carodewig Apr 29, 2025
14e0cd7
Merge branch 'dev' into aggressive-linting
naomijub Apr 29, 2025
c352e15
Port batch of `subgraph_validation_tests` from federation repo (#7345)
conwuegb Apr 29, 2025
31df985
DOC-391 clarify tracing exporters configs of OTLP
shorgi Apr 29, 2025
d1601ae
edit overview
shorgi Apr 29, 2025
d18a0f0
Merge branch 'dev' into eh/DOC-391/trace-exporters
shorgi Apr 29, 2025
be8d669
docs: trace exporters (#7367)
mergify[bot] Apr 29, 2025
98c3298
Add subgraph validation for interface objects (#7317)
sachindshinde Apr 29, 2025
2631fd3
rewrite upgrade_subgraphs_if_necessary() to minimize cloning and fix …
clenfest Apr 29, 2025
0a27093
Update schema upgrader to use apollo-compiler 1.28 (#7356)
tninesling Apr 29, 2025
84d9eb7
test(federation/composition): Port subgraph validation tests (part 2)…
duckki Apr 29, 2025
3b3173e
Merge branch 'dev' into aggressive-linting
naomijub Apr 30, 2025
a099f1e
Fix clippy when run with `--all-features` (#7352)
goto-bus-stop Apr 30, 2025
6a3f165
Merge branch 'dev' into aggressive-linting
naomijub Apr 30, 2025
5579556
Move aggressive lints to connectors module
naomijub Apr 30, 2025
196d3db
temporarily ignore failing tests in dev (#7375)
clenfest Apr 30, 2025
0641225
Merge branch 'dev' into aggressive-linting
naomijub Apr 30, 2025
1a3ee16
fix-less-performant-code
naomijub Apr 30, 2025
b67cf2b
More Aggressive linting in connectors (#7342)
naomijub Apr 30, 2025
0fc51dc
docs: fix typo in distributed caching (#7358)
sam-friedman-apollo Apr 30, 2025
4a97890
docs: typo on PQ docs (#7373)
DaleSeo May 1, 2025
281eaa7
Fix router enforcement of connect spec version. (#7377)
dylan-apollo May 1, 2025
f971684
Add a test in connectors batching for handling gaps (#7328)
dylan-apollo May 1, 2025
fae7014
Remove fed1 links and reexpand after fixing federation arguments (#7374)
clenfest May 1, 2025
b30e49d
DOC-448 clarify apollo_router_session_count_active removal
shorgi May 2, 2025
86ef4f2
docs: apollo_router_session_count_active (#7385)
mergify[bot] May 2, 2025
260911c
feat(federation/composition): ported `@external` directive validation…
duckki May 2, 2025
f76377e
Remove 0.2 version checks in composition for headers & connect-on-typ…
dylan-apollo May 2, 2025
8414c23
feat(federation/composition): implemented `UNSUPPORTED_ON_INTERFACE` …
duckki May 2, 2025
3db976d
implement ->joinNotNull method (#7165)
lennyburdette May 2, 2025
09d269a
chore: remove dead code (#7391)
dariuszkuc May 2, 2025
014a175
Auto-upgrade connect 0.1 subgraphs to 0.2 in composition (#7388)
dylan-apollo May 2, 2025
f913313
telemetry: remove excessive bool from DisplayRouterResponse(refactori…
IvanGoncharov May 4, 2025
5ab063b
Simplify condition handling in coprocessor (#7320)
IvanGoncharov May 4, 2025
0dac2cb
Implement demand control directive validations (#7376)
tninesling May 5, 2025
599ed62
Remove aws-lc from dependencies (#7389)
dylan-apollo May 5, 2025
1521ee7
Account for spec aliases/imports when auto-injecting `link` spec dire…
sachindshinde May 5, 2025
3de7436
chore(federation/composition): deleted a duplicate test module `link_…
duckki May 5, 2025
d44dc0c
fix: decrease log level for JWT authentication failure (#7396)
carodewig May 5, 2025
83aea14
fix: make sure all input types end up in the expanded supergraph (#7383)
lennyburdette May 6, 2025
e1c71fd
remove apollographql/router#7383 changeset (#7401)
lennyburdette May 6, 2025
53e95ce
Revert "Add _dd.measured to spans when agent sampling is enabled" (#7…
abernix May 6, 2025
7dfcb35
fix: spans should only include path in `http.route` (#7390)
carodewig May 6, 2025
13469f7
fix: propagate client name and version modifications through telemetr…
carodewig May 6, 2025
3791e36
Manage all CI versions through mise and use binstall (backport #7393)…
abernix May 6, 2025
86097a8
prep release: v2.2.1-rc.0
abernix May 6, 2025
a9252fe
macos specific mise: we need x86_64-apple-darwin + aarch64-apple-darwin
abernix May 6, 2025
f17f8ee
Remove no-longer-necessary installation of `gh` via Orb ✨
abernix May 6, 2025
19e1e43
prep release: v2.2.1-rc.1
abernix May 6, 2025
d8c9bf0
Include inadvertently removed fetch_dependencies
abernix May 6, 2025
cc40c0a
prep release: v2.2.1
abernix May 14, 2025
1d15096
Merge tag 'v2.2.1' into v2.2.1
Aguilarjaf Jun 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
252 changes: 52 additions & 200 deletions .circleci/config.yml

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions .config/mise/config.ci-mac.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[tools]
# renovate-automation: rustc version
rust = { version = "1.85.1", targets = "x86_64-apple-darwin,aarch64-apple-darwin" }
3 changes: 3 additions & 0 deletions .config/mise/config.ci.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[tools]
"cargo:cargo-fuzz" = "0.12.0"
kubeconform = "0.6.7"
13 changes: 8 additions & 5 deletions .config/mise/config.toml
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
[tools]
# renovate-automation: rustc version
rust = "1.85.0"
rust = "1.85.1"
"aqua:cargo-bins/cargo-binstall" = "1.12.3"
"cargo:cargo-nextest" = "0.9.70"
"cargo:cargo-deny" = "0.18.2"
"cargo:cargo-edit" = "0.12.2"
"cargo:cargo-about" = "0.6.6"
"cargo:cargo-insta" = "1.38.0"
"cargo:htmlq" = "0.4.0"
"cargo:cargo-upgrades" = "2.1.1"
"cargo:cargo-watch" = "8.5.3"
"cargo:graphql_client_cli" = "0.14.0"
"cargo:cargo-llvm-cov" = "0.6.10"
"cargo:cargo-fuzz" = "0.12.0"
"cargo:typos-cli" = "1.31.1"
protoc = "21.8"
gh = "2.72.0"
helm = "3.17.3"
helm-docs = "1.14.2"
yq = "4.45.1"
jq = "1.7.1"
2 changes: 2 additions & 0 deletions .config/mise/config.windows.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[tools]
cmake = "3.31.1"
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,9 @@ dockerfiles/federation2-demo
dhat-heap.json

# env file
.env
.env

# generated fuzz/ files
fuzz/crash-*
fuzz/slow-unit-*
fuzz/timeout-*
110 changes: 110 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,116 @@

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

# [2.2.1] - 2025-05-13

## 🐛 Fixes

### Redis connection leak on schema changes ([PR #7319](https://github.com/apollographql/router/pull/7319))

The router performs a 'hot reload' whenever it detects a schema update. During this reload, it effectively instantiates a new internal router, warms it up (optional), redirects all traffic to this new router, and drops the old internal router.

This change fixes a bug in that "drop" process where the Redis connections are never told to terminate, even though the Redis client pool is dropped. This leads to an ever-increasing number of inactive Redis connections as each new schema comes in and goes out of service, which eats up memory.

The solution adds a new up-down counter metric, `apollo.router.cache.redis.connections`, to track the number of open Redis connections. This metric includes a `kind` label to discriminate between different Redis connection pools, which mirrors the `kind` label on other cache metrics (ie `apollo.router.cache.hit.time`).

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

### Propagate client name and version modifications through telemetry ([PR #7369](https://github.com/apollographql/router/pull/7369))

The router accepts modifications to the client name and version (`apollo::telemetry::client_name` and `apollo::telemetry::client_version`), but those modifications are not currently propagated through the telemetry layers to update spans and traces.

This PR moves where the client name and version are bound to the span, so that the modifications from plugins **on the `router` service** are propagated.

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

### Progressive overrides are not disabled when connectors are used ([PR #7351](https://github.com/apollographql/router/pull/7351))

Prior to this fix, introducing a connector disabled the progressive override plugin.

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

### Avoid unnecessary cloning in the deduplication plugin ([PR #7347](https://github.com/apollographql/router/pull/7347))

The deduplication plugin always cloned responses, even if there were not multiple simultaneous requests that would benefit from the cloned response.

We now check to see if deduplication will provide a benefit before we clone the subgraph response.

There was also an undiagnosed race condition which meant that a notification could be missed. This would have resulted in additional work being performed as the missed notification would have led to another subgraph request.

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

### Spans should only include path in `http.route` ([PR #7390](https://github.com/apollographql/router/pull/7390))

Per the [OpenTelemetry spec](https://opentelemetry.io/docs/specs/semconv/attributes-registry/http/#http-route), the `http.route` should only include "the matched route, that is, the path template used in the format used by the respective server framework."

The router currently sends the full URI in `http.route`, which can be high cardinality (ie `/graphql?operation=one_of_many_values`). After this change, the router will only include the path (`/graphql`).

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

### Decrease log level for JWT authentication failure ([PR #7396](https://github.com/apollographql/router/pull/7396))

A recent change inadvertently increased the log level of JWT authentication failures from `info` to `error`. This reverts that change returning it to the previous behavior.

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

### Avoid fractional decimals when generating `apollo.router.operations.batching.size` metrics for GraphQL request batch sizes ([PR #7306](https://github.com/apollographql/router/pull/7306))

Corrects the calculation of the `apollo.router.operations.batching.size` metric to reflect accurate batch sizes rather than occasionally returning fractional numbers.

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

## 📃 Configuration

### Log warnings for deprecated coprocessor `context` configuration usage ([PR #7349](https://github.com/apollographql/router/pull/7349))

`context: true` is an alias for `context: deprecated` but should not be used. The router now logs a runtime warning on startup if you do use it.

Instead of:

```yaml
coprocessor:
supergraph:
request:
context: true # ❌
```

Explicitly use `deprecated` or `all`:

```yaml
coprocessor:
supergraph:
request:
context: deprecated # ✅
```

See [the 2.x upgrade guide](https://www.apollographql.com/docs/graphos/routing/upgrade/from-router-v1#context-keys-for-coprocessors) for more detailed upgrade steps.

By [@goto-bus-stop](https://github.com/goto-bus-stop) in https://github.com/apollographql/router/pull/7349

## 🛠 Maintenance

### Linux: Compatibility with glibc 2.28 or newer ([PR #7355](https://github.com/apollographql/router/pull/7355))

The default build images provided in our CI environment have a relatively modern version of `glibc` (2.35). This means that on some distributions, notably those based around RedHat, it wasn't possible to use our binaries since the version of `glibc` was older than 2.35.

We now maintain a build image which is based on a distribution with `glibc` 2.28. This is old enough that recent releases of either of the main Linux distribution families (Debian and RedHat) can make use of our binary releases.

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

### Reject `@skip`/`@include` on subscription root fields in validation ([PR #7338](https://github.com/apollographql/router/pull/7338))

This implements a [GraphQL spec RFC](https://github.com/graphql/graphql-spec/pull/860), rejecting subscriptions in validation that can be invalid during execution.

By [@goto-bus-stop](https://github.com/goto-bus-stop) in https://github.com/apollographql/router/pull/7338

## 📚 Documentation

### Query planning best practices ([PR #7263](https://github.com/apollographql/router/pull/7263))

Added a new page under Routing docs about [Query Planning Best Practices](https://www.apollographql.com/docs/graphos/routing/query-planning/query-planning-best-practices).

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

# [2.2.0] - 2025-04-28

## 🚀 Features
Expand Down
Loading