Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prep release: v1.61.0 #6858

Merged
merged 4 commits into from
Feb 25, 2025
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
11 changes: 0 additions & 11 deletions .changesets/config_garypen_promote_otel.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changesets/config_trevor_stabilize_local_manifests.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changesets/feat_feat_qp_dry_un.md

This file was deleted.

6 changes: 0 additions & 6 deletions .changesets/feat_remote_proxy_downloads.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changesets/fix_bnjjj_fix_6441.md

This file was deleted.

51 changes: 0 additions & 51 deletions .changesets/fix_bryn_header_propagation_or.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changesets/fix_lost_typename_attachment.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changesets/maint_tninesling_skip_disabled_dc_plugin.md

This file was deleted.

125 changes: 125 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,131 @@ 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.0] - 2025-02-25

## 🚀 Features

### Query planner dry-run option ([PR #6656](https://github.com/apollographql/router/pull/6656))

This PR adds a new `dry-run` option to the `Apollo-Expose-Query-Plan` header value that emits the query plans back to Studio for visualizations. This new value will *only* emit the query plan, and abort execution. This can be helpful for tools like `rover`, where query plan generation is needed but not full runtime, or for potentially prewarming query plan caches out of band.

```bash
curl --request POST --include \
--header 'Accept: application/json' \
--header 'Apollo-Expose-Query-Plan: dry-run' \
--url 'http://127.0.0.1:4000/' \
--data '{"query": "{ topProducts { upc name } }"}'
```

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

### Enable Remote Proxy Downloads

This enables users without direct download access to specify a remote proxy mirror location for the github download of
the Apollo Router releases.

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

## 🐛 Fixes

### Header propagation rules passthrough ([PR #6690](https://github.com/apollographql/router/pull/6690))

Header propagation contains logic to prevent headers from being propagated more than once. This was broken
in https://github.com/apollographql/router/pull/6281 which always considered a header propagated regardless if a rule
actually matched.

This PR alters the logic so that a header is marked as fixed only when it's populated.

The following will now work again:

```
headers:
all:
request:
- propagate:
named: a
rename: b
- propagate:
named: b
```

Note that defaulting a header WILL populate it, so make sure to include your defaults last in your propagation
rules.

```
headers:
all:
request:
- propagate:
named: a
rename: b
default: defaulted # This will prevent any further rule evaluation for header `b`
- propagate:
named: b
```

Instead, make sure that your headers are defaulted last:

```
headers:
all:
request:
- propagate:
named: a
rename: b
- propagate:
named: b
default: defaulted # OK
```

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

### Entity cache: fix directive conflicts in cache-control header ([Issue #6441](https://github.com/apollographql/router/issues/6441))

Unnecessary cache-control directives are created in cache-control header. The router will now filter out unnecessary values from the `cache-control` header when the request resolves. So if there's `max-age=10, no-cache, must-revalidate, no-store`, the expected value for the cache-control header would simply be `no-store`. Please see the MDN docs for justification of this reasoning: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#preventing_storing

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

### Query Planning: fix `__typename` selections in sibling typename optimization

The query planner uses an optimization technique called "sibling typename", which attaches `__typename` selections to their sibling selections so the planner won't need to plan them separately.

Previously, when there were multiple identical selections and one of them has a `__typename` attached, the query planner could pick the one without the attachment, effectively losing a `__typename` selection.

Now, the query planner favors the one with a `__typename` attached without losing the `__typename` selection.

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

## 📃 Configuration

### Promote `experimental_otlp_tracing_sampler` config to stable ([PR #6070](https://github.com/apollographql/router/pull/6070))

The router's otlp tracing sampler feature that was previously [experimental](https://www.apollographql.com/docs/resources/product-launch-stages/#experimental-features) is now [generally available](https://www.apollographql.com/docs/resources/product-launch-stages/#general-availability).

If you used its experimental configuration, you should migrate to the new configuration option:

* `telemetry.apollo.experimental_otlp_tracing_sampler` is now `telemetry.apollo.otlp_tracing_sampler`

The experimental configuration option is now deprecated. It remains functional but will log warnings.

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

### Promote `experimental_local_manifess` config for persisted queries to stable

The `experimental_local_manifests` PQ configuration option is being promoted to stable. This change updates the configuration option name and any references to it, as well as the related documentation. The `experimental_` usage remains valid as an alias for existing usages.

By [@trevor-scheer](https://github.com/trevor-scheer) in https://github.com/apollographql/router/pull/6564

## 🛠 Maintenance

### Reduce demand control allocations on start/reload ([PR #6754](https://github.com/apollographql/router/pull/6754))

When demand control is enabled, the router now preallocates capacity for demand control's processed schema and shrinks to fit after processing. When it's disabled, the router skips the type processing entirely to minimize startup impact.

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



# [1.60.1] - 2025-02-12

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

[[package]]
name = "apollo-federation"
version = "1.61.0-rc.0"
version = "1.61.0"
dependencies = [
"apollo-compiler",
"derive_more",
Expand Down Expand Up @@ -257,7 +257,7 @@ dependencies = [

[[package]]
name = "apollo-router"
version = "1.61.0-rc.0"
version = "1.61.0"
dependencies = [
"access-json",
"ahash",
Expand Down Expand Up @@ -422,7 +422,7 @@ dependencies = [

[[package]]
name = "apollo-router-benchmarks"
version = "1.61.0-rc.0"
version = "1.61.0"
dependencies = [
"apollo-parser",
"apollo-router",
Expand All @@ -438,7 +438,7 @@ dependencies = [

[[package]]
name = "apollo-router-scaffold"
version = "1.61.0-rc.0"
version = "1.61.0"
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.0-rc.0"
version = "1.61.0"
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.0-rc.0"
version = "1.61.0"
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.0-rc.0"
version = "1.61.0"
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.0-rc.0"
apollo-router = "1.61.0"
{{/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.0-rc.0" }
apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.61.0" }
{{/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.0-rc.0"
version = "1.61.0"
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.0-rc.0" }
apollo-federation = { path = "../apollo-federation", version = "=1.61.0" }
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.datadog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ services:

apollo-router:
container_name: apollo-router
image: ghcr.io/apollographql/router:v1.61.0-rc.0
image: ghcr.io/apollographql/router:v1.61.0
volumes:
- ./supergraph.graphql:/etc/config/supergraph.graphql
- ./router/datadog.router.yaml:/etc/config/configuration.yaml
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.0-rc.0
image: ghcr.io/apollographql/router:v1.61.0
volumes:
- ./supergraph.graphql:/etc/config/supergraph.graphql
- ./router/jaeger.router.yaml:/etc/config/configuration.yaml
Expand Down
2 changes: 1 addition & 1 deletion dockerfiles/tracing/docker-compose.zipkin.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.0-rc.0
image: ghcr.io/apollographql/router:v1.61.0
volumes:
- ./supergraph.graphql:/etc/config/supergraph.graphql
- ./router/zipkin.router.yaml:/etc/config/configuration.yaml
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.0-rc.0
version: 1.61.0

# 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.0-rc.0"
appVersion: "v1.61.0"
Loading