diff --git a/CHANGELOG.md b/CHANGELOG.md index f1b91baad0..03572415b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,236 @@ All notable changes to Router will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +# [1.0.0-alpha.0] - 2022-08-29 + +## ❗ BREAKING ❗ + +### Move `cors` configuration from `server` to root-level ([PR #1586](https://github.com/apollographql/router/pull/1586)) + +The `cors` configuration is now located at the root-level of the configuration file, rather than inside `server`. + +For example: + +```diff +- server: +- cors: +- origins: +- - https://yourdomain.com ++ cors: ++ origins: ++ - https://yourdomain.com +``` + +By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/1586 + +### Exit the router after logging panic details ([PR #1602](https://github.com/apollographql/router/pull/1602)) + +The Router will now terminate in the (unlikely) case where it panics. + +By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/1602 + +### Rename the `endpoint` parameter to `graphql_path` ([#1606](https://github.com/apollographql/router/issues/1606)) + +The `endpoint` parameter within the `server` portion of the YAML configuration has been renamed to `graphql_path` to more accurately reflect its behavior. + +If you used this option, the necessary change would look like: + +```diff +- server: +- endpoint: /graphql ++ server: ++ graphql_path: /graphql +``` + +By [@abernix](https://github.com/abernix) in https://github.com/apollographql/router/pull/1609 + +### Remove `activate()` from the plugin API ([PR #1569](https://github.com/apollographql/router/pull/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](https://github.com/garypen) in https://github.com/apollographql/router/pull/1569 + +### Rename TestHarness methods ([PR #1579](https://github.com/apollographql/router/pull/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](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1579 + +### `Request` and `Response` types from `apollo_router::http_ext` are private ([Issue #1589](https://github.com/apollographql/router/issues/1589)) + +These types were wrappers around the `Request` and `Response` types from the `http` crate. +Now the latter are used directly instead. + +By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1589 + +### Changes to `IntoHeaderName` and `IntoHeaderValue` ([PR #1607](https://github.com/apollographql/router/pull/1607)) + +> Note: These types are typically not used directly, so we expect most user code to require no changes. + +* Move from `apollo_router::http_ext` to `apollo_router::services` +* Rename to `TryIntoHeaderName` and `TryIntoHeaderValue` +* Make contents opaque +* Replace generic `From` conversion with multiple specific conversions + that are implemented by `http::headers::Header{Name,Value}`. + +By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1607 + +### `QueryPlan::usage_reporting` and `QueryPlannerContent` are private ([Issue #1556](https://github.com/apollographql/router/issues/1556)) + +These items have been removed from the public API of `apollo_router::services::execution`. + +By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1568 + +### Insert the full target triplet in the package name, and prefix with `v` ([Issue #1385](https://github.com/apollographql/router/issues/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` becomes `router-v0.16.0-x86_64-unknown-linux-gnu.tar.gz` +- `router-0.16.0-x86_64-macos.tar.gz` becomes` router-v0.16.0-x86_64-apple-darwin.tar.gz` +- `router-0.16.0-x86_64-windows.tar.gz` becomes` router-v0.16.0-x86_64-pc-windows-msvc.tar.gz` + +By [@abernix](https://github.com/abernix) and [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/1433 (which re-lands work done in https://github.com/apollographql/router/pull/1393) + +### Many structs and enums are now `#[non_exhaustive]` ([Issue #1550](https://github.com/apollographql/router/issues/1550)) + +This means we may adjust `struct` fields or `enum` variants in additive ways in the future without breaking changes. To prepare for that eventuality: + +1. When using a struct pattern (such as for deconstructing a value into its fields), +use `..` to allow further fields: + + ```diff + -let PluginInit { config, supergraph_sdl } = init; + +let PluginInit { config, supergraph_sdl, .. } = init; + ``` + +2. Use field access instead: + + ```diff + -let PluginInit { config, supergraph_sdl } = init; + +let config = init.config; + +let supergraph_sdl = init.supergraph_sdl; + ``` + +3. When constructing a struct, use a builder or constructor method instead of struct literal syntax: + + ```diff + -let error = graphql::Error { + - message: "something went wrong".to_string(), + - ..Default::default() + -}; + +let error = graphql::Error::builder() + + .message("something went wrong") + + .build(); + ``` + +4. When matching on an enum, add a wildcard match arm: + + ```diff + match error { + ApolloRouterError::StartupError => "StartupError", + ApolloRouterError::HttpServerLifecycleError => "HttpServerLifecycleError", + ApolloRouterError::NoConfiguration => "NoConfiguration", + ApolloRouterError::NoSchema => "NoSchema", + ApolloRouterError::ServiceCreationError(_) => "ServiceCreationError", + ApolloRouterError::ServerCreationError(_) => "ServerCreationError", + + _ => "other error", + } + ``` + +By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1614 + +### Some error enums or variants were removed ([Issue #81](https://github.com/apollographql/router/issues/81)) + +They were not used anymore in the public API (or at all). + +By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1621 + +## 🚀 Features + +### Instrument the rhai plugin with a tracing span ([PR #1598](https://github.com/apollographql/router/pull/1598)) + +If you have an active rhai script in your router, you will now see a "rhai plugin" span in tracing. + +By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/1598 + +## 🐛 Fixes + +### Only send one report for a response with deferred responses ([PR #1576](https://github.com/apollographql/router/issues/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](https://github.com/Geal) in https://github.com/apollographql/router/pull/1576 + +### Include formatted query plan when exposing the query plan ([#1557](https://github.com/apollographql/router/issues/1557)) + +Move the location of the `text` field when exposing the query plan and fill it with a formatted query plan. + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/1557 + +### Change state machine log messages to `trace` ([#1578](https://github.com/apollographql/router/issues/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 the `trace` level and can be enabled selectively using the `--log trace` flag. + +By [@abernix](https://github.com/abernix) in https://github.com/apollographql/router/pull/1597 + +### Formatting problem fix of scalar fields selected several times ([PR #1583](https://github.com/apollographql/router/issues/1583)) + +Fixed a bug where querying scalar fields several times would put `null`s instead of expected values. + +By [@eole1712](https://github.com/eole1712) in https://github.com/apollographql/router/pull/1585 + +### Fix typo on HTTP errors from subgraph ([#1593](https://github.com/apollographql/router/pull/1593)) + +Remove the closed parenthesis at the end of error messages resulting from HTTP errors from subgraphs. + +By [@nmoutschen](https://github.com/nmoutschen) in https://github.com/apollographql/router/pull/1593 + +### Only send one report for a response with deferred responses ([PR #1596](https://github.com/apollographql/router/issues/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](https://github.com/Geal) in https://github.com/apollographql/router/pull/1596 + +### Patch `async-compression` to compress responses in streaming ([PR #1604](https://github.com/apollographql/router/issues/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 as +possible, rather than waiting until the _entire_ total response has been received and compressed. + +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/1604 + +### Queries with `@defer` must have the `accept: multipart/mixed` header ([PR #1610](https://github.com/apollographql/router/issues/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 is +used but they don't support it. + +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/1610 + +## 🛠 Maintenance + +### Depend on published `router-bridge` ([PR #1613](https://github.com/apollographql/router/issues/1613)) + +The `router-bridge` package is now published which means the `router` repository no longer depends on having Node.js installed to build. + +By [@o0Ignition0o](https://github.com/o0Ignition0o) in https://github.com/apollographql/router/pull/1613 + +### Re-organize our release steps checklist ([PR #1605](https://github.com/apollographql/router/pull/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](https://github.com/abernix) in https://github.com/apollographql/router/pull/1605) + # [0.16.0] - 2022-08-22 We're getting closer and closer to our 1.0 release and with that we have a lot of polish that we're applying to our API to get it ready for it to be a durable surface area for our consumers to depend on. Due to various learnings we've had during the pre-1.0 phases of the Router, we are evolving our API to match what we now know. @@ -13,9 +243,9 @@ We do not intend on doing this much moving around of things again soon, but anyo Please review the full change log to get all the details, but for the most part the changes in this release consist of: - a lot of renames of existing symbols - - the re-location of exported symbols to more appropriate modules + - the re-location of exported symbols to more appropriate modules - the privatization of functions which we don't believe users needed directly (see below if any of these turn out to be a problem). - + During each step of the migration, we recommend **searching this changelog** for a symbol to find advice on how to migrate it. We've tried to make the instructions and path forward as clear as possible. - If you find yourself **needing help migrating** to the new patterns, please first take a close look at the examples provided in this change log and if you still need help, please [**open a discussion**](https://github.com/apollographql/router/discussions/). @@ -157,7 +387,7 @@ Migration example: -use tower::BoxError; -use apollo_router::services::{RouterRequest, RouterResponse}; +use apollo_router::services::router; - + -async fn example(service: BoxService) -> RouterResponse { +async fn example(service: router::BoxService) -> router::Response { - let request = RouterRequest::builder()/*…*/.build(); @@ -283,7 +513,7 @@ These aliases are now removed and remaining imports must be changed to the new l +use apollo_router::graphql::Response; ``` -Alternatively, import the module with `use apollo_router::graphql` +Alternatively, import the module with `use apollo_router::graphql` then use qualified paths such as `graphql::Request`. This can help disambiguate when multiple types share a name. @@ -317,8 +547,8 @@ where a `Handler` could be created with: ```rust impl Handler { pub fn new(service: tower::util::BoxService< - apollo_router::http_ext::Request, - apollo_router::http_ext::Response, + apollo_router::http_ext::Request, + apollo_router::http_ext::Response, tower::BoxError >) -> Self {/* … */} } @@ -403,7 +633,7 @@ to obtain a `Result`: let server = RouterHttpServer::builder().schema("schema").start(); // … -drop(server); -+server.shutdown().await.unwrap(); ++server.shutdown().await.unwrap(); ``` By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1487 @@ -555,7 +785,7 @@ By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollograp Change attribute name `query` to `graphql.document` and `operation_name` to `graphql.operation.name` in spans. -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/1449 +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/1449 ### Configuration handling enhancements ([PR #1454](https://github.com/apollographql/router/pull/1454)) @@ -618,7 +848,7 @@ By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/p `with_naive_introspection` and `with_defer_support` where two parameter-less methods of this builder that enabled boolean configuration flags. -They have been removed and replaced by `with_configuration` +They have been removed and replaced by `with_configuration` which takes `Arc`. A `Configuration` value can be created from various formats by deserializing with `serde`. The removed methods correspond to `server.introspection` and `server.experimental_defer_support` @@ -628,10 +858,10 @@ By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollograp ### Changes to the `SchemaKind` enum ([PR #1437](https://github.com/apollographql/router/pull/1437)) -The `Instance` variant is replaced with a variant named `String` that contains… +The `Instance` variant is replaced with a variant named `String` that contains… a `String` instead of `Box`, so you no longer need to parse the schema before giving it to the router. -Similarly, the `Stream` variant now contains a stream of `String`s +Similarly, the `Stream` variant now contains a stream of `String`s instead of a stream of already-parsed `Schema`s. By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1437 @@ -641,7 +871,7 @@ By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollograp This means that `str.parse::()` is no longer available. If you still need a parsed `Schema` (see above), use `apollo_router::Schema(str, &configuration)` instead. -To use the default `apollo_router::Configuration` +To use the default `apollo_router::Configuration` you can call `apollo_router::Schema(str, &Default::default())`. By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1437 @@ -727,7 +957,7 @@ By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/p The metadata format now uses `IndexMap>`. -By [@me-diru](https://github.com/me-diru) in https://github.com/apollographql/router/pull/1391 +By [@me-diru](https://github.com/me-diru) in https://github.com/apollographql/router/pull/1391 ### Update the scaffold template so it targets router v0.14.0 ([PR #1431](https://github.com/apollographql/router/pull/1431)) @@ -737,7 +967,7 @@ By [@o0Ignition0o](https://github.com/o0Ignition0o) in https://github.com/apollo ### Selection merging on non-object field aliases ([PR #1406](https://github.com/apollographql/router/issues/1406)) -Fixed a bug where merging aliased fields would sometimes put `null`s instead of expected values. +Fixed a bug where merging aliased fields would sometimes put `null`s instead of expected values. By [@o0Ignition0o](https://github.com/o0Ignition0o) in https://github.com/apollographql/router/pull/1432 @@ -1465,8 +1695,8 @@ extraEnvVarsSecret: '' extraVolumes: - name: supergraph-volume configMap: - name: some-configmap -extraVolumeMounts: + name: some-configmap +extraVolumeMounts: - name: supergraph-volume mountPath: /etc/apollo ``` @@ -1757,13 +1987,13 @@ By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router ## 🐛 Fixes -### Compute default port in span information ([Issue #1160](https://github.com/apollographql/router/pull/1160)) +### Compute default port in span information ([Issue #1160](https://github.com/apollographql/router/pull/1160)) Compute default port in span information for `net.peer.port` regarding the scheme of the request URI. By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/1160 -### Response `Content-Type` is, again, `application/json` ([Issue #636](https://github.com/apollographql/router/issues/636)) +### Response `Content-Type` is, again, `application/json` ([Issue #636](https://github.com/apollographql/router/issues/636)) The router was not setting a `content-type` on client responses. This fix ensures that a `content-type` of `application/json` is set when returning a GraphQL response. @@ -1923,7 +2153,7 @@ This change loosens the CORS-related headers restrictions, so it shouldn't have The router now embeds a CSRF protection plugin, which is enabled by default. Have a look at the [CORS and CSRF example](https://github.com/apollographql/router/tree/main/examples/cors-and-csrf/custom-headers.router.yaml) to learn how to customize it. [Documentation](https://www.apollographql.com/docs/router/configuration/cors/) will be updated soon! ### Helm chart now supports prometheus metrics [PR #1005](https://github.com/apollographql/router/pull/1005) -The router has supported exporting prometheus metrics for a while. This change updates our helm chart to enable router deployment prometheus metrics. +The router has supported exporting prometheus metrics for a while. This change updates our helm chart to enable router deployment prometheus metrics. Configure by updating your values.yaml or by specifying the value on your helm install command line. @@ -2309,7 +2539,7 @@ Take advantages of new extractors given by `axum`. trace_context: false jaeger: false baggage: false - + otlp: endpoint: default protocol: grpc @@ -2342,7 +2572,7 @@ Take advantages of new extractors given by `axum`. Only values may be expanded (not keys): ```yaml {4,8} title="router.yaml" example: - passord: "${MY_PASSWORD}" + passord: "${MY_PASSWORD}" ``` ## 🐛 Fixes @@ -2405,7 +2635,7 @@ Take advantages of new extractors given by `axum`. - **Add experimental support of `custom_endpoint` method in `Plugin` trait** ([PR #738](https://github.com/apollographql/router/pull/738)) The `custom_endpoint` method lets you declare a new endpoint exposed for your plugin. For now it's only accessible for official `apollo.` plugins and for `experimental.`. The return type of this method is a Tower [`Service`](). - + - **configurable subgraph error redaction** ([PR #797](https://github.com/apollographql/router/issues/797)) By default, subgraph errors are not propagated to the user. This experimental plugin allows messages to be propagated either for all subgraphs or on an individual subgraph basis. Individual subgraph configuration overrides the default (all) configuration. The configuration mechanism is similar @@ -2472,7 +2702,7 @@ Take advantages of new extractors given by `axum`. - **Document the Plugin and DynPlugin trait** ([PR #800](https://github.com/apollographql/router/pull/800) Those traits are used to extend the router with Rust plugins - + # [v0.1.0-preview.2] - 2022-04-01 ## ❗ BREAKING ❗ @@ -2535,7 +2765,7 @@ Take advantages of new extractors given by `axum`. --apollo-schema-poll-interval The time between polls to Apollo uplink. Minimum 10s [env: APOLLO_SCHEMA_POLL_INTERVAL=] [default: 10s] ``` - In addition, other existing uplink env variables are now also configurable via arg. + In addition, other existing uplink env variables are now also configurable via arg. - **Make deduplication and caching more robust against cancellation** [PR #752](https://github.com/apollographql/router/pull/752) [PR #758](https://github.com/apollographql/router/pull/758) @@ -2776,11 +3006,11 @@ For more information on what's expected at this stage, please see our [release s - **Request lifecycle checkpoints** ([PR #558](https://github.com/apollographql/router/pull/548) and [PR #580](https://github.com/apollographql/router/pull/548)) Checkpoints in the request pipeline now allow plugin authors (which includes us!) to check conditions during a request's lifecycle and circumvent further execution if desired. - + Using `Step` return types within the checkpoint it's possible to influence what happens (including changing things like the HTTP status code, etc.). A caching layer, for example, could return `Step::Return(response)` if a cache "hit" occurred and `Step::Continue(request)` (to allow normal processing to continue) in the event of a cache "miss". - + These can be either synchronous or asynchronous. To see examples, see: - + - A [synchronous example](https://github.com/apollographql/router/tree/190afe181bf2c50be1761b522fcbdcc82b81d6ca/examples/forbid-anonymous-operations) - An [asynchronous example](https://github.com/apollographql/router/tree/190afe181bf2c50be1761b522fcbdcc82b81d6ca/examples/async-allow-client-id) @@ -2836,7 +3066,7 @@ For more information on what's expected at this stage, please see our [release s - **Resolved missing documentation in Apollo Explorer** ([PR #540](https://github.com/apollographql/router/pull/540)) We've resolved a scenario that prevented Apollo Explorer from displaying documentation by adding support for a new introspection query which also queries for deprecation (i.e., `includeDeprecated`) on `input` arguments. - + # [v0.1.0-alpha.6] 2022-02-18 ## :sparkles: Features @@ -2912,13 +3142,13 @@ For more information on what's expected at this stage, please see our [release s While there are several levels of Apollo Studio integration, the initial phase of our Apollo Studio reporting focuses on operation-level reporting. At a high-level, this will allow Apollo Studio to have visibility into some basic schema details, like graph ID and variant, and per-operation details, including: - + - Overall operation latency - The number of times the operation is executed - [Client awareness] reporting, which leverages the `apollographql-client-*` headers to give visibility into _which clients are making which operations_. This should enable several Apollo Studio features including the _Clients_ and _Checks_ pages as well as the _Checks_ tab on the _Operations_ page. - + > *Note:* As a current limitation, the _Fields_ page will not have detailed field-based metrics and on the _Operations_ page the _Errors_ tab, the _Traces_ tab and the _Error Percentage_ graph will not receive data. We recommend configuring the Router's [OpenTelemetry tracing] with your APM provider and using distributed tracing to increase visibility into individual resolver performance. Overall, this marks a notable but still incremental progress toward more of the Studio integrations which are laid out in [#66](https://github.com/apollographql/router/issues/66). @@ -3088,70 +3318,70 @@ See our [release stages] for more information. - **Federation 2 alpha** The Apollo Router supports the new alpha features of [Apollo Federation 2], including its improved shared ownership model and enhanced type merging. As new Federation 2 features are released, we will update the Router to bring in that new functionality. - + [Apollo Federation 2]: https://www.apollographql.com/blog/announcement/backend/announcing-federation-2/ - **Supergraph support** The Apollo Router supports supergraphs that are published to the Apollo Registry, or those that are composed locally. Both options are enabled by using [Rover] to produce (`rover supergraph compose`) or fetch (`rover supergraph fetch`) the supergraph to a file. This file is passed to the Apollo Router using the `--supergraph` flag. - + See the Rover documentation on [supergraphs] for more information! - + [Rover]: https://www.apollographql.com/rover/ [supergraphs]: https://www.apollographql.com/docs/rover/supergraphs/ - **Query planning and execution** The Apollo Router supports Federation 2 query planning using the same implementation we use in Apollo Gateway for maximum compatibility. In the future, we would like to migrate the query planner to Rust. Query plans are cached in the Apollo Router for improved performance. - + - **Performance** - We've created benchmarks demonstrating the performance advantages of a Rust-based Apollo Router. Early results show a substantial performance improvement over our Node.js based Apollo Gateway, with the possibility of improving performance further for future releases. - + We've created benchmarks demonstrating the performance advantages of a Rust-based Apollo Router. Early results show a substantial performance improvement over our Node.js based Apollo Gateway, with the possibility of improving performance further for future releases. + Additionally, we are making benchmarking an integrated part of our CI/CD pipeline to allow us to monitor the changes over time. We hope to bring awareness of this into the public purview as we have new learnings. - + See our [blog post] for more. - + [blog post]: https://www.apollographql.com/blog/announcement/backend/apollo-router-our-graphql-federation-runtime-in-rust/ - + - **Apollo Sandbox Explorer** - [Apollo Sandbox Explorer] is a powerful web-based IDE for creating, running, and managing GraphQL operations. Visiting your Apollo Router endpoint will take you into the Apollo Sandbox Explorer, preconfigured to operate against your graph. - + [Apollo Sandbox Explorer] is a powerful web-based IDE for creating, running, and managing GraphQL operations. Visiting your Apollo Router endpoint will take you into the Apollo Sandbox Explorer, preconfigured to operate against your graph. + [Apollo Sandbox Explorer]: https://www.apollographql.com/docs/studio/explorer/ - **Introspection support** Introspection support makes it possible to immediately explore the graph that's running on your Apollo Router using the Apollo Sandbox Explorer. Introspection is currently enabled by default on the Apollo Router. In the future, we'll support toggling this behavior. - + - **OpenTelemetry tracing** - For enabling observability with existing infrastructure and monitoring performance, we've added support using [OpenTelemetry] tracing. A number of configuration options can be seen in the [configuration][configuration 1] documentation under the `opentelemetry` property which allows enabling Jaeger or [OTLP]. - + For enabling observability with existing infrastructure and monitoring performance, we've added support using [OpenTelemetry] tracing. A number of configuration options can be seen in the [configuration][configuration 1] documentation under the `opentelemetry` property which allows enabling Jaeger or [OTLP]. + In the event that you'd like to send data to other tracing platforms, the [OpenTelemetry Collector] can be run an agent and can funnel tracing (and eventually, metrics) to a number of destinations which are implemented as [exporters]. - + [configuration 1]: https://www.apollographql.com/docs/router/configuration/#configuration-file [OpenTelemetry]: https://opentelemetry.io/ [OTLP]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/otlp.md [OpenTelemetry Collector]: https://github.com/open-telemetry/opentelemetry-collector [exporters]: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter - + - **CORS customizations** For a seamless getting started story, the Apollo Router has CORS support enabled by default with `Access-Control-Allow-Origin` set to `*`, allowing access to it from any browser environment. - + This configuration can be adjusted using the [CORS configuration] in the documentation. - + [CORS configuration]: https://www.apollographql.com/docs/router/configuration/#handling-cors - **Subgraph routing URL overrides** Routing URLs are encoded in the supergraph, so specifying them explicitly isn't always necessary. - + In the event that you have dynamic subgraph URLs, or just want to quickly test something out locally, you can override subgraph URLs in the configuration. - + Changes to the configuration will be hot-reloaded by the running Apollo Router. - + ## 📚 Documentation The beginnings of the [Apollo Router's documentation] is now available in the Apollo documentation. We look forward to continually improving it! @@ -3159,11 +3389,11 @@ See our [release stages] for more information. - **Quickstart tutorial** The [quickstart tutorial] offers a quick way to try out the Apollo Router using a pre-deployed set of subgraphs we have running in the cloud. No need to spin up local subgraphs! You can of course run the Apollo Router with your own subgraphs too by providing a supergraph. - + - **Configuration options** - On our [configuration][configuration 2] page we have a set of descriptions for some common configuration options (e.g., supergraph and CORS) as well as a [full configuration] file example of the currently supported options. - + On our [configuration][configuration 2] page we have a set of descriptions for some common configuration options (e.g., supergraph and CORS) as well as a [full configuration] file example of the currently supported options. + [quickstart tutorial]: https://www.apollographql.com/docs/router/quickstart/ [configuration 2]: https://www.apollographql.com/docs/router/configuration/ [full configuration]: https://www.apollographql.com/docs/router/configuration/#configuration-file diff --git a/Cargo.lock b/Cargo.lock index cdb395dcc3..9daff8eda0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -136,7 +136,7 @@ dependencies = [ [[package]] name = "apollo-router" -version = "0.16.0" +version = "1.0.0-alpha.0" dependencies = [ "access-json", "anyhow", @@ -237,7 +237,7 @@ dependencies = [ [[package]] name = "apollo-router-benchmarks" -version = "0.15.1" +version = "1.0.0-alpha.0" dependencies = [ "apollo-router", "async-trait", @@ -253,7 +253,7 @@ dependencies = [ [[package]] name = "apollo-router-scaffold" -version = "0.16.0" +version = "1.0.0-alpha.0" dependencies = [ "anyhow", "cargo-scaffold", @@ -279,7 +279,7 @@ dependencies = [ [[package]] name = "apollo-spaceport" -version = "0.16.0" +version = "1.0.0-alpha.0" dependencies = [ "bytes", "clap 3.2.17", @@ -300,7 +300,7 @@ dependencies = [ [[package]] name = "apollo-uplink" -version = "0.16.0" +version = "1.0.0-alpha.0" dependencies = [ "futures", "graphql_client", @@ -6479,7 +6479,7 @@ dependencies = [ [[package]] name = "xtask" -version = "0.16.0" +version = "1.0.0-alpha.0" dependencies = [ "ansi_term", "anyhow", diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index 5ab96b39dd..942a264d7b 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -26,221 +26,7 @@ By [@USERNAME](https://github.com/USERNAME) in https://github.com/apollographql/ # [x.x.x] (unreleased) - 2022-mm-dd ## ❗ BREAKING ❗ - -### Move cors configuration from `server` to top level ([PR #1586](https://github.com/apollographql/router/pull/1586)) - -The cors configuration is now located at the top level of the configuration file. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/1586 - -### Exit the router after logging panic details ([PR #1602](https://github.com/apollographql/router/pull/1602)) - -If the router panics, it can leave the router in an unuseable state. - -Terminating after logging the panic details is the best choice here. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/1602 - -### Rename the `endpoint` parameter to `graphql_path` ([#1606](https://github.com/apollographql/router/issues/1606)) - -The `endpoint` parameter within the `server` portion of the YAML configuration has been renamed to `graphql_path` to more accurately reflect its behavior. - -If you used this option, the necessary change would look like: - -```diff -- server: -- endpoint: /graphql -+ server: -+ graphql_path: /graphql -``` - -By [@abernix](https://github.com/abernix) in https://github.com/apollographql/router/pull/1609 - -### Remove `activate()` from the plugin API ([PR #1569](https://github.com/apollographql/router/pull/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](https://github.com/garypen) in https://github.com/apollographql/router/pull/1569 - -### Rename TestHarness methods ([PR #1579](https://github.com/apollographql/router/pull/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](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1579 - -### `Request` and `Response` types from `apollo_router::http_ext` are private ([Issue #1589](https://github.com/apollographql/router/issues/1589)) - -These types were wrappers around the `Request` and `Response` types from the `http` crate. -Now the latter are used directly instead. - -By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1589 - -### Changes to `IntoHeaderName` and `IntoHeaderValue` ([PR #1607](https://github.com/apollographql/router/pull/1607)) - -Note: these types are typically not use directly, so we expect most user code to require no change. - -* Move from `apollo_router::http_ext` to `apollo_router::services` -* Rename to `TryIntoHeaderName` and `TryIntoHeaderValue` -* Make contents opaque -* Replace generic `From` conversion with multiple specific conversions - that are implemented by `http::headers::Header{Name,Value}`. - -By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1607 - -### QueryPlan::usage_reporting and QueryPlannerContent are private ([Issue #1556](https://github.com/apollographql/router/issues/1556)) - -These items have been removed from the public API of `apollo_router::services::execution`. - -By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1568 - -### Insert the full target triplet in the package name, and prefix with `v` ([Issue #1385](https://github.com/apollographql/router/issues/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): - -* `router-0.16.0-x86_64-linux.tar.gz` -> `router-v0.16.0-x86_64-unknown-linux-gnu.tar.gz` -* `router-0.16.0-x86_64-macos.tar.gz` -> `router-v0.16.0-x86_64-apple-darwin.tar.gz` -* `router-0.16.0-x86_64-windows.tar.gz` -> `router-v0.16.0-x86_64-pc-windows-msvc.tar.gz` - -By [@abernix](https://github.com/abernix) and [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/1433 (which re-lands work done in https://github.com/apollographql/router/pull/1393) - -### Many structs and enums are now `#[non_exhaustive]` ([Issue #1550](https://github.com/apollographql/router/issues/1550)) - -This means we may add struct fields or enum variants in the future. -To prepare for that eventuality: - -When using a struct pattern (such as for deconstructing a value into its fields), -use `..` to allow further fields: - -```diff --let PluginInit { config, supergraph_sdl } = init; -+let PluginInit { config, supergraph_sdl, .. } = init; -``` - -Or use field access instead: - -```diff --let PluginInit { config, supergraph_sdl } = init; -+let config = init.config; -+let supergraph_sdl = init.supergraph_sdl; -``` - -When constructing a struct, use a builder or constructor method instead of struct literal syntax: - -```diff --let error = graphql::Error { -- message: "something went wrong".to_string(), -- ..Default::default() --}; -+let error = graphql::Error::builder() -+ .message("something went wrong") -+ .build(); -``` - -When matching on an enum, add a wildcard match arm: - -```diff - match error { - ApolloRouterError::StartupError => "StartupError", - ApolloRouterError::HttpServerLifecycleError => "HttpServerLifecycleError", - ApolloRouterError::NoConfiguration => "NoConfiguration", - ApolloRouterError::NoSchema => "NoSchema", - ApolloRouterError::ServiceCreationError(_) => "ServiceCreationError", - ApolloRouterError::ServerCreationError(_) => "ServerCreationError", -+ _ => "other error", -} -``` - -By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/1614 - -### Some error enums or variants were removed ([Issue #81](https://github.com/apollographql/router/issues/81)) - -They were not used anymore in the public API (or at all). - -By [@SimonSapin](https://github.com/SimonSapin) in FIXME - ## 🚀 Features - -### instrument the rhai plugin with a tracing span ([PR #1598](https://github.com/apollographql/router/pull/1598)) - -If you have an active rhai script in your router, you will now see a "rhai plugin" tracing span. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/1598 - ## 🐛 Fixes - -### Only send one report for a response with deferred responses ([PR #1576](https://github.com/apollographql/router/issues/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, that measures the latency of the entire operation. - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/1576 - -### Include formatted query plan when exposing the query plan ([#1557](https://github.com/apollographql/router/issues/1557)) - -Move the location of the `text` field when exposing the query plan and fill it with a formatted query plan. - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/1557 - -### Change state machine log messages to `trace` ([#1578](https://github.com/apollographql/router/issues/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 the `trace` level and can be enabled selectively using the `--log trace` flag. - -By [@abernix](https://github.com/abernix) in https://github.com/apollographql/router/pull/1597 - -### Formatting problem fix of scalar fields selected several times ([PR #1583](https://github.com/apollographql/router/issues/1583)) - -Fixed a bug where querying scalar fields several times would put `null`s instead of expected values. - -By [@eole1712](https://github.com/eole1712) in https://github.com/apollographql/router/pull/1585 - -### Fix typo on HTTP errors from subgraph ([#1593](https://github.com/apollographql/router/pull/1593)) - -Remove the closed parenthesis at the end of error messages resulting from HTTP errors from subgraphs. - -By [@nmoutschen](https://github.com/nmoutschen) in https://github.com/apollographql/router/pull/1593 - -### Only send one report for a response with deferred responses ([PR #1596](https://github.com/apollographql/router/issues/1596)) - -deferred responses come as multipart elements, send as individual HTTP response chunks. When a client receives one chunk, -it should contain the next delimiter, so the client knows that the response can be processed, instead of waiting for the -next chunk to see the delimiter. - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/1596 - -### Patch async-compression to compress responses in streaming ([PR #1604](https://github.com/apollographql/router/issues/1604)) - -async-compression is a dependency used for response compression. Its implementation accumulates the entire compressed response -in memory before sending it, which creates problems for deferred responses, where we want the responses to come as soon as -possible, and not all at once after a while. - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/1604 - -### Queries with defer must have the Accept: multipart/mixed header ([PR #1610](https://github.com/apollographql/router/issues/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 is -used but they don't support it. - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/1610 - ## 🛠 Maintenance - -### Depend on published `router-bridge` ([PR #1613](https://github.com/apollographql/router/issues/1613)) - -We have published the `router-bridge` to crates.io, which removes the need for router developers to have nodejs installed. - -By [@o0Ignition0o](https://github.com/o0Ignition0o) in https://github.com/apollographql/router/pull/1613 - -### Re-organize our release steps checklist ([PR #1605](https://github.com/apollographql/router/pull/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](https://github.com/abernix) in https://github.com/apollographql/router/pull/1605) - ## 📚 Documentation diff --git a/RELEASE_CHECKLIST.md b/RELEASE_CHECKLIST.md index 58f7f54b8c..4127c2116e 100644 --- a/RELEASE_CHECKLIST.md +++ b/RELEASE_CHECKLIST.md @@ -40,7 +40,7 @@ in lieu of an official changelog. - update the appVersion to the release version. e.g.: `appVersion: "v0.9.0"` 7. cd helm/chart && helm-docs router; cd - (if required, install [helm-docs](https://github.com/norwoodj/helm-docs)) 8. Update `federation-version-support.mdx` with the latest version info. Use https://github.com/apollographql/version_matrix to generate the version matrix. -9. Update the `version` in `docker-compose*` files in the `dockerfiles` directory. +9. Update the `image` of the Docker image within `docker-compose*.yml` files inside the `dockerfiles` directory. 10. Update the license list with `cargo about generate --workspace -o licenses.html about.hbs`. You can install `cargo-about` by running `cargo install cargo-about`. 11. Add a new section in `CHANGELOG.md` with the contents of `NEXT_CHANGELOG.md` diff --git a/apollo-router-benchmarks/Cargo.toml b/apollo-router-benchmarks/Cargo.toml index e8e740b389..731a3473a2 100644 --- a/apollo-router-benchmarks/Cargo.toml +++ b/apollo-router-benchmarks/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router-benchmarks" -version = "0.15.1" +version = "1.0.0-alpha.0" authors = ["Apollo Graph, Inc. "] edition = "2021" license = "LicenseRef-ELv2" diff --git a/apollo-router-scaffold/Cargo.toml b/apollo-router-scaffold/Cargo.toml index 0deb511df5..0a255f3c19 100644 --- a/apollo-router-scaffold/Cargo.toml +++ b/apollo-router-scaffold/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router-scaffold" -version = "0.16.0" +version = "1.0.0-alpha.0" authors = ["Apollo Graph, Inc. "] edition = "2021" license = "LicenseRef-ELv2" diff --git a/apollo-router-scaffold/templates/base/Cargo.toml b/apollo-router-scaffold/templates/base/Cargo.toml index 95d6c27817..51289fc2b5 100644 --- a/apollo-router-scaffold/templates/base/Cargo.toml +++ b/apollo-router-scaffold/templates/base/Cargo.toml @@ -22,7 +22,7 @@ apollo-router = { path ="{{integration_test}}apollo-router" } apollo-router = { git="https://github.com/apollographql/router.git", branch="{{branch}}" } {{else}} # Note if you update these dependencies then also update xtask/Cargo.toml -apollo-router = { git="https://github.com/apollographql/router.git", tag="v0.16.0" } +apollo-router = { git="https://github.com/apollographql/router.git", tag="v1.0.0-alpha.0" } {{/if}} {{/if}} async-trait = "0.1.52" diff --git a/apollo-router-scaffold/templates/base/xtask/Cargo.toml b/apollo-router-scaffold/templates/base/xtask/Cargo.toml index 0d8ed07906..da88e1ffcb 100644 --- a/apollo-router-scaffold/templates/base/xtask/Cargo.toml +++ b/apollo-router-scaffold/templates/base/xtask/Cargo.toml @@ -2,7 +2,7 @@ name = "xtask" edition = "2021" publish = false -version = "0.16.0" +version = "0.1.0" [dependencies] # This dependency should stay in line with your router version @@ -13,7 +13,7 @@ apollo-router-scaffold = { path ="{{integration_test}}apollo-router-scaffold" } {{#if branch}} apollo-router-scaffold = { git="https://github.com/apollographql/router.git", branch="{{branch}}" } {{else}} -apollo-router-scaffold = { git="https://github.com/apollographql/router.git", tag="v0.16.0"} +apollo-router-scaffold = { git="https://github.com/apollographql/router.git", tag="v1.0.0-alpha.0"} {{/if}} {{/if}} anyhow = "1.0.58" diff --git a/apollo-router/Cargo.toml b/apollo-router/Cargo.toml index 528621837a..4d3d19c0d6 100644 --- a/apollo-router/Cargo.toml +++ b/apollo-router/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router" -version = "0.16.0" +version = "1.0.0-alpha.0" authors = ["Apollo Graph, Inc. "] edition = "2021" license = "LicenseRef-ELv2" diff --git a/apollo-spaceport/Cargo.toml b/apollo-spaceport/Cargo.toml index 5d2720eea5..5960bbb5f8 100644 --- a/apollo-spaceport/Cargo.toml +++ b/apollo-spaceport/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-spaceport" -version = "0.16.0" +version = "1.0.0-alpha.0" authors = ["Apollo Graph, Inc. "] edition = "2021" license = "LicenseRef-ELv2" diff --git a/dockerfiles/tracing/docker-compose.datadog.yml b/dockerfiles/tracing/docker-compose.datadog.yml index 05d4ebcd0e..e00cdb268c 100644 --- a/dockerfiles/tracing/docker-compose.datadog.yml +++ b/dockerfiles/tracing/docker-compose.datadog.yml @@ -3,7 +3,7 @@ services: apollo-router: container_name: apollo-router - image: ghcr.io/apollographql/router:v0.16.0 + image: ghcr.io/apollographql/router:v1.0.0-alpha.0 volumes: - ./supergraph.graphql:/etc/config/supergraph.graphql - ./router/datadog.router.yaml:/etc/config/configuration.yaml diff --git a/dockerfiles/tracing/docker-compose.jaeger.yml b/dockerfiles/tracing/docker-compose.jaeger.yml index 297c9664c0..6c7a8f1c4a 100644 --- a/dockerfiles/tracing/docker-compose.jaeger.yml +++ b/dockerfiles/tracing/docker-compose.jaeger.yml @@ -4,7 +4,7 @@ services: apollo-router: container_name: apollo-router #build: ./router - image: ghcr.io/apollographql/router:v0.16.0 + image: ghcr.io/apollographql/router:v1.0.0-alpha.0 volumes: - ./supergraph.graphql:/etc/config/supergraph.graphql - ./router/jaeger.router.yaml:/etc/config/configuration.yaml diff --git a/dockerfiles/tracing/docker-compose.zipkin.yml b/dockerfiles/tracing/docker-compose.zipkin.yml index 8e9bfad358..464cdaceb3 100644 --- a/dockerfiles/tracing/docker-compose.zipkin.yml +++ b/dockerfiles/tracing/docker-compose.zipkin.yml @@ -4,7 +4,7 @@ services: apollo-router: container_name: apollo-router build: ./router - image: ghcr.io/apollographql/router:v0.16.0 + image: ghcr.io/apollographql/router:v1.0.0-alpha.0 volumes: - ./supergraph.graphql:/etc/config/supergraph.graphql - ./router/zipkin.router.yaml:/etc/config/configuration.yaml diff --git a/docs/source/containerization/docker.mdx b/docs/source/containerization/docker.mdx index ed26b6be12..6f3e78e909 100644 --- a/docs/source/containerization/docker.mdx +++ b/docs/source/containerization/docker.mdx @@ -11,7 +11,7 @@ The default behaviour of the router images is suitable for a quickstart or devel Note: The [docker documentation](https://docs.docker.com/engine/reference/run/) for the run command may be helpful when reading through the examples. -Note: The exact image version to use is your choice depending on which release you wish to use. In the following examples, replace `` with your chosen version. e.g.: `v0.16.0` +Note: The exact image version to use is your choice depending on which release you wish to use. In the following examples, replace `` with your chosen version. e.g.: `v1.0.0-alpha.0` ## Override the configuration @@ -92,10 +92,10 @@ Usage: build_docker_image.sh [-b] [] Example 1: Building HEAD from the repo build_docker_image.sh -b Example 2: Building tag from the repo - build_docker_image.sh -b v0.16.0 + build_docker_image.sh -b v1.0.0-alpha.0 Example 3: Building commit hash from the repo build_docker_image.sh -b 1c220d35acf9ad2537b8edc58c498390b6701d3d - Example 4: Building tag v0.16.0 from the released tarball - build_docker_image.sh v0.16.0 + Example 4: Building tag v1.0.0-alpha.0 from the released tarball + build_docker_image.sh v1.0.0-alpha.0 ``` Note: The script has to be run from the `dockerfiles/diy` directory because it makes assumptions about the relative availability of various files. The example uses [distroless images](https://github.com/GoogleContainerTools/distroless) for the final image build. Feel free to modify the script to use images which better suit your own needs. diff --git a/docs/source/containerization/kubernetes.mdx b/docs/source/containerization/kubernetes.mdx index 3ca60bce43..9968516e26 100644 --- a/docs/source/containerization/kubernetes.mdx +++ b/docs/source/containerization/kubernetes.mdx @@ -13,7 +13,7 @@ import { Link } from 'gatsby'; [Helm](https://helm.sh) is the package manager for kubernetes. -There is a complete [helm chart definition](https://github.com/apollographql/router/tree/v0.16.0/helm/chart/router) in the repo which illustrates how to use helm to deploy the router in kubernetes. +There is a complete [helm chart definition](https://github.com/apollographql/router/tree/v1.0.0-alpha.0/helm/chart/router) in the repo which illustrates how to use helm to deploy the router in kubernetes. In both the following examples, we are using helm to install the router: - into namespace "router-deploy" (create namespace if it doesn't exist) @@ -66,7 +66,7 @@ metadata: labels: app.kubernetes.io/name: router app.kubernetes.io/instance: router-test - app.kubernetes.io/version: "v0.16.0" + app.kubernetes.io/version: "v1.0.0-alpha.0" --- # Source: router/templates/secret.yaml apiVersion: v1 @@ -76,7 +76,7 @@ metadata: labels: app.kubernetes.io/name: router app.kubernetes.io/instance: router-test - app.kubernetes.io/version: "v0.16.0" + app.kubernetes.io/version: "v1.0.0-alpha.0" data: managedFederationApiKey: "REDACTED" --- @@ -88,7 +88,7 @@ metadata: labels: app.kubernetes.io/name: router app.kubernetes.io/instance: router-test - app.kubernetes.io/version: "v0.16.0" + app.kubernetes.io/version: "v1.0.0-alpha.0" data: configuration.yaml: | server: @@ -106,7 +106,7 @@ metadata: labels: app.kubernetes.io/name: router app.kubernetes.io/instance: router-test - app.kubernetes.io/version: "v0.16.0" + app.kubernetes.io/version: "v1.0.0-alpha.0" spec: type: ClusterIP ports: @@ -126,7 +126,7 @@ metadata: labels: app.kubernetes.io/name: router app.kubernetes.io/instance: router-test - app.kubernetes.io/version: "v0.16.0" + app.kubernetes.io/version: "v1.0.0-alpha.0" annotations: prometheus.io/path: /plugins/apollo.telemetry/prometheus prometheus.io/port: "80" @@ -150,7 +150,7 @@ spec: - name: router securityContext: {} - image: "ghcr.io/apollographql/router:v0.16.0" + image: "ghcr.io/apollographql/router:v1.0.0-alpha.0" imagePullPolicy: IfNotPresent args: - --hot-reload diff --git a/docs/source/federation-version-support.mdx b/docs/source/federation-version-support.mdx index 0a5557f59b..34ed4d2b8a 100644 --- a/docs/source/federation-version-support.mdx +++ b/docs/source/federation-version-support.mdx @@ -21,7 +21,15 @@ Apollo Federation is an evolving project, and it will receive new features and b - v0.16.0 and later (see latest releases) + v1.0.0-alpha.0 and later (see latest releases) + + + 2.1.0-alpha.4 + + + + + v0.16.0 2.1.0-alpha.4 diff --git a/helm/chart/router/Chart.yaml b/helm/chart/router/Chart.yaml index 434968ead1..c6882c5095 100644 --- a/helm/chart/router/Chart.yaml +++ b/helm/chart/router/Chart.yaml @@ -15,10 +15,10 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.20 +version: 0.1.21 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "v0.16.0" +appVersion: "v1.0.0-alpha.0" diff --git a/helm/chart/router/README.md b/helm/chart/router/README.md index 794c0f9fe7..aa2cf28a1b 100644 --- a/helm/chart/router/README.md +++ b/helm/chart/router/README.md @@ -2,7 +2,7 @@ [router](https://github.com/apollographql/router) Rust Graph Routing runtime for Apollo Federation -![Version: 0.1.20](https://img.shields.io/badge/Version-0.1.20-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v0.16.0](https://img.shields.io/badge/AppVersion-v0.16.0-informational?style=flat-square) +![Version: 0.1.21](https://img.shields.io/badge/Version-0.1.21-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.0.0-alpha.0](https://img.shields.io/badge/AppVersion-v1.0.0--alpha.0-informational?style=flat-square) ## Prerequisites @@ -73,6 +73,7 @@ helm show values apollographql/router | rhai.input_file | string | `""` | input rhai file, contents will be stored in a ConfigMap | | router | object | `{"args":["--hot-reload"],"configuration":{"server":{"listen":"0.0.0.0:80"}}}` | See https://www.apollographql.com/docs/router/configuration/overview#configuration-file for yaml structure | | securityContext | object | `{}` | | +| service.annotations | object | `{}` | | | service.port | int | `80` | | | service.type | string | `"ClusterIP"` | | | serviceAccount.annotations | object | `{}` | | diff --git a/licenses.html b/licenses.html index 74a2bb110f..3cfd469846 100644 --- a/licenses.html +++ b/licenses.html @@ -44,8 +44,8 @@

