-
Notifications
You must be signed in to change notification settings - Fork 85
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.47.0 #1841
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
3 times, most recently
from
February 13, 2024 13:52
bfbde09
to
874ce62
Compare
renovate
bot
changed the title
chore(deps): update dependency apollographql/router to v1.39.0
chore(deps): update dependency apollographql/router to v1.39.1
Feb 13, 2024
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
from
February 13, 2024 14:07
874ce62
to
c1b94a0
Compare
renovate
bot
changed the title
chore(deps): update dependency apollographql/router to v1.39.1
chore(deps): update dependency apollographql/router to v1.40.0
Feb 14, 2024
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
4 times, most recently
from
February 20, 2024 10:22
ca07432
to
57c6b54
Compare
renovate
bot
changed the title
chore(deps): update dependency apollographql/router to v1.40.0
chore(deps): update dependency apollographql/router to v1.40.1
Feb 20, 2024
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
3 times, most recently
from
February 20, 2024 12:16
e95afca
to
c274682
Compare
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
from
March 6, 2024 16:28
c274682
to
744100d
Compare
renovate
bot
changed the title
chore(deps): update dependency apollographql/router to v1.40.1
chore(deps): update dependency apollographql/router to v1.40.2
Mar 6, 2024
renovate
bot
changed the title
chore(deps): update dependency apollographql/router to v1.40.2
chore(deps): update dependency apollographql/router to v1.41.0
Mar 8, 2024
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
2 times, most recently
from
March 8, 2024 16:54
03624fe
to
6b24293
Compare
renovate
bot
changed the title
chore(deps): update dependency apollographql/router to v1.41.0
chore(deps): update dependency apollographql/router to v1.41.1
Mar 8, 2024
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
from
March 13, 2024 14:55
6b24293
to
2868fad
Compare
renovate
bot
changed the title
chore(deps): update dependency apollographql/router to v1.41.1
chore(deps): update dependency apollographql/router to v1.42.0
Mar 13, 2024
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
from
March 13, 2024 15:07
2868fad
to
f18b19f
Compare
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
from
March 22, 2024 15:16
f18b19f
to
1fe2839
Compare
renovate
bot
changed the title
chore(deps): update dependency apollographql/router to v1.42.0
chore(deps): update dependency apollographql/router to v1.43.0
Mar 22, 2024
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
3 times, most recently
from
March 26, 2024 17:00
1f48440
to
50e3d6f
Compare
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
from
April 22, 2024 14:38
7fb17d1
to
9d1834d
Compare
renovate
bot
changed the title
chore(deps): update dependency apollographql/router to v1.44.0
chore(deps): update dependency apollographql/router to v1.45.0
Apr 22, 2024
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
2 times, most recently
from
April 27, 2024 02:13
f36acd8
to
0e4a575
Compare
renovate
bot
changed the title
chore(deps): update dependency apollographql/router to v1.45.0
chore(deps): update dependency apollographql/router to v1.45.1
Apr 27, 2024
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
3 times, most recently
from
May 3, 2024 14:15
94ca8d0
to
9f5570d
Compare
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
from
May 7, 2024 17:33
9f5570d
to
890476a
Compare
renovate
bot
changed the title
chore(deps): update dependency apollographql/router to v1.45.1
chore(deps): update dependency apollographql/router to v1.46.0
May 7, 2024
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
3 times, most recently
from
May 15, 2024 14:39
4e11674
to
3491318
Compare
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
from
May 21, 2024 17:49
3491318
to
48304ee
Compare
renovate
bot
changed the title
chore(deps): update dependency apollographql/router to v1.46.0
chore(deps): update dependency apollographql/router to v1.47.0
May 21, 2024
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
from
May 21, 2024 20:56
48304ee
to
9f2d873
Compare
aaronArinder
approved these changes
May 29, 2024
renovate
bot
force-pushed
the
renovate/apollographql-router-1.x
branch
from
May 29, 2024 15:50
9f2d873
to
9a96e5f
Compare
Merged
jonathanrainer
added a commit
that referenced
this pull request
Jul 15, 2024
# [0.24.0] > Important: 1 potentially breaking change below, indicated by **❗ BREAKING ❗** ## ❗ BREAKING ❗ - **Removed the deprecated `plain` and `json` options for `--output` - @dylan-apollo PR [#1804](#1804 The `--output` option is now only for specifying a file to write to. The `--format` option should be used to specify the format of the output. ## 🚀 Features - **Return the name of the linting rule that is violated, as well as the code - @jonathanrainer PR [#1907](#1907 Originally only the message from the linting violation was included in the response, but now it also includes the name of the specific linting rule to aid debugging - **Use the Router's `/health?ready` endpoint to check readiness - @nmoutschen PR [#1939](#1939 Previously `rover dev` used a simple query to establish readiness, but this did not allow for router customizations. - **Adding architecture and OS metrics - @aaronArinder PR [#1947](#1947 Allows us to track the Operating Systems and Architectures in use by our users, this will give us more information as to where to focus support efforts - **Allow `aarch64` macOS to pull correct `supergraph` binaries where available - @jonathanrainer PR [#1971](#1971 We recently started publishing `supergraph` binaries for `aarch64`, so if they are available Rover will use them in preference to x86_64 binaries. ## 🐛 Fixes - **Don't panic if the telemetry client cannot be initialised - @dylan-apollo PR [#1897](#1897) - Issue [#1893](#1893 - **Rename `.cargo/config` to `.cargo/config.toml` - @jonathanrainer PR [#1921](#1921 - **Fix `pnpm` installs by moving the binary download location - @jonathanrainer PR [#1927](#1927) - Issue [#1881](#1881 After we inlined the `binary-install` dependency in v0.23.0 this changed where the downloaded binary was stored when using `pnpm`. This caused users running the binary to enter an infinite loop. This moves the binary to a new location which avoids this. - **Don't panic on file watcher errors - @nmoutschen PR [#1935](#1935 Instead of panicking when errors occur watching files return those errors gracefully to the user. - **Store binaries with version numbers attached so upgrades are possible - @jonathanrainer PR [#1932](#1932) - Issue [#1563](#1563 When downloading binaries via `npm` they were always stored as `rover` despite the version. As such, when a new version came out the upgrade would fail. This now doesn't happen, as binaries are stored with their versions number in the name. - **Ensure correct URL is used if `subgraph_url` and `routing_url` are provided in a supergraph schema - @jonathanrainer PR [#1948](#1948) - Issue [#1782](#1782 - **Let `--output` accept paths with missing intermediate directories - @jonathanrainer PR [#1944](#1944) - Issue [#1787](#1787 - **Allow `rover dev` to read Federation Version from supergraph schema - @jonathanrainer PR [#1950](#1950) - Issue [#1735](#1735 The Federation version could be set in the supegraph schema but was being ignored by `rover dev`. It now is taken into account, along with the overriding environment variable. - **Stop .exe being printed after Federation version during composition - @jonathanrainer PR [#1951](#1951) - Issue [#1390](#1390 - **Reinstate support for `glibc` 2.17 - @jonathanrainer PR [#1953](#1953 In resolving the issues with CentOS 7 we accidentally removed support for `glibc` 2.17, this has now been restored - **Be more lenient about `supergraph` binary versions - @dylan-apollo PR [#1966](#1966 In resolving #1390, we were too restrictive in what counted as a valid version. This restores the correct behaviour - **Set `package.json` to a stable version when testing NPM Installers - @jonathanrainer PR [#1967](#1967 When testing whether our NPM installers worked correctly we were trying to download the latest `rover` binary. On release PRs, where the binary didn't yet exist, this was causing problems. - **Fix mocking of calls to Orbiter in Installer tests - @jonathanrainer PR [#1968](#1968 - **Remove noisy errors from intermediate composition states - @aaronArinder PR [#1956](#1956 When `rover dev` composes multiple subgraphs it does so one at a time. As such if there are dependencies there can be noisy ephemeral errors, this fixes that by waiting until all subgraphs are added before trying composition. ## 🛠 Maintenance - **Update GitHub CircleCI Orb to v2.3.0 - @Geal PR [#1831](#1831 - **Update plugins to Fed 2.7 and Router 1.43.0 - @smyrick PR [#1877](#1877 - **Update CODEOWNERS - @dotdat PR [#1890](#1890 Make Betelgeuse the primary owners of the Rover repository - **Update lychee-lib to v0.15 - @dotData PR [#1902](#1902 - **Add tests and provide status codes as part of linter errors - @dotdat PR [#1903](#1903 - **Add nix files to .gitignore - @aaronArinder PR [#1908](#1908 - **Update apollographql/router to v1.47.0 - @aaronArinder PR [#1841](#1841 - **Update apollographql/federation-rs to v2.7.8 - @aaronArinder PR [#1746](#1746 - **Update node.js to v20 - @aaronArinder PR [#1778](#1778 - **Update Rust to v1.76.0 and the Rust CircleCI Orb to v1.6.1 - @aaronArinder PR [#1788](#1788 - **Update serial_test to v3 - @jonathanrainer PR [#1836](#1836 - **Update which to v6 - @jonathanrainer PR [#1835](#1835 - **Update apollographql/federation-rs to v2.8.0 - @aaronArinder PR [#1909](#1909 - **Update tar to v6.2.1 - @aaronArinder PR [#1888](#1888 - **Update tar to v7 - @aaronArinder PR [#1914](#1914 - **Update node.js packages - @aaronArinder PR [#1830](#1830 Includes `eslint` to v8.57.0, `node.js` to v20.14.0, `nodemon` to v3.1.2, `npm` to v10.8.1 and `prettier` to v3.3.0 - **Update Rust to v1.78.0 - @aaronArinder PR [#1912](#1912 - **Update apollographql/router to v1.48.0 - @aaronArinder PR [#1917](#1917 - **Update zip to v2 - @jonathanrainer PR [#1916](#1916 - **Update eslint to v9.4.0 - @dotdat PR [#1913](#1913 - **Update hyper to v1.0 - @dotdat PR [#1789](#1789 - **Add tests for socket names - @jonathanrainer PR [#1918](#1918 In future dependency upgrades we want to ensure that behaviour around socket naming works as expected, so add a test to ensure that. - **Update rust packages - @jonathanrainer PR [#1755](#1755 Consolidates updates of pre-1.0 rust crates, check PR for full details of crates updated - **Update notify to v6 - @jonathanrainer PR [#1603](#1603 - **Include cargo-deny checks on PRs - @jonathanrainer PR [#1910](#1910 Now we can check for licences that don't correspond to our allowed list and pick up on dependency issues live on PRs - **Pin node.js dev dependencies - @aaronArinder PR [#1923](#1923 - **Allow 0BSD licence - @aaronArinder PR [#1924](#1923 - **Update interprocess to v2 - @dotdat PR [#1915](#1915 - **Update apollographql/router to v1.48.1 - @dotdat PR [#1926](#1926 - **Update Rust to v1.79.0 - @jonathanrainer PR [#1931](#1931 - **Update git2 to v0.19 - @jonathanrainer PR [#1930](#1930 - **Update node.js packages - @jonathanrainer PR [#1929](#1929 Includes `@eslint/compat` to v1.1.0, `eslint` to v9.5.0, `graphql` to v16.8.2 and `prettier` to v3.3.2 - **Migrate CI to use manylinux rather than CentOS 7 - @jonathanrainer PR [#1952](#1952 As CentOS 7 has now entered End-of-Life, migrate our CI to use a different Linux distribution. - **Update apollographql/router to v1.49.1 - @jonathanrainer PR [#1933](#1933 - **Update apollographql/federation-rs to v2.8.2 - @jonathanrainer PR [#1934](#1934 - **Update node.js packages - @jonathanrainer PR [#1940](#1940 Includes `eslint` to v9.6.0, `node.js` to v20.15.0, `nodemon` to v3.1.4, `graphql` to v16.9.0 - **Fix clippy warnings - @loshz PR [#1955](#1955 - **Allow integration tests to accept a pre-compiled binary - @jonathanrainer PR [#1957](#1957 - **Run macOS x86_64 integration tests in GitHub Actions - @nmoutschen PR [#1958](#1958 Due to CircleCI's deprecation of x86_64 macOS executors use GitHub Actions to still run our tests on this architecture - **Add smoke tests for `rover dev` - @jonathanrainer PR [#1961](#1961 - **Update apollographql/router to v1.50.0 - @jonathanrainer PR [#1954](#1954 - **Trigger GitHub Actions from CircleCI - @nmoutschen PR [#1959](#1959 - **Add docs team to CODEOWNERS - @aaronArinder PR [#1965](#1965 - **Fix up Release CI and explicitly add tokio `rt-multi-thread flag` - @jonathanrainer PR [#1972](#1972 - **Add context to auth output when saving an API Key - @loshz PR [#1974](#1974 ## 📚 Documentation - **Minor update to README.md - @tratzlaff PR [#1880](#1880 Fixes use of numbered lists in the README.md - **Remove failing/redundant links from docs - @dotdat PR [#1894](#1894 - **Update docs style - @Meschreiber PR [#1883](#1883 Update formatting and admonitions to most recent conventions. - **Update frontmatter - @Meschreiber PR [#1898](#1898 Updates title casing and adds metadata to subtitles - **Clarify `subgraph publish` can only create variants not graphs - @Meschreiber PR [#1938](#1938 - **Make example using `-` instead of filepath clearer - @aaronArinder PR [#1963](#1963 - **Update Router terminology - @Meschreiber PR [#1925](#1925 Update the uses of Apollo Router to GraphOS Router or Apollo Router Core where necessary - **Update documentation to make it clear we collect CPU Architecture, per command - @aaronArinder PR [#1964](#1964
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v1.43.0
->v1.47.0
Release Notes
apollographql/router (apollographql/router)
v1.47.0
Compare Source
🚀 Features
Support telemetry selectors with errors (Issue #5027)
The router now supports telemetry selectors that take into account the occurrence of errors. This capability enables you to create metrics, events, or span attributes that contain error messages.
For example, you can create a counter for the number of timed-out requests for subgraphs:
The router also can now compute new attributes upon receiving a new event in a supergraph response. With this capability, you can fetch data directly from the supergraph response body:
By @bnjjj in https://github.com/apollographql/router/pull/5022
Add support for
status_code
response to Rhai (Issue #5042)The router now supports
response.status_code
on theResponse
interface in Rhai.Examples using the response status code:
By @bnjjj in https://github.com/apollographql/router/pull/5045
Add gt and lt operators for telemetry conditions (PR #5048)
The router supports greater than (
gt
) and less than (lt
) operators for telemetry conditions. Similar to theeq
operator, the configuration for bothgt
andlt
takes two arguments as a list. Thegt
operator checks that the first argument is greater than the second, and thelt
operator checks that the first argument is less than the second. Other conditions such asgte
,lte
, andrange
can be made from combinations ofgt
,lt
,eq
, andall
.By @tninesling in https://github.com/apollographql/router/pull/5048
Expose busy timer APIs (PR #4989)
The router supports public APIs that native plugins can use to control when the router's busy timer is run.
The router's busy timer measures the time spent working on a request outside of waiting for external calls, like coprocessors and subgraph calls. It includes the time spent waiting for other concurrent requests to be handled (the wait time in the executor) to show the actual router overhead when handling requests.
The public methods are
Context::enter_active_request
andContext::busy_time
. The result is reported in theapollo_router_processing_time
metricFor details on using the APIs, see the documentation for
enter_active_request
.By @Geal in https://github.com/apollographql/router/pull/4989
🐛 Fixes
Reduce JSON schema size and Router memory footprint (PR #5061)
As we add more features to the Router the size of the JSON schema for the router configuration file continutes to grow. In particular, adding conditionals to telemetry in v1.46.0 significantly increased this size of the schema. This has a noticeable impact on initial memory footprint, although it does not impact service of requests.
The JSON schema for the router configuration file has been optimized from approximately 100k lines down to just over 7k.
This reduces the startup time of the Router and a smaller schema is more friendly for code editors.
By @BrynCooke in https://github.com/apollographql/router/pull/5061
Prevent query plan cache collision when planning options change (Issue #5093)
The router's hashing algorithm has been updated to prevent cache collisions when the router's configuration changes.
The router supports multiple options that affect the generated query plans, including:
defer_support
generate_query_fragments
experimental_reuse_query_fragments
experimental_type_conditioned_fetching
experimental_query_planner_mode
If distributed query plan caching is enabled, changing any of these options results in different query plans being generated and cached.
This could be problematic in the following scenarios:
To prevent these from happening, the router now creates a hash for the entire query planner configuration and includes it in the cache key.
By @Geal in https://github.com/apollographql/router/pull/5100
5xx internal server error responses returned as GraphQL structured errors (PR #5159)
Previously, the router returned internal server errors (5xx class) as plaintext to clients. Now in this release, the router returns these 5xx errors as structured GraphQL (for example,
{"errors": [...]}
).Internal server errors are returned upon unexpected or unrecoverable disruptions to the GraphQL request lifecycle execution. When these occur, the underlying error messages are logged at an
ERROR
level to the router's logs.By @BrynCooke in https://github.com/apollographql/router/pull/5159
Custom telemetry events not created when logging is disabled (PR #5165)
The router has been fixed to not create custom telemetry events when the log level is set to
off
.An example configuration with
level
set tooff
for a custom event:By @bnjjj in https://github.com/apollographql/router/pull/5165
Ensure that batch entry contexts are correctly preserved (PR #5162)
Previously, the router didn't use contexts correctly when processing batches. A representative context was chosen (the first item in a batch of items) and used to provide context functionality for all the generated responses.
The router now correctly preserves request contexts and uses them during response creation.
By @garypen in https://github.com/apollographql/router/pull/5162
Validate enum values in input variables (Issue #4633)
The router now validates enum values provided in JSON variables. Invalid enum values result in
GRAPHQL_VALIDATION_FAILED
errors.By @Geal in https://github.com/apollographql/router/pull/4753
Strip dashes from
trace_id
inCustomTraceIdPropagator
(Issue #4892)The router now strips dashes from trace IDs to ensure conformance with OpenTelemetry.
In OpenTelemetry, trace IDs are 128-bit values represented as hex strings without dashes, and they're based on W3C's trace ID format.
This has been applied within the router to
trace_id
inCustomTraceIdPropagator
.Note, if raw trace IDs from headers are represented by uuid4 and contain dashes, the dashes should be stripped so that the raw trace ID value can be parsed into a valid
trace_id
.By @kindermax in https://github.com/apollographql/router/pull/5071
v1.46.0
Compare Source
🚀 Features
Entity cache preview: support queries with private scope (PR #4855)
This feature is part of the work on subgraph entity caching, currently in preview.
The router now supports caching responses marked with
private
scope. This caching currently works only on subgraph responses without any schema-level information.For details about the caching behavior, see PR #4855
By @Geal in https://github.com/apollographql/router/pull/4855
Add support of custom events defined by YAML for telemetry (Issue #4320)
Users can now configure telemetry events via YAML
to log that something has happened (e.g. a request had errors of a particular type) without reaching for Rhai or a custom plugin.
Events may be triggered on conditions and can include information in the request/response pipeline as attributes.
Here is an example of configuration:
By @bnjjj in https://github.com/apollographql/router/pull/4956
Ability to ignore auth prefixes in the JWT plugin
The router now supports a configuration to ignore header prefixes with the JWT plugin. Given that many application headers use the format of
Authorization: <scheme> <token>
, this option enables the router to process requests for specific schemes within theAuthorization
header while ignoring others.For example, you can configure the router to process requests with
Authorization: Bearer <token>
defined while ignoring others such asAuthorization: Basic <token>
:If the header prefix is an empty string, this option is ignored.
By @lleadbet in https://github.com/apollographql/router/pull/4718
Support conditions on custom attributes for spans and a new selector for GraphQL errors (Issue #4336)
The router now supports conditionally adding attributes on a span and the new
on_graphql_error
selector that is set to true if the response body contains GraphQL errors.An example configuration using
condition
inattributes
andon_graphql_error
:By @bnjjj in https://github.com/apollographql/router/pull/4987
🐛 Fixes
Federation v2.7.5 (PR #5064)
This brings in a query planner fix released in v2.7.5 of Apollo Federation. Notably, from its changelog:
Fix issue with missing fragment definitions due to
generateQueryFragments
. (#2993)An incorrect implementation detail in
generateQueryFragments
caused certain queries to be missing fragment definitions, causing the operation to be invalid and fail early in the request life-cycle (before execution). Specifically, subsequent fragment "candidates" with the same type condition and the same length of selections as a previous fragment weren't correctly added to the list of fragments. An example of an affected query is:In this case, the second selection set would be converted to an inline fragment spread to subgraph fetches, but the fragment definition would be missing
By @garypen in https://github.com/apollographql/router/pull/5064
Use supergraph schema to extract authorization info (PR #5047)
The router now uses the supergraph schema to extract authorization info, as authorization information may not be available on the query planner's subgraph schemas. This reverts the authorization changes made in PR #4975.
By @tninesling in https://github.com/apollographql/router/pull/5047
Filter fetches added to batch during batch creation (PR #5034)
Previously, the router didn't filter query hashes when creating batches. This could result in failed queries because the additional hashes could incorrectly make a query appear to be committed when it wasn't actually registered in a batch.
This release fixes this issue by filtering query hashes during batch creation.
By @garypen in https://github.com/apollographql/router/pull/5034
Use
subgraph.name
attribute instead ofapollo.subgraph.name
(PR #5012)In the router v1.45.0, subgraph name mapping didn't work correctly in the Datadog exporter.
The Datadog exporter does some explicit mapping of attributes and was using a value
apollo.subgraph.name
that the latest versions of the router don't use. The correct choice issubgraph.name
.This release updates the mapping to reflect the change and fixes subgraph name mapping for Datadog.
By @garypen in https://github.com/apollographql/router/pull/5012
📚 Documentation
Document traffic shaping default configuration (PR #4953)
The documentation for configuring traffic shaping has been updated to clarify that it's enabled by default with preset values. This setting has been the default since PR #3330, which landed in v1.23.0.
By @bnjjj in https://github.com/apollographql/router/pull/4953
🧪 Experimental
Experimental type conditioned fetching (PR #4748)
This release introduces an experimental configuration to enable type-conditioned fetching.
Previously, when querying a field that was in a path of two or more unions, the query planner wasn't able to handle different selections and would aggressively collapse selections in fetches. This resulted in incorrect plans.
Enabling the
experimental_type_conditioned_fetching
option can fix this issue by configuring the query planner to fetch with type conditions.By @o0Ignition0o in https://github.com/apollographql/router/pull/4748
v1.45.1
Compare Source
🐛 Fixes
Correct v1.44.0 regression in query plan cache (PR #5028)
Correct a critical regression that was introduced in v1.44.0 which could lead to execution of an incorrect query plan. This issue only affects Routers that use distributed query plan caching, enabled via the
supergraph.query_planning.cache.redis.urls
configuration property.By @o0Ignition0o in https://github.com/apollographql/router/pull/5028
Use entire schema when hashing an introspection query (Issue #5006)
Correct a different hashing bug which impacted introspection queries which was also introduced in v1.44.0. This other hashing bug failed to account for introspection queries, resulting in introspection results being misaligned to the current schema. This issue only affects Routers that use distributed query plan caching, enabled via the
supergraph.query_planning.cache.redis.urls
configuration property.This release fixes the hashing mechanism by adding the schema string to hashed data if an introspection field is encountered. As a result, the entire schema is taken into account and the correct introspection result is returned.
By @Geal in https://github.com/apollographql/router/pull/5007
Fix subgraph name mapping of Datadog exporter (PR #5012)
Previously in the router v1.45.0, subgraph name mapping didn't work correctly in the router's Datadog exporter. The exporter used the incorrect value
apollo.subgraph.name
for mapping attributes when it should have used the valuesubgraph.name
. This issue has been fixed in this release.By @garypen in https://github.com/apollographql/router/pull/5012
v1.45.0
Compare Source
🚀 Features
Query validation process with Rust (PR #4551)
The router has been updated with a new Rust-based query validation process using
apollo-compiler
from theapollo-rs
project. It replaces the Javascript implementation in the query planner. It improves query planner performance by moving the validation out of the query planner and into the router service, which frees up space in the query planner cache.Because validation now happens earlier in the router service and not in the query planner, error paths in the query planner are no longer encountered. Some messages in error responses returned from invalid queries should now be more clear.
We've tested the new validation process by running it for months in production, concurrently with the JavaScript implementation, and have now completely transitioned to the Rust-based implementation.
By @Geal in https://github.com/apollographql/router/pull/4551
Add support for SHA256 hashing in Rhai (Issue #4939)
The router supports a new
sha256
module to create SHA256 hashes in Rhai scripts. The module supports thesha256::digest
function.An example script that uses the module:
By @lleadbet in https://github.com/apollographql/router/pull/4940
Subgraph support for query batching (Issue #2002)
As an extension to the ongoing work to support client-side query batching in the router, the router now supports batching of subgraph requests. Each subgraph batch request retains the same external format as a client batch request. This optimization reduces the number of round-trip requests from the router to subgraphs.
Also, batching in the router is now a generally available feature: the
experimental_batching
router configuration option has been deprecated and is replaced by thebatching
option.Previously, the router preserved the concept of a batch until a
RouterRequest
finished processing. From that point, the router converted each batch request item into a separateSupergraphRequest
, and the router planned and executed those requests concurrently within the router, then reassembled them into a batch ofRouterResponse
to return to the client. Now with the implementation in this release, the concept of a batch is extended so that batches are issued to configured subgraphs (all or named). Each batch request item is planned and executed separately, but the queries issued to subgraphs are optimally assembled into batches which observe the query constraints of the various batch items.To configure subgraph batching, you can enable
batching.subgraph.all
for all subgraphs. You can also enable batching per subgraph withbatching.subgraph.subgraphs.*
. For example:Note:
all
can be overridden bysubgraphs
. This applies in general for all router subgraph configuration options.To learn more, see query batching in Apollo docs.
By @garypen in https://github.com/apollographql/router/pull/4661
🐛 Fixes
Update
rustls
to v0.21.11, the latest v0.21.x patch (PR #4993)While the Router does use
rustls
, RUSTSEC-2024-0336 (also known as CVE-2024-32650 and GHSA-6g7w-8wpp-frhj) DOES NOT affect the Router since it usestokio-rustls
which is specifically called out in the advisory as unaffected.Despite the lack of impact, we update
rustls
version v0.21.10 to rustls v0.21.11 which includes a patch.By @tninesling in https://github.com/apollographql/router/pull/4993
Performance improvements for Apollo usage report field generation (PR 4951)
The performance of generating Apollo usage report signatures, stats keys, and referenced fields has been improved.
By @bonnici in https://github.com/apollographql/router/pull/4951
Apply alias rewrites to arrays (PR #4958)
The automatic aliasing rules introduced in #2489 to support
@interfaceObject
are now properly applied to lists.By @o0ignition0o in https://github.com/apollographql/router/pull/4958
Fix compatibility of coprocessor metric creation (PR #4930)
Previously, the router's execution stage created coprocessor metrics differently than other stages. This produced metrics with slight incompatibilities.
This release fixes the issue by creating coprocessor metrics in the same way as all other stages.
By @Geal in https://github.com/apollographql/router/pull/4930
📚 Documentation
Documentation updates for caching and metrics instruments (PR #4872)
Router documentation has been updated for a couple topics:
By @smyrick in https://github.com/apollographql/router/pull/4872
🧪 Experimental
Experimental: Introduce a pool of query planners (PR #4897)
The router supports a new experimental feature: a pool of query planners to parallelize query planning.
You can configure query planner pools with the
supergraph.query_planning.experimental_parallelism
option:Its value is the number of query planners that run in parallel, and its default value is
1
. You can set it to the special valueauto
to automatically set it equal to the number of available CPUs.You can discuss and comment about query planner pools in this GitHub discussion.
By @xuorig and @o0Ignition0o in https://github.com/apollographql/router/pull/4897
Experimental: Rust implementation of Apollo usage report field generation (PR 4796)
The router supports a new experimental Rust implementation for generating the stats report keys and referenced fields that are sent in Apollo usage reports. This implementation is one part of the effort to replace the router-bridge with native Rust code.
The feature is configured with the
experimental_apollo_metrics_generation_mode
setting. We recommend that you use its default value, so we can verify that it generates the same payloads as the previous implementation.By @bonnici in https://github.com/apollographql/router/pull/4796
v1.44.0
Compare Source
Correct a critical regression that was introduced in v1.44.0 which could lead to execution of an incorrect query plan. This issue only affects Routers that use distributed query plan caching, enabled via the
supergraph.query_planning.cache.redis.urls
configuration property.By @o0Ignition0o in https://github.com/apollographql/router/pull/5028
v1.43.2
Compare Source
🐛 Fixes
Security fix: update h2 dependency
References:
The router's performance could be degraded when receiving a flood of HTTP/2 CONTINUATION frames, when the Router is set up to terminate TLS for client connections.
By @geal
v1.43.1
Compare Source
🚀 Features
Logs can display trace and span IDs (PR #4823)
To enable correlation between traces and logs,
trace_id
andspan_id
can now be displayed in log messages.For JSON logs, trace and span IDs are displayed by default:
For text logs, trace and span IDs aren't displayed by default:
To configure, set the
display_span_id
anddisplay_trace_id
options in the logging exporter configuration.JSON (defaults to true):
Text (defaults to false):
By @BrynCooke in https://github.com/apollographql/router/pull/4823
Count errors with apollo.router.graphql_error metrics (Issue #4749)
The router supports a new metric,
apollo.router.graphql_error
, that is a counter of GraphQL errors. It has acode
attribute to differentiate counts of different error codes.By @Geal in https://github.com/apollographql/router/pull/4751
Expose operation signature to plugins (Issue #4558)
The router now exposes operation signatures to plugins with the context key
apollo_operation_signature
. The exposed operation signature is the string representation of the full signature.By @Geal in https://github.com/apollographql/router/pull/4864
Experimental logging of broken pipe errors (PR #4870)
The router can now emit a log message each time a client closes its connection early, which can help you debug issues with clients that close connections before the server can respond.
This feature is disabled by default but can be enabled by setting the
experimental_log_broken_pipe
option totrue
:Note: users with internet-facing routers will likely not want to opt in to this log message, as they have no control over the clients.
By @Geal in https://github.com/apollographql/router/pull/4770 and @BrynCooke in https://github.com/apollographql/router/pull/4870
🐛 Fixes
Entity cache: fix support for Redis cluster (PR #4790)
In a Redis cluster, entities can be stored in different nodes, and a query to one node should only refer to the keys it manages. This is challenging for the Redis MGET operation, which requests multiple entities in the same request from the same node.
This fix splits the MGET query into multiple MGET calls, where the calls are grouped by key hash to ensure each one gets to the corresponding node, and then merges the responses in the correct order.
By @Geal in https://github.com/apollographql/router/pull/4790
Give spans their proper parent in the plugin stack (Issue #4827)
Previously, spans in plugin stacks appeared incorrectly as siblings rather than being nested. This was problematic when displaying traces or accounting for time spent in Datadog.
This release fixes the issue, and plugin spans are now correctly nested within each other.
By @Geal in https://github.com/apollographql/router/pull/4877
Fix(telemetry): keep consistency between tracing OTLP endpoint (Issue #4798)
Previously, when exporting tracing data using OTLP using only the base address of the OTLP endpoint, the router succeeded with gRPC but failed with HTTP due to this bug in
opentelemetry-rust
.This release implements a workaround for the bug, where you must specify the correct HTTP path:
By @bnjjj in https://github.com/apollographql/router/pull/4801
Execute the entire request pipeline if the client closed the connection (Issue #4569), (Issue #4576), (Issue #4589), (Issue #4590), (Issue #4611)
The router now ensures that the entire request handling pipeline is executed when the client closes the connection early to allow telemetry, Rhai scripts, or coprocessors to complete their tasks before canceling.
Previously, when a client canceled a request, the entire execution was dropped, and parts of the router, including telemetry, couldn't run to completion. Now, the router executes up to the first response event (in the case of subscriptions or
@defer
usage), adds a499
status code to the response, and skips the remaining subgraph requests.Note that this change will report more requests to Studio and the configured telemetry, and it will appear like a sudden increase in errors because the failing requests were not previously reported.
You can keep the previous behavior of immediately dropping execution for canceled requests by setting the
early_cancel
option:By @Geal in https://github.com/apollographql/router/pull/4770
null
extensions incorrectly disallowed on request (Issue #4856)Previously the router incorrectly rejected requests with
null
extensions, which are allowed according to the GraphQL over HTTP specification.This issue has been fixed, and the router now allows requests with
null
extensions, like the following:By @BrynCooke in https://github.com/apollographql/router/pull/4865
Fix external extensibility error log messages (PR #4869)
Previously, log messages for external extensibility errors from
execution
andsupergraph
responses were incorrectly logged asrouter
responses. This issue has been fixed.By @garypen in https://github.com/apollographql/router/pull/4869
Remove invalid payload on graphql-ws Ping message (Issue #4852)
Previously, the router sent a string as a
Ping
payload, but that was incompatible with the graphql-ws specification, which specifies that the payload is optional and should be an object or null.To ensure compatibility, the router now sends no payload for
Ping
messages.By @IvanGoncharov in https://github.com/apollographql/router/pull/4852
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.
This PR has been generated by Mend Renovate. View repository job log here.