🚀 Features
Build, test and publish binaries for aarch64-unknown-linux-gnu
architecture (Issue #1192)
We're now testing and building aarch64-unknown-linux-gnu
binaries in our release pipeline and publishing those build artifacts as releases. These will be installable in the same way as our existing installation instructions.
By @EverlastingBugstopper in #1907
Add ability to specify repository location in "DIY" Docker builds (PR #1904)
The new -r
flag allows a developer to specify the location of a repository when building a diy docker image. Handy for developers with local repositories.
Support serviceMonitor
in Helm chart
kube-prometheus-stack
ignores scrape annotations, so a serviceMonitor
Custom Resource Definition (CRD) is required to scrape a given target to avoid scrape_configs
.
Add support for dynamic header injection (Issue #1755)
The following are now possible in our YAML configuration for headers
:
-
Insert static header
headers: all: # Header rules for all subgraphs request: - insert: name: "sent-from-our-apollo-router" value: "indeed"
-
Insert header from context
headers: all: # Header rules for all subgraphs request: - insert: name: "sent-from-our-apollo-router-context" from_context: "my_key_in_context"
-
Insert header from request body
headers: all: # Header rules for all subgraphs request: - insert: name: "sent-from-our-apollo-router-request-body" path: ".operationName" # It's a JSON path query to fetch the operation name from request body default: "UNKNOWN" # If no operationName has been specified
🐛 Fixes
Fix external secret support in our Helm chart (Issue #1750)
If an external secret is specified, e.g.:
helm install --set router.managedFederation.existingSecret="my-secret-name" <etc...>
...then the router should be deployed and configured to use the existing secret.
Do not erase errors when missing _entities
(Issue #1863)
In a federated query, if the subgraph returned a response with errors
and a null
or absent data
field, the Router was ignoring the subgraph error and instead returning an error complaining about the missing _entities
field.
The Router will now aggregate the subgraph error and the missing _entities
error.
Fix Prometheus annotation and healthcheck default
The Prometheus annotation is breaking on a helm upgrade
so this fixes the template and also sets defaults. Additionally, defaults are now set for health-check
's listen
to be 0.0.0.0:8088
within the Helm chart.
Move response formatting to the execution service (PR #1771)
The response formatting process (in which response data is filtered according to deferred responses subselections and the API schema) was being executed in the supergraph
service. This was a bit late since it resulted in the execution
service returning a stream of invalid responses leading to the execution plugins operating on invalid data.
Hide footer from "homepage" landing page (PR #1900)
Hides some incorrect language about customization on the landing page. Currently to customize the landing page it requires additional support.
🛠 Maintenance
Update to Federation 2.1.3 (Issue #1880)
This brings in Federation 2.1.3 to bring in updates to @apollo/federation
via the relevant bump in router-bridge
.
Update reqwest
dependency to resolve DNS resolution failures (Issue #1899)
This should resolve intermittent failures to resolve DNS in Uplink which were occurring due to an upstream bug in the reqwest
library.
Remove span details from log records (PR #1896)
Prior to this change, span details were written to log files. This was unwieldy and contributed to log bloat. Spans and logs are still linked in trace aggregators, such as jaeger, and this change simply affects the content of the written to the console output.
Change span attribute names in OpenTelemetry to be more consistent (PR #1876)
The span attributes in our OpenTelemetry tracing spans are corrected to be consistently namespaced with attributes that are compliant with the OpenTelemetry specification.
Have CI use rust-toolchain.toml and not install another redudant toolchain (Issue #1313)
Avoids redundant work in CI and makes the YAML configuration less mis-leading.
Query plan execution refactoring (PR #1843)
This splits the query plan execution in multiple modules to make the code more manageable.
Remove Buffer
from APQ (PR #1641)
This removes tower::Buffer
usage from the Automated Persisted Queries (APQ) implementation to improve reliability.
Remove Buffer
from query deduplication (PR #1889)
This removes tower::Buffer
usage from the query deduplication implementation to improve reliability.
Set MSRV to 1.63.0 (PR #1886)
We compile and test with 1.63.0 on CI at the moment, so it is our de-facto Minimum Supported Rust Version (MSRV).
Setting rust-version
in Cargo.toml
provides a more helpful error message when using an older version rather than unexpected compilation errors.
By @SimonSapin in #1886