Third Party Licenses

Overview of licenses:

    -
  • MIT License (82)
  • -
  • Apache License 2.0 (56)
  • +
  • MIT License (83)
  • +
  • Apache License 2.0 (57)
  • BSD 3-Clause "New" or "Revised" License (8)
  • ISC License (8)
  • BSD 2-Clause "Simplified" License (2)
  • @@ -3398,6 +3398,190 @@

    Used by:

    See the License for the specific language governing permissions and limitations under the License. + + +
  • +

    Apache License 2.0

    +

    Used by:

    + +
                                     Apache License
    +                           Version 2.0, January 2004
    +                        http://www.apache.org/licenses/
    +
    +   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
    +
    +   1. Definitions.
    +
    +      "License" shall mean the terms and conditions for use, reproduction,
    +      and distribution as defined by Sections 1 through 9 of this document.
    +
    +      "Licensor" shall mean the copyright owner or entity authorized by
    +      the copyright owner that is granting the License.
    +
    +      "Legal Entity" shall mean the union of the acting entity and all
    +      other entities that control, are controlled by, or are under common
    +      control with that entity. For the purposes of this definition,
    +      "control" means (i) the power, direct or indirect, to cause the
    +      direction or management of such entity, whether by contract or
    +      otherwise, or (ii) ownership of fifty percent (50%) or more of the
    +      outstanding shares, or (iii) beneficial ownership of such entity.
    +
    +      "You" (or "Your") shall mean an individual or Legal Entity
    +      exercising permissions granted by this License.
    +
    +      "Source" form shall mean the preferred form for making modifications,
    +      including but not limited to software source code, documentation
    +      source, and configuration files.
    +
    +      "Object" form shall mean any form resulting from mechanical
    +      transformation or translation of a Source form, including but
    +      not limited to compiled object code, generated documentation,
    +      and conversions to other media types.
    +
    +      "Work" shall mean the work of authorship, whether in Source or
    +      Object form, made available under the License, as indicated by a
    +      copyright notice that is included in or attached to the work
    +      (an example is provided in the Appendix below).
    +
    +      "Derivative Works" shall mean any work, whether in Source or Object
    +      form, that is based on (or derived from) the Work and for which the
    +      editorial revisions, annotations, elaborations, or other modifications
    +      represent, as a whole, an original work of authorship. For the purposes
    +      of this License, Derivative Works shall not include works that remain
    +      separable from, or merely link (or bind by name) to the interfaces of,
    +      the Work and Derivative Works thereof.
    +
    +      "Contribution" shall mean any work of authorship, including
    +      the original version of the Work and any modifications or additions
    +      to that Work or Derivative Works thereof, that is intentionally
    +      submitted to Licensor for inclusion in the Work by the copyright owner
    +      or by an individual or Legal Entity authorized to submit on behalf of
    +      the copyright owner. For the purposes of this definition, "submitted"
    +      means any form of electronic, verbal, or written communication sent
    +      to the Licensor or its representatives, including but not limited to
    +      communication on electronic mailing lists, source code control systems,
    +      and issue tracking systems that are managed by, or on behalf of, the
    +      Licensor for the purpose of discussing and improving the Work, but
    +      excluding communication that is conspicuously marked or otherwise
    +      designated in writing by the copyright owner as "Not a Contribution."
    +
    +      "Contributor" shall mean Licensor and any individual or Legal Entity
    +      on behalf of whom a Contribution has been received by Licensor and
    +      subsequently incorporated within the Work.
    +
    +   2. Grant of Copyright License. Subject to the terms and conditions of
    +      this License, each Contributor hereby grants to You a perpetual,
    +      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
    +      copyright license to reproduce, prepare Derivative Works of,
    +      publicly display, publicly perform, sublicense, and distribute the
    +      Work and such Derivative Works in Source or Object form.
    +
    +   3. Grant of Patent License. Subject to the terms and conditions of
    +      this License, each Contributor hereby grants to You a perpetual,
    +      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
    +      (except as stated in this section) patent license to make, have made,
    +      use, offer to sell, sell, import, and otherwise transfer the Work,
    +      where such license applies only to those patent claims licensable
    +      by such Contributor that are necessarily infringed by their
    +      Contribution(s) alone or by combination of their Contribution(s)
    +      with the Work to which such Contribution(s) was submitted. If You
    +      institute patent litigation against any entity (including a
    +      cross-claim or counterclaim in a lawsuit) alleging that the Work
    +      or a Contribution incorporated within the Work constitutes direct
    +      or contributory patent infringement, then any patent licenses
    +      granted to You under this License for that Work shall terminate
    +      as of the date such litigation is filed.
    +
    +   4. Redistribution. You may reproduce and distribute copies of the
    +      Work or Derivative Works thereof in any medium, with or without
    +      modifications, and in Source or Object form, provided that You
    +      meet the following conditions:
    +
    +      (a) You must give any other recipients of the Work or
    +          Derivative Works a copy of this License; and
    +
    +      (b) You must cause any modified files to carry prominent notices
    +          stating that You changed the files; and
    +
    +      (c) You must retain, in the Source form of any Derivative Works
    +          that You distribute, all copyright, patent, trademark, and
    +          attribution notices from the Source form of the Work,
    +          excluding those notices that do not pertain to any part of
    +          the Derivative Works; and
    +
    +      (d) If the Work includes a "NOTICE" text file as part of its
    +          distribution, then any Derivative Works that You distribute must
    +          include a readable copy of the attribution notices contained
    +          within such NOTICE file, excluding those notices that do not
    +          pertain to any part of the Derivative Works, in at least one
    +          of the following places: within a NOTICE text file distributed
    +          as part of the Derivative Works; within the Source form or
    +          documentation, if provided along with the Derivative Works; or,
    +          within a display generated by the Derivative Works, if and
    +          wherever such third-party notices normally appear. The contents
    +          of the NOTICE file are for informational purposes only and
    +          do not modify the License. You may add Your own attribution
    +          notices within Derivative Works that You distribute, alongside
    +          or as an addendum to the NOTICE text from the Work, provided
    +          that such additional attribution notices cannot be construed
    +          as modifying the License.
    +
    +      You may add Your own copyright statement to Your modifications and
    +      may provide additional or different license terms and conditions
    +      for use, reproduction, or distribution of Your modifications, or
    +      for any such Derivative Works as a whole, provided Your use,
    +      reproduction, and distribution of the Work otherwise complies with
    +      the conditions stated in this License.
    +
    +   5. Submission of Contributions. Unless You explicitly state otherwise,
    +      any Contribution intentionally submitted for inclusion in the Work
    +      by You to the Licensor shall be under the terms and conditions of
    +      this License, without any additional terms or conditions.
    +      Notwithstanding the above, nothing herein shall supersede or modify
    +      the terms of any separate license agreement you may have executed
    +      with Licensor regarding such Contributions.
    +
    +   6. Trademarks. This License does not grant permission to use the trade
    +      names, trademarks, service marks, or product names of the Licensor,
    +      except as required for reasonable and customary use in describing the
    +      origin of the Work and reproducing the content of the NOTICE file.
    +
    +   7. Disclaimer of Warranty. Unless required by applicable law or
    +      agreed to in writing, Licensor provides the Work (and each
    +      Contributor provides its Contributions) on an "AS IS" BASIS,
    +      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
    +      implied, including, without limitation, any warranties or conditions
    +      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
    +      PARTICULAR PURPOSE. You are solely responsible for determining the
    +      appropriateness of using or redistributing the Work and assume any
    +      risks associated with Your exercise of permissions under this License.
    +
    +   8. Limitation of Liability. In no event and under no legal theory,
    +      whether in tort (including negligence), contract, or otherwise,
    +      unless required by applicable law (such as deliberate and grossly
    +      negligent acts) or agreed to in writing, shall any Contributor be
    +      liable to You for damages, including any direct, indirect, special,
    +      incidental, or consequential damages of any character arising as a
    +      result of this License or out of the use or inability to use the
    +      Work (including but not limited to damages for loss of goodwill,
    +      work stoppage, computer failure or malfunction, or any and all
    +      other commercial damages or losses), even if such Contributor
    +      has been advised of the possibility of such damages.
    +
    +   9. Accepting Warranty or Additional Liability. While redistributing
    +      the Work or Derivative Works thereof, You may choose to offer,
    +      and charge a fee for, acceptance of support, warranty, indemnity,
    +      or other liability obligations and/or rights consistent with this
    +      License. However, in accepting such obligations, You may act only
    +      on Your own behalf and on Your sole responsibility, not on behalf
    +      of any other Contributor, and only if You agree to indemnify,
    +      defend, and hold each Contributor harmless for any liability
    +      incurred by, or claims asserted against, such Contributor by reason
    +      of your accepting any such warranty or additional liability.
    +
    +   END OF TERMS AND CONDITIONS
     
  • @@ -6920,9 +7104,11 @@

    Used by:

    • addr2line
    • ahash
    • +
    • ahash
    • anyhow
    • arbitrary
    • arrayvec
    • +
    • async-channel
    • async-compression
    • async-io
    • async-lock
    • @@ -8802,7 +8988,6 @@

      Used by:

      Apache License 2.0

      Used by:

        -
      • async-channel
      • log
      • uuid
      • uuid
      • @@ -10298,7 +10483,6 @@

        Used by:

      • prost-derive
      • prost-types
      • rfc6979
      • -
      • rhai
      • rhai_codegen
      • rustc-workspace-hack
      • rustls
      • @@ -12902,6 +13086,35 @@

        Used by:

        The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +
      • +

        MIT License

        +

        Used by:

        + +
        MIT License
        +
        +Copyright (c) 2022 picoHz
        +
        +Permission is hereby granted, free of charge, to any person obtaining a copy
        +of this software and associated documentation files (the "Software"), to deal
        +in the Software without restriction, including without limitation the rights
        +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        +copies of the Software, and to permit persons to whom the Software is
        +furnished to do so, subject to the following conditions:
        +
        +The above copyright notice and this permission notice shall be included in all
        +copies or substantial portions of the Software.
        +
        +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        +SOFTWARE.
         
      • diff --git a/scripts/install.sh b/scripts/install.sh index db3b9144e4..e96d5dbd9b 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -11,7 +11,7 @@ BINARY_DOWNLOAD_PREFIX="https://github.com/apollographql/router/releases/downloa # Router version defined in apollo-router's Cargo.toml # Note: Change this line manually during the release steps. -PACKAGE_VERSION="v0.16.0" +PACKAGE_VERSION="v1.0.0-alpha.0" download_binary() { downloader --check diff --git a/uplink/Cargo.toml b/uplink/Cargo.toml index 8271915351..eb41be8590 100644 --- a/uplink/Cargo.toml +++ b/uplink/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-uplink" -version = "0.16.0" +version = "1.0.0-alpha.0" edition = "2021" build = "build.rs" license = "LicenseRef-ELv2" diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index a865b31f02..447387ccb0 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xtask" -version = "0.16.0" +version = "1.0.0-alpha.0" authors = ["Apollo Graph, Inc. "] edition = "2021" license = "Elastic-2.0"