🚀 Features
Add coprocessor metrics (PR #3483)
Introduces a new metric for the router:
apollo.router.operations.coprocessor
It has two attributes:
coprocessor.stage: string (RouterRequest, RouterResponse, SubgraphRequest, SubgraphResponse)
coprocessor.succeeded: bool
Constrain APOLLO_ROUTER_LOG and --log global levels to the router (Issue #3474)
APOLLO_ROUTER_LOG
and --log
now implicitly set a filter constraining the logging to the apollo_router
module, simplifying the debugging experience for users.
For advanced users RUST_LOG
can be used for standard log filter behavior.
Thus:
RUST_LOG=apollo_router=warn
--log warn
APOLLO_ROUTER_LOG=warn
are equivalent with all three statements resulting in warn
level logging for the router.
For more details, read the logging configuration documentation.
Add support for PodDisruptionBudget to helm chart (Issue #3345)
A PodDisuptionBudget may now be specified for your router to limit the number of concurrent disruptions.
Example Configuration:
podDisruptionBudget:
minAvailable: 1
Don't hide --dev
from --help
(Issue #2705)
Display documentation about --dev
when launching the router with --help
argument.
Fix default rhai script dir for Windows (Issue #3401)
Using default rhai.scripts
field won't end up in an error.
Fix the prometheus descriptions as well as the metrics (Issue #3491)
I didn't realise the descriptions on the prometheus stats were significant, so my previous prometheus fix constrained itself to renaming the actual metrics.
This relaxes the regex pattern to include prom descriptions as well as metrics in the renaming.
🛠 Maintenance
Add a pool idle timeout for subgraph HTTP connectors (Issue #3435)
Having a high idle pool timeout duration can sometimes trigger situations in which an HTTP request cannot complete (see this comment for more information).
This changeset sets a default timeout duration of 5 seconds, which we may make configurable eventually.
Don't reload the router if the schema/license hasn't changed (Issue #3180)
The router is performing frequent schema reloads due to notifications from uplink. In the majority of cases a schema reload is not required, because the schema hasn't actually changed.
We won't reload the router if the schema/license hasn't changed.