-
Notifications
You must be signed in to change notification settings - Fork 272
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.45.0 #4995
Merged
Merged
prep release: v1.45.0 #4995
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
CI performance tests
|
Geal
approved these changes
Apr 22, 2024
o0Ignition0o
approved these changes
Apr 22, 2024
goto-bus-stop
approved these changes
Apr 22, 2024
garypen
approved these changes
Apr 22, 2024
SimonSapin
approved these changes
Apr 22, 2024
Co-authored-by: Renée <renee.kooi@apollographql.com> Co-authored-by: Simon Sapin <simon@apollographql.com>
chandrikas
approved these changes
Apr 22, 2024
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.
🚀 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. The new error messages should be clearer.
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 #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 #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 #4661
🐛 Fixes
Update
rustls
to v0.21.11 to 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 #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 #4951
Apply alias rewrites to arrays (PR #TODO)
The automatic aliasing rules introduced in #2489 to support
@interfaceObject
are now properly applied to lists.By @o0ignition0o in #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 #4930
📚 Documentation
Documentation updates for caching and metrics instruments (PR #4872)
Router documentation has been updated for a couple topics:
By @smyrick in #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 #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 #4796