Conversation
Adds an initial plugin, that loads at startup and emits metrics for three simple cases: cpus, cpu_freq and total_memory.
Also improve how we handle refreshing the System object, rather than doing it in either the callback or the async task, contain that within a struct and do it there.
Ensures that gauges will survive hot reload
1. activate is made non-async. It must never fail and it must complete. async fns can halt execution before completion. 2. The spawned thread and channel for fleet detector is removed. There's no need for these. Gauges will be called periodically for export. 3. Telemetry is converted to PrivatePlugin to allow uniform calls to activate.
Signed-off-by: Benjamin <5719034+bnjjj@users.noreply.github.com>
Co-authored-by: Renée <renee.kooi@apollographql.com> Co-authored-by: Jesse Rosenberger <git@jro.cc>
) The router's native, Rust-based, query planner is now generally available 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 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: ```yaml 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. Co-authored-by: Chandrika Srinivasan <chandrikas@users.noreply.github.com> Co-authored-by: Edward Huang <edward.huang@apollographql.com> Co-authored-by: Shane Myrick <mail@shanemyrick.com>
Member
|
the docs for QP GA are in now too^^ |
shorgi
reviewed
Dec 13, 2024
.changesets/breaking_glasser_pq_metric_attribute_consistency.md
Outdated
Show resolved
Hide resolved
Co-authored-by: Edward Huang <edward.huang@apollographql.com>
Co-authored-by: Edward Huang <edward.huang@apollographql.com>
Co-authored-by: Edward Huang <edward.huang@apollographql.com>
BrynCooke
reviewed
Dec 16, 2024
As per docs suggestion, remove this changeset
shorgi
reviewed
Dec 16, 2024
Comment on lines
+1
to
+5
| ### Drop experimental reuse fragment query optimization option ([PR #6354](https://github.com/apollographql/router/pull/6354)) | ||
|
|
||
| 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. |
Contributor
There was a problem hiding this comment.
Suggested change
| ### Drop experimental reuse fragment query optimization option ([PR #6354](https://github.com/apollographql/router/pull/6354)) | |
| 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. | |
| ### Drop experimental reuse fragment query optimization option ([PR #6354](https://github.com/apollographql/router/pull/6354)) | |
| We've dropped support for the `experimental_reuse_query_fragments` option. Its implementation didn't achieve good enough performance or reliability. | |
| In its place, the router uses fragment auto generation. As the default implementation since router v1.58, in most cases fragment auto generation achieves better performance and results. |
Contributor
There was a problem hiding this comment.
Sorry the prep already happened.
BrynCooke
approved these changes
Dec 17, 2024
goto-bus-stop
approved these changes
Dec 17, 2024
This file contains hidden or 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
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.
mainbranch of an upcoming release (version number in the title).main)