github apollographql/router v1.1.0

latest releases: v1.50.0-rc.0, v1.49.1, v1.49.1-rc.0...
21 months ago

🚀 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.

By @garypen in #1904

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.

By @hobbsh in #1853

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

By @bnjjj in #1833

🐛 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.

By @garypen in #1878

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.

By @Geal in #1870

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.

By @hobbsh in #1883

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.

By @Geal in #1771

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.

By @glasser in #1900

🛠 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.

By @abernix in #1806

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.

By @abernix in #1806

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.

By @garypen in #1896

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.

By @bnjjj in #1876

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.

By @garypen in #1877

Query plan execution refactoring (PR #1843)

This splits the query plan execution in multiple modules to make the code more manageable.

By @Geal in #1843

Remove Buffer from APQ (PR #1641)

This removes tower::Buffer usage from the Automated Persisted Queries (APQ) implementation to improve reliability.

By @Geal in #1641

Remove Buffer from query deduplication (PR #1889)

This removes tower::Buffer usage from the query deduplication implementation to improve reliability.

By @Geal in #1889

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

Don't miss a new router release

NewReleases is sending notifications on new releases.