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

chore(deps): update dependency apollographql/router to v1.60.1 #2388

Merged
merged 1 commit into from
Feb 14, 2025

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Feb 7, 2025

This PR contains the following updates:

Package Update Change
apollographql/router minor v1.59.2 -> v1.60.1

Release Notes

apollographql/router (apollographql/router)

v1.60.1

Compare Source

🐛 Fixes
Header propagation rules passthrough (PR #​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 only when a header is populated then the header is marked as fixed.

The following will now work again:

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

Note that defaulting a head WILL populate a header, 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 in https://github.com/apollographql/router/pull/6690

Entity cache: fix directive conflicts in cache-control header (Issue #​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 in https://github.com/apollographql/router/pull/6543

Resolve regressions in fragment compression for certain operations (PR #​6651)

In v1.58.0 we introduced a new compression strategy for subgraph GraphQL operations to replace an older, more complicated algorithm.

While we were able to validate improvements for a majority of cases, some regressions still surfaced. To address this, we are extending it to compress more operations with the following outcomes:

  • The P99 overhead of running the new compression algorithm on the largest operations in our corpus is now just 10ms
  • In case of better compression, at P99 it shrinks the operations by 50Kb when compared to the old algorithm
  • In case of worse compression, at P99 it only adds an additional 108 bytes compared to the old algorithm, which was an acceptable trade-off versus added complexity

By @​dariuszkuc in https://github.com/apollographql/router/pull/6651

v1.60.0

Compare Source

🚀 Features
Improve BatchProcessor observability (Issue #​6558)

A new metric has been introduced to allow observation of how many spans are being dropped by an telemetry batch processor.

  • apollo.router.telemetry.batch_processor.errors - The number of errors encountered by exporter batch processors.
    • name: One of apollo-tracing, datadog-tracing, jaeger-collector, otlp-tracing, zipkin-tracing.
    • error = One of channel closed, channel full.

By observing the number of spans dropped it is possible to estimate what batch processor settings will work for you.

In addition, the log message for dropped spans will now indicate which batch processor is affected.

By @​bryncooke in https://github.com/apollographql/router/pull/6558

🐛 Fixes
Improve performance of query hashing by using a precomputed schema hash (PR #​6622)

The router now uses a simpler and faster query hashing algorithm with more predictable CPU and memory usage. This improvement is enabled by using a precomputed hash of the entire schema, rather than computing and hashing the subset of types and fields used by each query.

For more details on why these design decisions were made, please see the PR description

By @​IvanGoncharov in https://github.com/apollographql/router/pull/6622

Truncate invalid error paths (PR #​6359)

This fix addresses an issue where the router was silently dropping subgraph errors that included invalid paths.

According to the GraphQL Specification an error path must point to a response field:

If an error can be associated to a particular field in the GraphQL result, it must contain an entry with the key path that details the path of the response field which experienced the error.

The router now truncates the path to the nearest valid field path if a subgraph error includes a path that can't be matched to a response field,

By @​IvanGoncharov in https://github.com/apollographql/router/pull/6359

Eagerly init subgraph operation for subscription primary nodes (PR #​6509)

When subgraph operations are deserialized, typically from a query plan cache, they are not automatically parsed into a full document. Instead, each node needs to initialize its operation(s) prior to execution. With this change, the primary node inside SubscriptionNode is initialized in the same way as other nodes in the plan.

By @​tninesling in https://github.com/apollographql/router/pull/6509

Fix increased memory usage in sysinfo since Router 1.59.0 (PR #​6634)

In version 1.59.0, Apollo Router started using the sysinfo crate to gather metrics about available CPUs and RAM. By default, that crate uses rayon internally to parallelize its handling of system processes. In turn, rayon creates a pool of long-lived threads.

In a particular benchmark on a 32-core Linux server, this caused resident memory use to increase by about 150 MB. This is likely a combination of stack space (which only gets freed when the thread terminates) and per-thread space reserved by the heap allocator to reduce cross-thread synchronization cost.

This regression is now fixed by:

  • Disabling sysinfo’s use of rayon, so the thread pool is not created and system processes information is gathered in a sequential loop.
  • Making sysinfo not gather that information in the first place since Router does not use it.

By @​SimonSapin in https://github.com/apollographql/router/pull/6634

Optimize demand control lookup (PR #​6450)

The performance of demand control in the router has been optimized.

Previously, demand control could reduce router throughput due to its extra processing required for scoring.

This fix improves performance by shifting more data to be computed at plugin initialization and consolidating lookup queries:

  • Cost directives for arguments are now stored in a map alongside those for field definitions
  • All precomputed directives are bundled into a struct for each field, along with that field's extended schema type. This reduces 5 individual lookups to a single lookup.
  • Response scoring was looking up each field's definition twice. This is now reduced to a single lookup.

By @​tninesling in https://github.com/apollographql/router/pull/6450

Fix missing Content-Length header in subgraph requests (Issue #​6503)

A change in 1.59.0 caused the Router to send requests to subgraphs without a Content-Length header, which would cause issues with some GraphQL servers that depend on that header.

This solves the underlying bug and reintroduces the Content-Length header.

By @​nmoutschen in https://github.com/apollographql/router/pull/6538

🛠 Maintenance
Remove the legacy query planner (PR #​6418)

The legacy query planner has been removed in this release. In the previous release, router v1.58, it was no longer used by default but was still available through the experimental_query_planner_mode configuration key. That key is now removed.

Also removed are configuration keys which were only relevant to the legacy planner:

  • supergraph.query_planning.experimental_parallelism: the new planner can always use available parallelism.
  • supergraph.experimental_reuse_query_fragments: this experimental algorithm that attempted to
    reuse fragments from the original operation while forming subgraph requests is no longer present. Instead, by default new fragment definitions are generated based on the shape of the subgraph operation.

By @​SimonSapin in https://github.com/apollographql/router/pull/6418

Migrate various metrics to OTel instruments (PR #​6476, PR #​6356, PR #​6539)

Various metrics using our legacy mechanism based on the tracing crate are migrated to OTel instruments.

By @​goto-bus-stop in https://github.com/apollographql/router/pull/6476, https://github.com/apollographql/router/pull/6356, https://github.com/apollographql/router/pull/6539

📚 Documentation
Add instrumentation configuration examples (PR #​6487)

The docs for router telemetry have new example configurations for common use cases for selectors and condition.

By @​shorgi in https://github.com/apollographql/router/pull/6487

🧪 Experimental
Remove experimental_retry option (PR #​6338)

The experimental_retry option has been removed due to its limited use and functionality during its experimental phase.

By @​bnjjj in https://github.com/apollographql/router/pull/6338


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot requested a review from a team as a code owner February 7, 2025 14:02
@svc-apollo-docs
Copy link
Collaborator

svc-apollo-docs commented Feb 7, 2025

✅ Docs preview has no changes

The preview was not built because there were no changes.

Build ID: a0bce9e83d38c28dd90e9e73

@renovate renovate bot force-pushed the renovate/apollographql-router-1.x branch from caf7b5b to 967d742 Compare February 10, 2025 09:23
@jonathanrainer jonathanrainer added this to the vNext milestone Feb 10, 2025
@renovate renovate bot force-pushed the renovate/apollographql-router-1.x branch 5 times, most recently from 1cff65a to 5621d1a Compare February 14, 2025 00:14
@renovate renovate bot changed the title chore(deps): update dependency apollographql/router to v1.60.0 chore(deps): update dependency apollographql/router to v1.60.1 Feb 14, 2025
@renovate renovate bot force-pushed the renovate/apollographql-router-1.x branch 2 times, most recently from 1cb3ae7 to 580e0f3 Compare February 14, 2025 07:56
@renovate renovate bot force-pushed the renovate/apollographql-router-1.x branch from 580e0f3 to 7e2b926 Compare February 14, 2025 13:08
Copy link
Contributor

@jonathanrainer jonathanrainer left a comment

Choose a reason for hiding this comment

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

LGTM

@jonathanrainer jonathanrainer merged commit f769c1c into main Feb 14, 2025
32 checks passed
@jonathanrainer jonathanrainer deleted the renovate/apollographql-router-1.x branch February 14, 2025 13:22
@jonathanrainer jonathanrainer mentioned this pull request Feb 17, 2025
jonathanrainer added a commit that referenced this pull request Feb 17, 2025
# [0.27.1] - 2025-02-17

> **If using Rover with Connectors,** you will need to specify
`APOLLO_ROVER_DEV_ROUTER_VERSION=2.0.0-preview.X` when using `rover dev`

## 🐛 Fixes

- **Create output parent directories if they do not already exist -
@dotdat PR #2396**

One small regression with release of v0.27.0 was that if an output
directory to `supergraph compose` was specified,
but one of the parent directories did not exist, the command would fail.
In previous versions the parent directories
would be created instead and the command would succeed. This is now
corrected and the previous behaviour restored.

- **Clean up how default subgraphs are defined in `rover dev` - @dotdat
PR #2397 fixes #2394**

An issue has been reported where `rover dev` would prompt repeatedly for
the subgraph name and URL despite the
user having given those values already. This was due to multiple
factors, including not accounting for CLI args in
the default case and some faulty other faulty logic. This has now been
restored.

- **Refine how composition produces artifacts for targets - @dotdat PR
#2398 fixes #2393**

Due to changes in the `supergraph` binary from 2.9+, writing directly to
a file is now supported. However,
this feature is not available in earlier versions of `supergraph`. As
such Rover should be responsible for
orchestrating how the output from `supergraph` binary ends up in a file,
rather than delegating that responsibility
to the `supergraph` binary and thus being at the mercy of which version
is used. This allowed a further refactor that
  eliminated complexity around composition outputs.

- **Ensure credentials are checked when needed and not before -
@jonathanrainer PR #2400 fixes #2399**

Due to the `rover dev` refactor there were situations where credentials
were being required when they were ultimately
not being used. As such we stopped supporting the use case where no
`profile` was defined and no `APOLLO_KEY` env var
  was provided, which is a very common pattern. This is now corrected.

## 🛠 Maintenance

- **Update `apollographql/router` to v1.60.1 - @jonathanrainer PR
#2388**
- **Update Node.js packages - @jonathanrainer PR #2390**

  Includes `eslint` to v9.20.0 and `prettier` to v3.5.0

- **Update `node` CircleCI orb to v7.1.0 - @jonathanrainer PR #2391**
- **Pin dependencies - @jonathanrainer PR #2401**
- **Update Rust and Node.js packages - @jonathanrainer PR #2402**

Includes `eslint` to v9.20.1, `mockito` to v1.6.1, `node` to v20.18.3
and `prettier` to v3.5.1

- **Update CI node Docker Image to v20.18.3 - @jonathanrainer PR #2403**
- **Update `mockall` to v0.13.1 - @jonathanrainer PR #24045**

## 📚 Documentation

- **Remove obsolete language from `rover dev --help` - @dylan-apollo PR
#2395**
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants