Skip to content
Merged
Show file tree
Hide file tree
Changes from 137 commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
93050d4
FLEET-19 Update filter and add new dependencies
jonathanrainer Oct 15, 2024
107d37d
FLEET-19 Add initial take on Fleet Detection Plugin
jonathanrainer Oct 15, 2024
fefd8a4
FLEET-19 Fixing CI with new schema generation
jonathanrainer Nov 6, 2024
f600f29
FLEET-19 Use correct metrics form
jonathanrainer Oct 28, 2024
aaa789d
FLEET-19 Implement new `activate` hook
jonathanrainer Nov 7, 2024
e3e5c24
FLEET-19 Move to gauges
jonathanrainer Nov 7, 2024
4bd425c
FLEET-19 Turn off Fleet Detection if APOLLO_TELEMETRY_DISABLED is det…
jonathanrainer Nov 8, 2024
245aad6
FLEET-19 Add CHANGELOG Entry
jonathanrainer Nov 8, 2024
c1ec7c7
FLEET-19 Get rid of unwraps
jonathanrainer Nov 12, 2024
1730506
This commit docs a few things
Nov 15, 2024
533aae7
plugins/fleet_detector: add schema and persisted_queries gauges
loshz Nov 19, 2024
c3f75ce
add comments
loshz Nov 19, 2024
64adb53
add gauge store options
loshz Nov 21, 2024
56a49b2
Merge branch '1.58.0' into dev
abernix Nov 21, 2024
62b4a75
Context test rewriter assertion (#6319)
TylerBloom Nov 21, 2024
78a3cfc
fix gauge attributes list
loshz Nov 22, 2024
7be0703
fix lint issues
loshz Nov 22, 2024
dc0426c
chore(federation): add unit tests and documentation for conditions ha…
goto-bus-stop Nov 22, 2024
9a8c734
add SchemaState
loshz Nov 22, 2024
5c5a604
fix stream map closure
loshz Nov 22, 2024
894e429
fix deref addrof
loshz Nov 22, 2024
214b2e4
docs: router setup for Datadog (#6008)
shorgi Nov 22, 2024
6037663
fix(telemetry): fix supergraph query selector (#6324)
bnjjj Nov 25, 2024
00640a8
plugin: add launch_id
loshz Nov 25, 2024
9842d32
fix type cast
loshz Nov 25, 2024
1d469a1
fix plugin types
loshz Nov 25, 2024
e73e94f
Allow non-trivial root __typename-only queries when introspection is …
SimonSapin Nov 25, 2024
207f3b6
add launch_id to schema
loshz Nov 25, 2024
1c85fa8
fix(federation): avoid constantly recomputing conditions (#6326)
goto-bus-stop Nov 25, 2024
5d25d92
Fix YAML reference URL link in values.yaml (#6277)
lambertjosh Nov 25, 2024
5b1f7e2
compile, please
loshz Nov 26, 2024
5cda200
Fix typo in persisted query metric attribute (#6332)
goto-bus-stop Nov 26, 2024
953ff07
remove launch_id from PluginInit serde
loshz Nov 26, 2024
4cfabaf
chore(federation): Improved serialization impls (#6337)
TylerBloom Nov 26, 2024
d32a957
Enable test to look for invalid federation imports. (#6340)
clenfest Nov 27, 2024
a3fba23
Reconcile `dev` after merge to `main` for v1.58.0 (#6352)
abernix Nov 27, 2024
b7320f6
fix(dual-query-planner): sort directives before comparison in semanti…
duckki Nov 27, 2024
c5e1246
Fix the query hashing algorithm (#6205)
Geal Nov 29, 2024
fd2974b
chore(deps): update dependency slack to v4.15.0 (#5681)
renovate[bot] Nov 29, 2024
81b3d12
chore(deps): update dependency typescript to v5.7.2 (#5851)
renovate[bot] Nov 29, 2024
92e6847
tests: Fix snapshots after #6205 was merged (#6367)
IvanGoncharov Nov 30, 2024
900f305
chore(deps): update cimg/redis docker tag to v7.4.1 (#6364)
renovate[bot] Nov 30, 2024
cca0cd4
chore(deps): update dependency gh to v2.6.0 (#6365)
renovate[bot] Nov 30, 2024
c8124eb
chore(deps): update actions/checkout digest to 11bd719 (#6363)
renovate[bot] Nov 30, 2024
7c29b84
chore(deps): update peter-evans/create-pull-request action to v7 (#6366)
renovate[bot] Nov 30, 2024
7eb9b0b
chore(deps): update openzipkin/zipkin docker tag to v3.4.2 (#6371)
renovate[bot] Dec 2, 2024
268aa99
plugins/fleet_detector: add instance gauge
nmoutschen Dec 2, 2024
53da9c8
chore(fleet_detector): store magic number as const
nmoutschen Dec 2, 2024
d7c8d72
plugins/fleet_detector: add instance gauge (#6374)
nmoutschen Dec 2, 2024
9a8eef3
Merge branch 'dev' into jr/task/FLEET-19
jonathanrainer Dec 2, 2024
8f9c975
FLEET-19 Update CHANGELOG
jonathanrainer Dec 2, 2024
f640805
FLEET-19 Fix environment variable gate
jonathanrainer Dec 2, 2024
f2ee42b
FLEET-19 Update deny list for public metrics
jonathanrainer Dec 2, 2024
e8cf512
Add Fleet Detection Plugin (#6151)
jonathanrainer Dec 3, 2024
a9e83aa
add new selector for retry (#6351)
bnjjj Dec 3, 2024
59d8cc9
docs(telemetry): add missing subgraph selector (#6327)
bnjjj Dec 3, 2024
89795a7
Migrate monotonic counter metrics to `u64_counter!` (#6350)
goto-bus-stop Dec 3, 2024
dcb192c
add better migration for deprecated metric apollo_router_http_request…
bnjjj Dec 3, 2024
21d78cc
plugins/fleet_detector: detect if the Router was deployed using the o…
nmoutschen Dec 4, 2024
0b3cdb7
chore: fix comments
nmoutschen Dec 4, 2024
85f99f1
remove fix for experimental_retry (#6392)
bnjjj Dec 4, 2024
89da9dc
Merge branch 'dev' into loshz/FLEET-22
loshz Dec 4, 2024
430c4e4
add changeset
loshz Dec 4, 2024
f8c7e3c
feat: connect launch ID
nmoutschen Dec 4, 2024
21f46ea
Merge branch 'loshz/FLEET-22' into nicolas/FLEET-22
nmoutschen Dec 4, 2024
aa6317e
feat: connect launch ID (#6394)
nmoutschen Dec 4, 2024
3c78759
Merge branch 'loshz/FLEET-22' of github.com:apollographql/router into…
loshz Dec 4, 2024
188e8de
update changeset
loshz Dec 4, 2024
c5e43ea
fix from type
loshz Dec 4, 2024
ec62b5c
fix schema source from
loshz Dec 4, 2024
2a1492f
update hashbrown dep for compliance (#6395)
lrlna Dec 4, 2024
a792192
Merge branch 'dev' into loshz/FLEET-22
loshz Dec 4, 2024
297678d
Fix coprocessor empty body panic
Dec 4, 2024
958acf3
Merge branch 'dev' into bryn/coprocessor-empty-body-panic
BrynCooke Dec 4, 2024
ce37c70
Drop experimental reuse fragments optimization from RS QP (#6354)
dariuszkuc Dec 5, 2024
47f7528
rename metric
loshz Dec 5, 2024
770d790
Merge branch 'dev' into loshz/FLEET-22
loshz Dec 5, 2024
0d649c3
chore(deps): update dependency slack to v5 (#6370)
renovate[bot] Dec 5, 2024
0ce2cf1
fix(deps): update dependency express to v4.20.0 [security] (#6021)
renovate[bot] Dec 5, 2024
cfbe80f
chore(deps): update openzipkin/zipkin docker tag to v3.4.3 (#6405)
renovate[bot] Dec 5, 2024
c4a24d3
[FOUN-575] persisted queries have client names
glasser Oct 25, 2024
d40678f
Get client name for more places; tests
glasser Nov 27, 2024
6bfdef9
checkpoint
glasser Nov 27, 2024
e3fb191
remove old test
glasser Nov 27, 2024
09f7715
undo no-longer-necessary changes
glasser Nov 27, 2024
2b0befa
Fix unit tests
glasser Nov 27, 2024
9506cd6
carg fmt
glasser Nov 27, 2024
f0d53cd
lint
glasser Nov 27, 2024
3b4e9ca
unit tests
glasser Dec 3, 2024
92172c9
Docs and changeset
glasser Dec 4, 2024
54e79ca
update link in docs
glasser Dec 5, 2024
8b1fe2a
[ROUTER-890] Ability to skip safelisting enforcement via plugin
glasser Dec 5, 2024
18eae6e
Merge branch 'dev' into abernix/reconcile-dev-after-1.58.1
abernix Dec 6, 2024
78b9b16
Update schemaAwareHash in snapshot tests after merging main into dev
SimonSapin Dec 6, 2024
88e7bb1
Fix coprocessor empty body panic (#6398)
BrynCooke Dec 6, 2024
215ca5f
Reconcile dev after merge to main for v1.58.1 (#6412)
IvanGoncharov Dec 6, 2024
d169b2f
Remove catch_unwind wrapper around the rust query planner (#6397)
lrlna Dec 6, 2024
799da70
Cleanup unused bypass QP functionality (#6399)
dariuszkuc Dec 6, 2024
eb2bca6
persisted queries have client names (#6198)
BrynCooke Dec 6, 2024
9ef8296
fix build after merges (#6413)
dariuszkuc Dec 6, 2024
a201cf5
Distributed query plan cache keys include the Router version number (…
SimonSapin Dec 6, 2024
3296078
refactor(dual-query-planner): moved semantic diff out into its own mo…
duckki Dec 6, 2024
b998167
Use the new query planner by default (#6360)
SimonSapin Dec 7, 2024
6ef4187
plugins/fleet_detector: detect if the Router was deployed using the o…
nmoutschen Dec 9, 2024
0906863
Merge branch 'dev' into loshz/FLEET-22
loshz Dec 9, 2024
69ca289
plugins/fleet_detector: add schema and persisted_queries gauges (#6283)
loshz Dec 9, 2024
b42ead6
[ROUTER-890] Ability to skip safelisting enforcement via plugin (#6403)
BrynCooke Dec 9, 2024
c2745a9
plugins/fleet_detector: detect request/response sizes
nmoutschen Dec 9, 2024
e735ebf
Merge branch 'dev' into nicolas/FLEET-20
nmoutschen Dec 9, 2024
7d93ccc
Make changes to address new RUSTSEC details
Dec 9, 2024
e7d1e28
Add doc comment to `services::external` (#6345)
goto-bus-stop Dec 9, 2024
663082c
Merge branch 'dev' into garypen/prevent-deny-complaints
Dec 9, 2024
7955b24
Try to fix the Cargo.lock file
Dec 9, 2024
e928145
Make changes to address new RUSTSEC details (#6417)
Dec 9, 2024
3c62d57
docs: combine client awareness and enforcement docs (#6414)
Meschreiber Dec 9, 2024
cf7a42d
Ensure cost directives are picked up when not explicitly imported (#6…
tninesling Dec 9, 2024
89432b6
Improve error messaging when QP encounters unmergeable fields (#6420)
sachindshinde Dec 9, 2024
12cca19
Merge branch 'dev' into nicolas/FLEET-20
nmoutschen Dec 10, 2024
5d87513
chore: address feedback
nmoutschen Dec 10, 2024
3334513
Merge branch 'nicolas/FLEET-20' of github.com:apollographql/router in…
nmoutschen Dec 10, 2024
5f72471
fix cargo about (#6423)
bnjjj Dec 10, 2024
f6ede7f
tests: add unit tests to fleet_detector
nmoutschen Dec 10, 2024
e5a7fc0
Merge branch 'dev' into nicolas/FLEET-20
nmoutschen Dec 10, 2024
666ccf7
chore: update subgraph.name attribute name
nmoutschen Dec 10, 2024
48a1405
Merge branch 'nicolas/FLEET-20' of github.com:apollographql/router in…
nmoutschen Dec 10, 2024
fa3ec22
plugins/fleet_detector: detect request/response sizes (#6415)
nmoutschen Dec 10, 2024
bb61985
chore(federation): Improve backwards compatibility of `FederationErro…
TylerBloom Dec 10, 2024
96289d4
Update `ensure!` macro to return its error (#6432)
sachindshinde Dec 10, 2024
f844b4e
fix(federation): convert query graph node's type for fetch dependency…
duckki Dec 11, 2024
6b43a2f
Miscellaneous type-conditioned fetching fixes (#6434)
sachindshinde Dec 11, 2024
15b72a4
fix(semantic-diff): fixed false mismatches with type conditioned fetc…
duckki Dec 11, 2024
d9336e4
refactor(semantic-diff): changed some wording in path tests (#6436)
duckki Dec 11, 2024
2caf265
prep release: v1.59.0-rc.0
bnjjj Dec 11, 2024
3969e07
General availability of native query planner - docs and changelog (#6…
lrlna Dec 12, 2024
99b57b0
Apply suggestions from code review
bnjjj Dec 16, 2024
f8bb276
Apply suggestions from code review
BrynCooke Dec 16, 2024
5a2b33c
Apply suggestions from code review
BrynCooke Dec 16, 2024
ef1a282
Delete .changesets/docs_fix_helm_yaml_config_link.md
BrynCooke Dec 16, 2024
d15894e
Update .changesets/breaking_drop_reuse_fragment.md
BrynCooke Dec 16, 2024
bd8ea14
prep release: v1.59.0
BrynCooke Dec 17, 2024
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
7 changes: 7 additions & 0 deletions .changesets/breaking_drop_reuse_fragment.md
Comment thread
BrynCooke marked this conversation as resolved.
Outdated
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
### Drop experimental reuse fragment query optimization option ([PR #6353](https://github.com/apollographql/router/pull/6353))
Comment thread
BrynCooke marked this conversation as resolved.
Outdated

Drop support for the experimental reuse fragment query optimization. This implementation was not only very slow but also very buggy due to its complexity.

Auto generation of fragments is a much simpler (and faster) algorithm that in most cases produces better results. Fragment auto generation is the default optimization since v1.58 release.

By [@dariuszkuc](https://github.com/dariuszkuc) in https://github.com/apollographql/router/pull/6353
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
### More consistent attributes on `apollo.router.operations.persisted_queries` metric ([PR #6403](https://github.com/apollographql/router/pull/6403))

Version 1.28.1 added several *unstable* metrics, including `apollo.router.operations.persisted_queries`.

When an operation is rejected, Router includes a `persisted_queries.safelist.rejected.unknown` attribute on the metric. Previously, this attribute had the value `true` if the operation is logged (via `log_unknown`), and `false` if the operation is not logged. (The attribute is not included at all if the operation is not rejected.) This appears to have been a mistake, as you can also tell whether it is logged via the `persisted_queries.logged` attribute.

Router now only sets this attribute to true, and never to false. This may be a breaking change for your use of metrics; note that these metrics should be treated as unstable and may change in the future.
Comment thread
BrynCooke marked this conversation as resolved.
Outdated

By [@glasser](https://github.com/glasser) in https://github.com/apollographql/router/pull/6403
8 changes: 8 additions & 0 deletions .changesets/config_simon_router_version_in_cache_key.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
### Add version number to distributed query plan cache keys ([PR #6406](https://github.com/apollographql/router/pull/6406))

The router now includes its version number in the cache keys of distributed cache entries. Given that a new router release may change how query plans are generated or represented, including the router version in a cache key enables the router to use separate cache entries for different versions.

If you have enabled [distributed query plan caching](https://www.apollographql.com/docs/router/configuration/distributed-caching/#distributed-query-plan-caching), expect additional processing for your cache to update for this router release.


By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/6406
5 changes: 5 additions & 0 deletions .changesets/docs_fix_helm_yaml_config_link.md
Comment thread
BrynCooke marked this conversation as resolved.
Outdated
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
### docs: Updates the router YAML config reference URL ([PR #6277](https://github.com/apollographql/router/pull/6277))

Updates the router YAML config URL in the Helm chart values.yaml file to the new location

By [@lambertjosh](https://github.com/lambertjosh) in https://github.com/apollographql/router/pull/6277
6 changes: 6 additions & 0 deletions .changesets/feat_feat_fleet_detector_add_schema_metrics.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
### Add fleet awareness schema metric ([PR #6283](https://github.com/apollographql/router/pull/6283))


The router now supports the `apollo.router.instance.schema` metric for its `fleet_detector` plugin. It has two attributes: `schema_hash` and `launch_id`.

By [@loshz](https://github.com/loshz) and [@nmoutschen](https://github.com/nmoutschen) in https://github.com/apollographql/router/pull/6283
16 changes: 16 additions & 0 deletions .changesets/feat_glasser_pq_client_name.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
### Support client name for persisted query lists ([PR #6198](https://github.com/apollographql/router/pull/6198))

The persisted query manifest fetched from Apollo Uplink can now contain a `clientName` field in each operation. Two operations with the same `id` but different `clientName` are considered to be distinct operations, and they may have distinct bodies.

The router resolves the client name by taking the first from the following that exists:
- Reading the `apollo_persisted_queries::client_name` context key that may be set by a `router_service` plugin
- Reading the HTTP header named by `telemetry.apollo.client_name_header`, which defaults to `apollographql-client-name`


If a client name can be resolved for a request, the router first tries to find a persisted query with the specified ID and the resolved client name.

If there is no operation with that ID and client name, or if a client name cannot be resolved, the router tries to find a persisted query with the specified ID and no client name specified. This means that existing PQ lists that don't contain client names will continue to work.

To learn more, go to [persisted queries](https://www.apollographql.com/docs/graphos/routing/security/persisted-queries#apollo_persisted_queriesclient_name) docs.

By [@glasser](https://github.com/glasser) in https://github.com/apollographql/router/pull/6198
9 changes: 9 additions & 0 deletions .changesets/feat_glasser_pq_safelist_override.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
### Ability to skip persisted query list safelisting enforcement via plugin ([PR #6403](https://github.com/apollographql/router/pull/6403))

If safelisting is enabled, a `router_service` plugin can skip enforcement of the safelist (including the `require_id` check) by adding the key `apollo_persisted_queries::safelist::skip_enforcement` with value `true` to the request context.

> Note: this doesn't affect the logging of unknown operations by the `persisted_queries.log_unknown` option.

In cases where an operation would have been denied but is allowed due to the context key existing, the attribute `persisted_queries.safelist.enforcement_skipped` is set on the `apollo.router.operations.persisted_queries` metric with value `true`.

By [@glasser](https://github.com/glasser) in https://github.com/apollographql/router/pull/6403
10 changes: 10 additions & 0 deletions .changesets/feat_jr_add_fleet_awareness_plugin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
### Add fleet awareness plugin ([PR #6151](https://github.com/apollographql/router/pull/6151))

A new `fleet_awareness` plugin has been added that reports telemetry to Apollo about the configuration and deployment of the router.

The reported telemetry include CPU and memory usage, CPU frequency, and other deployment characteristics such as operating system and cloud provider. For more details, along with a full list of data captured and how to opt out, go to our
[data privacy policy](https://www.apollographql.com/docs/graphos/reference/data-privacy).


By [@jonathanrainer](https://github.com/jonathanrainer), [@nmoutschen](https://github.com/nmoutschen), [@loshz](https://github.com/loshz)
in https://github.com/apollographql/router/pull/6151
37 changes: 37 additions & 0 deletions .changesets/feat_native_query_planner_ga.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
### General availability of native query planner

The router's native, Rust-based, query planner is now [generally available](https://www.apollographql.com/docs/graphos/reference/feature-launch-stages#general-availability) and enabled by default.

The native query planner achieves better performance for a variety of graphs. In our tests, we observe:

* 10x median improvement in query planning time (observed via `apollo.router.query_planning.plan.duration`)
* 2.9x improvement in router’s CPU utilization
* 2.2x improvement in router’s memory usage

> Note: you can expect generated plans and subgraph operations in the native
query planner to have slight differences when compared to the legacy, JavaScript-based query planner. We've ascertained these differences to be semantically insignificant, based on comparing ~2.5 million known unique user operations in GraphOS as well as
comparing ~630 million operations across actual router deployments in shadow
mode for a four month duration.

The native query planner supports Federation v2 supergraphs. If you are using Federation v1 today, see our [migration guide](https://www.apollographql.com/docs/graphos/reference/migration/to-federation-version-2) on how to update your composition build step and subgraph changes are typically not needed.

The legacy, JavaScript, query planner is deprecated in this release, but you can still switch
back to it if you are still using Federation v1 supergraph:

```
experimental_query_planner_mode: legacy
```

> Note: The subgraph operations generated by the query planner are not
guaranteed consistent release over release. We strongly recommend against
relying on the shape of planned subgraph operations, as new router features and
optimizations will continuously affect it.

By [@sachindshinde](https://github.com/sachindshinde),
[@goto-bus-stop](https://github.com/goto-bus-stop),
[@duckki](https://github.com/duckki),
[@TylerBloom](https://github.com/TylerBloom),
[@SimonSapin](https://github.com/SimonSapin),
[@dariuszkuc](https://github.com/dariuszkuc),
[@lrlna](https://github.com/lrlna), [@clenfest](https://github.com/clenfest),
and [@o0Ignition0o](https://github.com/o0Ignition0o).
16 changes: 16 additions & 0 deletions .changesets/fix_address_dentist_buyer_frown.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
### Fix coprocessor empty body object panic ([PR #6398](https://github.com/apollographql/router/pull/6398))

Previously, the router would panic if a coprocessor responds with an empty body object at the supergraph stage:

```json
{
... // other fields
"body": {} // empty object
}
```

This has been fixed in this release.

> Note: the previous issue didn't affect coprocessors that responded with formed responses.

By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/6398
55 changes: 55 additions & 0 deletions .changesets/fix_bnjjj_fix_880.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
### Fix telemetry instrumentation using supergraph query selector ([PR #6324](https://github.com/apollographql/router/pull/6324))

Previously, router telemetry instrumentation that used query selectors could log errors with messages such as `this is a bug and should not happen`.

These errors have now been fixed, and configurations with query selectors such as the following work properly:

```yaml title=router.yaml
telemetry:
exporters:
metrics:
common:
views:
# Define a custom view because operation limits are different than the default latency-oriented view of OpenTelemetry
- name: oplimits.*
aggregation:
histogram:
buckets:
- 0
- 5
- 10
- 25
- 50
- 100
- 500
- 1000
instrumentation:
instruments:
supergraph:
oplimits.aliases:
value:
query: aliases
type: histogram
unit: number
description: "Aliases for an operation"
oplimits.depth:
value:
query: depth
type: histogram
unit: number
description: "Depth for an operation"
oplimits.height:
value:
query: height
type: histogram
unit: number
description: "Height for an operation"
oplimits.root_fields:
value:
query: root_fields
type: histogram
unit: number
description: "Root fields for an operation"
```

By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/6324
6 changes: 6 additions & 0 deletions .changesets/fix_bnjjj_fix_retry_metric.md

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bnjjj #6338 has no files changed, should this changeset be removed?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
### Fix and test experimental_retry ([PR #6338](https://github.com/apollographql/router/pull/6338))

Fix the behavior of `experimental_retry` and make sure both the feature and metrics are working.
An entry in the context was also added, which would be useful later to implement a new standard attribute and selector for advanced telemetry.

By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/6338
8 changes: 8 additions & 0 deletions .changesets/fix_fix_query_hashing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
### Fix query hashing algorithm ([PR #6205](https://github.com/apollographql/router/pull/6205))

> [!IMPORTANT]
> If you have enabled [distributed query plan caching](https://www.apollographql.com/docs/router/configuration/distributed-caching/#distributed-query-plan-caching), updates to the query planner in this release will result in query plan caches being regenerated rather than reused. On account of this, you should anticipate additional cache regeneration cost when updating to this router version while the new query plans come into service.

The router includes a schema-aware query hashing algorithm designed to return the same hash across schema updates if the query remains unaffected. This update enhances the algorithm by addressing various corner cases to improve its reliability and consistency.

By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/6205
6 changes: 6 additions & 0 deletions .changesets/fix_renee_quieres_queries.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
### Fix typo in persisted query metric attribute ([PR #6332](https://github.com/apollographql/router/pull/6332))

The `apollo.router.operations.persisted_queries` metric reports an attribute when a persisted query was not found.
Previously, the attribute name was `persisted_quieries.not_found`, with one `i` too many. Now it's `persisted_queries.not_found`.

By [@goto-bus-stop](https://github.com/goto-bus-stop) in https://github.com/apollographql/router/pull/6332
22 changes: 22 additions & 0 deletions .changesets/fix_tninesling_cost_name_handling.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
### Ensure cost directives are picked up when not explicitly imported ([PR #6328](https://github.com/apollographql/router/pull/6328))

With the recent composition changes, importing `@cost` results in a supergraph schema with the cost specification import at the top. The `@cost` directive itself is not explicitly imported, as it's expected to be available as the default export from the cost link. In contrast, uses of `@listSize` to translate to an explicit import in the supergraph.

Old SDL link

```
@link(
url: "https://specs.apollo.dev/cost/v0.1"
import: ["@cost", "@listSize"]
)
```

New SDL link

```
@link(url: "https://specs.apollo.dev/cost/v0.1", import: ["@listSize"])
```

Instead of using the directive names from the import list in the link, the directive names now come from `SpecDefinition::directive_name_in_schema`, which is equivalent to the change we made on the composition side.

By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/6328
14 changes: 14 additions & 0 deletions .changesets/maint_lrlna_remove_catch_unwind.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

### Remove catch_unwind wrapper around the native query planner ([PR #6397](https://github.com/apollographql/router/pull/6397))

As part of internal maintenance of the query planner, the
`catch_unwind` wrapper around the native query planner has been removed. This wrapper served as an extra safeguard for potential panics the native planner could produce. The
native query planner however no longer has any code paths that could panic. We have also
not witnessed a panic in the last four months, having processed 560 million real
user operations through the native planner.

This maintenance work also removes backtrace capture for federation errors, which
was used for debugging and is no longer necessary as we have the confidence in
the native planner's implementation.

By [@lrlna](https://github.com/lrlna) in https://github.com/apollographql/router/pull/6397
13 changes: 13 additions & 0 deletions .changesets/maint_renee_router_297_monotonic_counters.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
### Deprecate various metrics ([PR #6350](https://github.com/apollographql/router/pull/6350))

Several metrics have been deprecated in this release, in favor of OpenTelemetry-compatible alternatives:

- `apollo_router_deduplicated_subscriptions_total` - use the `apollo.router.operations.subscriptions` metric's `subscriptions.deduplicated` attribute.
- `apollo_authentication_failure_count` - use the `apollo.router.operations.authentication.jwt` metric's `authentication.jwt.failed` attribute.
- `apollo_authentication_success_count` - use the `apollo.router.operations.authentication.jwt` metric instead. If the `authentication.jwt.failed` attribute is *absent* or `false`, the authentication succeeded.
- `apollo_require_authentication_failure_count` - use the `http.server.request.duration` metric's `http.response.status_code` attribute. Requests with authentication failures have HTTP status code 401.
- `apollo_router_timeout` - this metric conflates timed-out requests from client to the router, and requests from the router to subgraphs. Timed-out requests have HTTP status code 504. Use the `http.response.status_code` attribute on the `http.server.request.duration` metric to identify timed-out router requests, and the same attribute on the `http.client.request.duration` metric to identify timed-out subgraph requests.

The deprecated metrics will continue to work in the 1.x release line.

By [@goto-bus-stop](https://github.com/goto-bus-stop) in https://github.com/apollographql/router/pull/6350
13 changes: 8 additions & 5 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ version: 2.1
# These "CircleCI Orbs" are reusable bits of configuration that can be shared
# across projects. See https://circleci.com/orbs/ for more information.
orbs:
gh: circleci/github-cli@2.3.0
slack: circleci/slack@4.12.6
gh: circleci/github-cli@2.6.0
slack: circleci/slack@5.1.1
secops: apollo/circleci-secops-orb@2.0.7

executors:
Expand All @@ -24,9 +24,9 @@ executors:
amd_linux_test: &amd_linux_test_executor
docker:
- image: cimg/base:stable
- image: cimg/redis:7.2.4
- image: cimg/redis:7.4.1
- image: jaegertracing/all-in-one:1.54.0
- image: openzipkin/zipkin:2.23.2
- image: openzipkin/zipkin:3.4.3
- image: ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:v1.17.0
resource_class: xlarge
environment:
Expand Down Expand Up @@ -376,9 +376,12 @@ commands:
- run:
name: Install cargo deny, about, edit
command: |
# Until we are able to update rustc to at least 1.81.0,
# we need special handling of the cargo-about command.
rustup install 1.83.0
cargo +1.83.0 install --locked --version 0.6.6 cargo-about
if [[ ! -f "$HOME/.cargo/bin/cargo-deny$EXECUTABLE_SUFFIX" ]]; then
cargo install --locked --version 0.14.21 cargo-deny
cargo install --locked --version 0.6.1 cargo-about
cargo install --locked --version 0.12.2 cargo-edit
cargo install --locked --version 0.12.0 cargo-fuzz
fi
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/update_apollo_protobuf.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ jobs:
Update-Protobuf-Schema:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Make changes to pull request
run: |
curl -f https://usage-reporting.api.apollographql.com/proto/reports.proto > ./apollo-router/src/plugins/telemetry/proto/reports.proto
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v6
uses: peter-evans/create-pull-request@v7
with:
commit-message: Update Apollo Protobuf schema
committer: GitHub <noreply@github.com>
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/update_uplink_schema.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
Update-Uplink-Schema:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Install Rover
run: |
curl -sSL https://rover.apollo.dev/nix/v0.14.1 | sh
Expand All @@ -19,7 +19,7 @@ jobs:
rover graph introspect https://uplink.api.apollographql.com/ | perl -pe 'chomp if eof' > ./apollo-router/src/uplink/uplink.graphql
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v6
uses: peter-evans/create-pull-request@v7
with:
commit-message: Update Uplink schema
committer: GitHub <noreply@github.com>
Expand Down
Loading