v1.20.0
🚀 Features
Configurable histogram buckets for metrics (Issue #2333)
It is now possible to change the default bucketing for histograms generated for metrics:
telemetry:
metrics:
common:
buckets:
- 0.05
- 0.10
- 0.25
- 0.50
- 1.00
- 2.50
- 5.00
- 10.00
- 20.00
🐛 Fixes
Federation v2.4.7 (Issue #3170, Issue #3133)
This release bumps the Router's Federation support from v2.4.6 to v2.4.7, which brings in notable query planner fixes from v2.4.7. Of note from those releases, this brings query planner fixes that (per that dependency's changelog):
- Re-work the code use to try to reuse query named fragments to improve performance (thus sometimes improving query (#2604) planning performance)
- Fix a raised assertion error (again, with a message of form like
Cannot add selection of field X to selection set of parent type Y
). - Fix a rare issue where an
interface
orunion
field was not being queried for all the types it should be.
Set the global allocator in the library crate, not just the executable (Issue #3126)
In 1.19, Apollo Router switched to use jemalloc
as the global Rust allocator on Linux to reduce memory fragmentation. However, prior to this change this was only occurring in the executable binary provided by the apollo-router
crate and custom binaries using the crate as a library were not getting this benefit.
The apollo-router
library crate now sets the global allocator so that custom binaries also take advantage of this by default. If some other choice is desired, the global-allocator
Cargo feature flag can be disabled in Cargo.toml
with:
[dependencies]
apollo-router = {version = "[…]", default-features = false}
Library crates that depend on apollo-router
(if any) should also do this in order to leave the choice to the eventual executable. (Cargo default features are only disabled if all dependents specify default-features = false
.)
By @SimonSapin in #3157
Add ca-certificates
to our Docker image (Issue #3173)
We removed curl
from our Docker images to improve security, which meant that our implicit install of ca-certificates
(as a dependency of curl
) was no longer performed.
This fix reinstates the ca-certificates
package explicitly, which is required for the router to be able to process TLS requests.
Helm: Running of helm test
no longer fails
Running helm test
was generating an error since wget
was sending a request without a proper body and expecting an HTTP status response of 2xx. Without the proper body, it expectedly resulted in an HTTP status of 400. By switching to using netcat
(or nc
) we will now check that the port is up and use that to determine that the router is functional.
By @bbardawilwiser in #3096
Move curl
dependency to separate layer in Docker image (Issue #3144)
We've moved curl
out of the Docker image we publish. The curl
command is only used in the image we produce today for the sake of downloading dependencies. It is never used after that, but we can move it to a separate layer to further remove it from the image.
🛠 Maintenance
Improve cargo-about
license checking (Issue #3176)
From the description of this cargo about PR, it is possible for NOASSERTION
identifiers to be added when gathering license information, causing license checks to fail. This change uses the new cargo-about
configuration filter-noassertion
to eliminate the problem.