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.
❗ BREAKING ❗
Move
cors
configuration fromserver
to root-level (PR #1586)The
cors
configuration is now located at the root-level of the configuration file, rather than insideserver
.For example:
By @garypen in #1586
Exit the router after logging panic details (PR #1602)
The Router will now terminate in the (unlikely) case where it panics.
By @garypen in #1602
Rename the
endpoint
parameter tographql_path
(#1606)The
endpoint
parameter within theserver
portion of the YAML configuration has been renamed tographql_path
to more accurately reflect its behavior.If you used this option, the necessary change would look like:
By @abernix in #1609
Remove
activate()
from the plugin API (PR #1569)Recent changes to configuration reloading means that the only known consumer of this API, telemetry, is no longer using it.
Let's remove it since it's simple to add back if later required.
By @garypen in #1569
Rename TestHarness methods (PR #1579)
Some methods of
apollo_router::TestHarness
were renamed:extra_supergraph_plugin
→supergraph_hook
extra_execution_plugin
→execution_hook
extra_subgraph_plugin
→subgraph_hook
By @SimonSapin in #1579
Request
andResponse
types fromapollo_router::http_ext
are private (Issue #1589)These types were wrappers around the
Request
andResponse
types from thehttp
crate.Now the latter are used directly instead.
By @SimonSapin in #1589
Changes to
IntoHeaderName
andIntoHeaderValue
(PR #1607)apollo_router::http_ext
toapollo_router::services
TryIntoHeaderName
andTryIntoHeaderValue
From<T: Display>
conversion with multiple specific conversionsthat are implemented by
http::headers::Header{Name,Value}
.By @SimonSapin in #1607
QueryPlan::usage_reporting
andQueryPlannerContent
are private (Issue #1556)These items have been removed from the public API of
apollo_router::services::execution
.By @SimonSapin in #1568
Insert the full target triplet in the package name, and prefix with
v
(Issue #1385)The release tarballs now contain the full target triplet in their name along with a
v
prefix to be consistent with our other packaging techniques (e.g., Rover).For example:
router-0.16.0-x86_64-linux.tar.gz
becomesrouter-v0.16.0-x86_64-unknown-linux-gnu.tar.gz
router-0.16.0-x86_64-macos.tar.gz
becomesrouter-v0.16.0-x86_64-apple-darwin.tar.gz
router-0.16.0-x86_64-windows.tar.gz
becomesrouter-v0.16.0-x86_64-pc-windows-msvc.tar.gz
By @abernix and @Geal in #1433 (which re-lands work done in #1393)
Many structs and enums are now
#[non_exhaustive]
(Issue #1550)This means we may adjust
struct
fields orenum
variants in additive ways in the future without breaking changes. To prepare for that eventuality:use
..
to allow further fields:match error { ApolloRouterError::StartupError => "StartupError", ApolloRouterError::HttpServerLifecycleError => "HttpServerLifecycleError", ApolloRouterError::NoConfiguration => "NoConfiguration", ApolloRouterError::NoSchema => "NoSchema", ApolloRouterError::ServiceCreationError(_) => "ServiceCreationError", ApolloRouterError::ServerCreationError(_) => "ServerCreationError", + _ => "other error", }
By @SimonSapin in #1614
Some error enums or variants were removed (Issue #81)
They were not used anymore in the public API (or at all).
By @SimonSapin in #1621
🚀 Features
Instrument the rhai plugin with a tracing span (PR #1598)
If you have an active rhai script in your router, you will now see a "rhai plugin" span in tracing.
By @garypen in #1598
🐛 Fixes
Only send one report for a response with deferred responses (PR #1576)
The router was sending one report per response (even deferred ones), while Studio was expecting one report for the entire
response. The router now sends one report which is inclusive of the latency of the entire operation.
By @Geal in #1576
Include formatted query plan when exposing the query plan (#1557)
Move the location of the
text
field when exposing the query plan and fill it with a formatted query plan.By @bnjjj in #1557
Change state machine log messages to
trace
(#1578)We no longer show internal state machine log events at the
info
level since they are unnecessary during normal operation. They are instead emitted at thetrace
level and can be enabled selectively using the--log trace
flag.By @abernix in #1597
Formatting problem fix of scalar fields selected several times (PR #1583)
Fixed a bug where querying scalar fields several times would put
null
s instead of expected values.By @eole1712 in #1585
Fix typo on HTTP errors from subgraph (#1593)
Remove the closed parenthesis at the end of error messages resulting from HTTP errors from subgraphs.
By @nmoutschen in #1593
Only send one report for a response with deferred responses (PR #1596)
Deferred responses come as
multipart/mixed
elements and are sent as individual HTTP response chunks. When a client receives one chunk,that chunk should contain the next delimiter. This gives the client the ability to start processing the response instead of waiting for the
next chunk just for the delimiter.
By @Geal in #1596
Patch
async-compression
to compress responses in streaming (PR #1604)The
async-compression
crate is a dependency used for HTTP response compression. Its implementation accumulates the entire compressed response in memory before sending it. However, this created problems for@defer
responses since we want those responses to come as soon aspossible, rather than waiting until the entire total response has been received and compressed.
By @Geal in #1604
Queries with
@defer
must have theaccept: multipart/mixed
header (PR #1610)Since deferred responses can come back as multipart responses, we must check that the client supports that
content-type
.This will allow older clients to show a meaningful error message instead of a parsing error if the
@defer
directive isused but they don't support it.
By @Geal in #1610
🛠 Maintenance
Depend on published
router-bridge
(PR #1613)The
router-bridge
package is now published which means therouter
repository no longer depends on having Node.js installed to build.By @o0Ignition0o in #1613
Re-organize our release steps checklist (PR #1605)
We've got a lot of manual steps we need to do in order to release the Router binarys, but we can at least organize them meaningfuly for ourselves to follow! This is only a Router-team concern today!
By @abernix in #1605)