diff --git a/.changesets/config_aaron_allow_custom_healthcheck_endpoint.md b/.changesets/config_aaron_allow_custom_healthcheck_endpoint.md deleted file mode 100644 index 128b4bcecf..0000000000 --- a/.changesets/config_aaron_allow_custom_healthcheck_endpoint.md +++ /dev/null @@ -1,7 +0,0 @@ -### Configuration: allow custom health check endpoint ([Issue #2938](https://github.com/apollographql/router/issues/2938)) - -Adds a configuration option for custom health check endpoints, `health_check.path`, with `/health` as the default value. - - - -By [@aaronArinder](https://github.com/aaronArinder) in https://github.com/apollographql/router/pull/4145 diff --git a/.changesets/config_jwks_polling_interval.md b/.changesets/config_jwks_polling_interval.md deleted file mode 100644 index fd37713c36..0000000000 --- a/.changesets/config_jwks_polling_interval.md +++ /dev/null @@ -1,14 +0,0 @@ -### Adds a `poll_interval` option to the JWKS endpoint in the Authentication plugin ([Issue #4185](https://github.com/apollographql/router/issues/4185)) - -In order to avoid rate limiting concerns on JWKS endpoints, this introduces a new `poll_interval` configuration option to set the interval per each JWKS URL. The configuration option takes in a human-readable duration (e.g. `60s` or `1minute 30s`). Example that sets interval to 30 seconds: - -```yml -authentication: - router: - jwt: - jwks: - - url: https://dev-zzp5enui.us.auth0.com/.well-known/jwks.json - poll_interval: 30s -``` - -By [@lleadbet](https://github.com/lleadbet) in https://github.com/apollographql/router/pull/4212 diff --git a/.changesets/config_lucas_jwks_polling_interval.md b/.changesets/config_lucas_jwks_polling_interval.md deleted file mode 100644 index 1730171667..0000000000 --- a/.changesets/config_lucas_jwks_polling_interval.md +++ /dev/null @@ -1,5 +0,0 @@ -### Configurable JWKS Poll Interval ([Issue #4185](https://github.com/apollographql/router/issues/4185)) - -The poll interval was previously hardcoded to 60 seconds. It is still the default now, but can be configured through the new `poll_interval` configuration option under each JWKS entry to avoid becoming rate-limited per endpoint. - -By [@lleadbet](https://github.com/lleadbet) in https://github.com/apollographql/router/pull/4212 \ No newline at end of file diff --git a/.changesets/docs_lb_coprocessor_break_router_stages.md b/.changesets/docs_lb_coprocessor_break_router_stages.md deleted file mode 100644 index 3dc242297e..0000000000 --- a/.changesets/docs_lb_coprocessor_break_router_stages.md +++ /dev/null @@ -1,9 +0,0 @@ -### docs: clarify coprocessor router stage responses ([PR #4189](https://github.com/apollographql/router/pull/4189)) - -The coprocessor RouterRequest and RouterResponse stages fully support `control: { break: 500 }` but the response body must be a string. This change provides examples in the "Terminating a client request" section. - - - ---- - -By [@lennyburdette](https://github.com/lennyburdette) in https://github.com/apollographql/router/pull/4189 \ No newline at end of file diff --git a/.changesets/exp_geal_redis_ttl.md b/.changesets/exp_geal_redis_ttl.md deleted file mode 100644 index f88ae8066a..0000000000 --- a/.changesets/exp_geal_redis_ttl.md +++ /dev/null @@ -1,15 +0,0 @@ -### support TTL in redis storage ([Issue #4163](https://github.com/apollographql/router/issues/4163)) - -It is now possible to set an expiration for distributed caching entries, both for APQ and query planning caches, using the configuration file: - -```yaml title="router.yaml" -supergraph: - query_planning: - experimental_cache: - redis: - urls: ["redis://..."] - timeout: 5ms # Optional, by default: 2ms - ttl: 24h # Optional, by default no expiration -``` - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4164 \ No newline at end of file diff --git a/.changesets/fix_garypen_3947_jwt_sub_expire.md b/.changesets/fix_garypen_3947_jwt_sub_expire.md deleted file mode 100644 index 785f837265..0000000000 --- a/.changesets/fix_garypen_3947_jwt_sub_expire.md +++ /dev/null @@ -1,5 +0,0 @@ -### Enfore JWT expiration for subscriptions ([Issue #3947](https://github.com/apollographql/router/issues/3947)) - -If a JWT expires whilst a subscription is executing, the subscription should be terminated. This also applies to deferred responses. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4166 \ No newline at end of file diff --git a/.changesets/fix_garypen_batch_ordering_fix.md b/.changesets/fix_garypen_batch_ordering_fix.md deleted file mode 100644 index 6d4293bd5a..0000000000 --- a/.changesets/fix_garypen_batch_ordering_fix.md +++ /dev/null @@ -1,5 +0,0 @@ -### Maintain query ordering within a batch ([Issue #4143](https://github.com/apollographql/router/issues/4143)) - -A bug in batch manipulation meant that the last element in a batch was treated as the first element. Ordering should be maintained and there is now an updated unit test to ensure this. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4144 \ No newline at end of file diff --git a/.changesets/fix_garypen_channel_fixes.md b/.changesets/fix_garypen_channel_fixes.md deleted file mode 100644 index c9124d1c50..0000000000 --- a/.changesets/fix_garypen_channel_fixes.md +++ /dev/null @@ -1,5 +0,0 @@ -### Ensure that license_stream and files bounded channels are bounded ([Issue #4109](https://github.com/apollographql/router/issues/4109)), ([Issue #4110](https://github.com/apollographql/router/issues/4110)) - -Convert `futures` channels to `tokio` channels to ensure that channel bounds are correctly observed. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4111 \ No newline at end of file diff --git a/.changesets/fix_garypen_final_channels.md b/.changesets/fix_garypen_final_channels.md deleted file mode 100644 index 91c82071c5..0000000000 --- a/.changesets/fix_garypen_final_channels.md +++ /dev/null @@ -1,5 +0,0 @@ -### Replace final group of futures channels with tokio channels ([Issue #4103](https://github.com/apollographql/router/issues/4103)) - -Replace more futures channels with tokio channels to ensure that channel bounds are respected as expected. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4138 \ No newline at end of file diff --git a/.changesets/fix_garypen_more_channels.md b/.changesets/fix_garypen_more_channels.md deleted file mode 100644 index 49476deb23..0000000000 --- a/.changesets/fix_garypen_more_channels.md +++ /dev/null @@ -1,5 +0,0 @@ -### Convert notification from futures channels to tokio channels ([Issue #4117](https://github.com/apollographql/router/issues/4117)) - -Convert `futures` channels to `tokio` channels to ensure that channel bounds are correctly observed. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4118 \ No newline at end of file diff --git a/.changesets/fix_geal_authorization_typename.md b/.changesets/fix_geal_authorization_typename.md deleted file mode 100644 index ddb32d5334..0000000000 --- a/.changesets/fix_geal_authorization_typename.md +++ /dev/null @@ -1,10 +0,0 @@ -### special case for __typename in authorization ([PR #3821](https://github.com/apollographql/router/pull/3821)) - -When evaluating authorization directives on fields returning interfaces, -we require the usage of fragments with type conditions if the interface -implementors have different security requirements. For the __typename -field though, we must make an exception, because it should be available -for all implementors - - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/3821 \ No newline at end of file diff --git a/.changesets/fix_geal_authz_filtered_fragments.md b/.changesets/fix_geal_authz_filtered_fragments.md deleted file mode 100644 index 9f2eb9c6c8..0000000000 --- a/.changesets/fix_geal_authz_filtered_fragments.md +++ /dev/null @@ -1,7 +0,0 @@ -### Authorization: Fix fragment filtering ([Issue #4060](https://github.com/apollographql/router/issues/4060)) - -If a fragment was removed, whether because its condition cannot be fulfilled or its selections were removed, then the corresponding fragment spreads must be removed from the filtered query. - -This also fixes the error paths related to fragments: before, the path started at the fragment definition, while now the fragment's errors are added at the point of application - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4155 \ No newline at end of file diff --git a/.changesets/fix_lrlna_update_apollo_compiler.md b/.changesets/fix_lrlna_update_apollo_compiler.md deleted file mode 100644 index 75653b4343..0000000000 --- a/.changesets/fix_lrlna_update_apollo_compiler.md +++ /dev/null @@ -1,8 +0,0 @@ -### Use less recursion in GraphQL parser ([Issue #4142](https://github.com/apollographql/router/issues/4142)) - -This updates the Router with the latest `apollo-parser` version, -which removes unnecessary use of recursion for parsing repeated syntax elements -such as enum values and union members in type definitions. -Some documents that used to hit the parserโ€™s recursion limit will now successfully parse. - -By [@lrlna](https://github.com/lrlna) in https://github.com/apollographql/router/pull/4167 diff --git a/.changesets/fix_nicolas_multi_value_headers.md b/.changesets/fix_nicolas_multi_value_headers.md deleted file mode 100644 index 080a026ed5..0000000000 --- a/.changesets/fix_nicolas_multi_value_headers.md +++ /dev/null @@ -1,5 +0,0 @@ -### Propagate multi-value headers to subgraphs ([Issue #4153](https://github.com/apollographql/router/issues/4153)) - -Use `HeaderMap.append` instead of `insert` to prevent erasing previous values when using multiple headers with the same name. - -By [@nmoutschen](https://github.com/nmoutschen) in https://github.com/apollographql/router/pull/4154 \ No newline at end of file diff --git a/.changesets/fix_simon_compiler_1_0.md b/.changesets/fix_simon_compiler_1_0.md deleted file mode 100644 index 7397017f43..0000000000 --- a/.changesets/fix_simon_compiler_1_0.md +++ /dev/null @@ -1,13 +0,0 @@ -### Port to apollo-compiler 1.0 beta ([PR #4038](https://github.com/apollographql/router/pull/4038)) - -Version 1.0 is a near-complete rewrite of `apollo-compiler`. -Using it in the Router unblocks a lot of upcoming work. - -As a more immediate benefit, some serialization-related bugs including -[Issue #3541](https://github.com/apollographql/router/issues/3541) are fixed. -The representation of GraphQL documents in previous compiler versions was immutable. -When modifying a query (such as to remove `@authenticated` fields from an unauthenticated request) -the Router would build a new data structure with `apollo-encoder`, serialize it, and reparse it. -`apollo-compiler`` 1.0 allows mutating a document in-place, skipping the serialization step entirely. - -By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/4038 diff --git a/CHANGELOG.md b/CHANGELOG.md index cce1400cb6..a696d0504b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,13 +4,122 @@ All notable changes to Router will be documented in this file. This project adheres to [Semantic Versioning v2.0.0](https://semver.org/spec/v2.0.0.html). +# [1.34.1] - 2023-11-21 + +## ๐Ÿ› Fixes + +### Authorization: Filtered fragments remove corresponding fragment spreads ([Issue #4060](https://github.com/apollographql/router/issues/4060)) + +When fragments have been removed because they do not meet the authorization requirements to be queried, or in the case that their conditions cannot be fulfilled, any related fragment spreads which remain will be now be removed from the operation before execution. Additionally, fragment error paths are now applied at the point that the fragment use. + +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4155 + +### Authorization: Maintain a special case for `__typename` ([PR #3821](https://github.com/apollographql/router/pull/3821)) + +When evaluating authorization directives on fields returning interfaces, the special GraphQL `__typename` field will be maintained as an exception since it must work for _all_ implementors + +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/3821 + +### Enforce JWT expiration for subscriptions ([Issue #3947](https://github.com/apollographql/router/issues/3947)) + +If a JWT expires whilst a subscription is executing, the subscription should be terminated. This also applies to deferred responses. + +By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4166 + +### Improved channel bounding via conversion of `futures` channels into `tokio` channels ([Issue #4103](https://github.com/apollographql/router/issues/4103), [Issue #4109](https://github.com/apollographql/router/issues/4109), [Issue #4110](https://github.com/apollographql/router/issues/4110), [Issue #4117](https://github.com/apollographql/router/issues/4117)) + +The use of `futures` channels have been converted to `tokio` channels which should ensure that channel bounds are observed correctly. We hope this brings some additional stability and predictability to the memory footprint. + +By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4111, https://github.com/apollographql/router/pull/4118, https://github.com/apollographql/router/pull/4138 + +### Reduce recursion in GraphQL parsing via `apollo-parser` improvements ([Issue #4142](https://github.com/apollographql/router/issues/4142)) + +Improvements to `apollo-parser` are brought in which remove unnecessary recursion when parsing repeated syntax elements, such as enum values and union members, in type definitions. Some documents that used to hit the parserโ€™s recursion limit will now successfully parse. + +By [@lrlna](https://github.com/lrlna) in https://github.com/apollographql/router/pull/4167 + +### Maintain query ordering within a batch ([Issue #4143](https://github.com/apollographql/router/issues/4143)) + +A bug in batch manipulation meant that the last element in a batch was treated as the first element. Ordering should be maintained and there is now an updated unit test to ensure this. + +By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/4144 + +### Port to `apollo-compiler` usage to `1.0-beta` ([PR #4038](https://github.com/apollographql/router/pull/4038)) + +Version 1.0 of `apollo-compiler` is a near-complete rewrite and introducing it in the Router unblocks a lot of upcoming work, including our _Rust-ification_ of the query planner. + +As an immediate benefit, some serialization-related bugs โ€” including [Issue #3541](https://github.com/apollographql/router/issues/3541) โ€” are fixed. Additionally, the representation of GraphQL documents within `apollo-compiler` is now mutable. This means that when modifying a query (such as to remove `@authenticated` fields from an unauthenticated request) the Router no longer needs to construct a new data structure (with `apollo-encoder`), serialize it, and reparse it. + +By [@SimonSapin](https://github.com/SimonSapin) in https://github.com/apollographql/router/pull/4038 + +### Propagate multi-value headers to subgraphs ([Issue #4153](https://github.com/apollographql/router/issues/4153)) + +Use `HeaderMap.append` instead of `insert` to avoid erasing previous values when using multiple headers with the same name. + +By [@nmoutschen](https://github.com/nmoutschen) in https://github.com/apollographql/router/pull/4154 + +## ๐Ÿ“ƒ Configuration + +### Authentication: Allow customizing a `poll_interval` for the JWKS endpoint configuration ([Issue #4185](https://github.com/apollographql/router/issues/4185)) + +In order to compensate for variances in rate-limiting requirements for JWKS endpoints, a new `poll_interval` configuration option exists to adjust the polling interval for each JWKS URL. When not specified for a URL, the polling interval will remain as the default of 60 seconds. + +The configuration option accepts a human-readable duration (e.g., `60s` or `1minute 30s`). For example, the following configuration snippet sets the polling interval for a single JWKS URL to be every 30 seconds: + +```yml +authentication: + router: + jwt: + jwks: + - url: https://dev-zzp5enui.us.auth0.com/.well-known/jwks.json + poll_interval: 30s +``` + +By [@lleadbet](https://github.com/lleadbet) in https://github.com/apollographql/router/pull/4212 + +### Allow customization of the health check endpoint path ([Issue #2938](https://github.com/apollographql/router/issues/2938)) + +Adds a configuration option for custom health check endpoints, `health_check.path`, with `/health` as the default value. + +By [@aaronArinder](https://github.com/aaronArinder) in https://github.com/apollographql/router/pull/4145 + +## ๐Ÿ“š Documentation + +### Coprocessors: Clarify capabilities of `RouterRequest` and `RouterResponse`'s `control` responses ([PR #4189](https://github.com/apollographql/router/pull/4189)) + +The coprocessor `RouterRequest` and `RouterResponse` stages already fully support `control: { break: 500 }`, but the response body *must* be a string. The documentation has been improved to provides examples in the [Terminating a client request](https://www.apollographql.com/docs/router/customizations/coprocessor#terminating-a-client-request) section. + +By [@lennyburdette](https://github.com/lennyburdette) in https://github.com/apollographql/router/pull/4189 + +## ๐Ÿงช Experimental + +### Support time-to-live (TTL) expiration for distributed cache entries ([Issue #4163](https://github.com/apollographql/router/issues/4163)) + +It is now possible to use configuration to set an expiration (time-to-live or TTL) for distributed caching (i.e., Redis) entries, both for APQ and query planning caches (using either `apq` or `query_planning`, respectively). By default, entries have no expiration. + +For example, to define the TTL for cached query plans stored in Redis to be 24 hours, the following configuration snippet could be used which specifies `ttl: 24h`. + +```yaml title="router.yaml" +supergraph: + query_planning: + experimental_cache: + redis: + urls: ["redis://..."] + timeout: 5ms # Optional, by default: 2ms + ttl: 24h # Optional, by default no expiration +``` + +Similarly, it is possible to set the cache for APQ entries. For details, see the [Distributed APQ caching](https://www.apollographql.com/docs/router/configuration/distributed-caching#distributed-apq-cachinghttps://www.apollographql.com/docs/router/configuration/distributed-caching#distributed-apq-caching) documentation. + +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/4164 + # [1.34.0] - 2023-11-15 ## ๐Ÿš€ Features ### Authorization: dry run option ([Issue #3843](https://github.com/apollographql/router/issues/3843)) -The `authorization.dry_run` option allows you to execute authorization directives without modifying a query while still returning the list of affected paths as top-level errors in a response. Use it to test authorization without breaking existing traffic. +The `authorization.dry_run` option allows you to execute authorization directives without modifying a query while still returning the list of affected paths as top-level errors in a response. Use it to test authorization without breaking existing traffic. For details, see the documentation for [`authorization.dry_run`](https://www.apollographql.com/docs/router/configuration/authorization#dry_run). @@ -18,7 +127,7 @@ By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/p ### Rhai: support alternative base64 alphabets ([Issue #3783](https://github.com/apollographql/router/issues/3783)) -When encoding or decoding strings, your Rhai customization scripts can now use alternative base64 alphabets in addition to the default `STANDARD`. +When encoding or decoding strings, your Rhai customization scripts can now use alternative base64 alphabets in addition to the default `STANDARD`. The available base64 alphabets: @@ -46,10 +155,10 @@ By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/p ### GraphOS authorization directives: `@policy` directive ([PR #3751](https://github.com/apollographql/router/pull/3751)) > โš ๏ธ This is an Enterprise feature of the Apollo Router. It requires an organization with a GraphOS Enterprise plan. -> +> > If your organization doesn't currently have an Enterprise plan, you can test out this functionality by signing up for a free Enterprise trial. -We introduce a new GraphOS authorization directive called `@policy` that is designed to offload authorization policy execution to a coprocessor or Rhai script. +We introduce a new GraphOS authorization directive called `@policy` that is designed to offload authorization policy execution to a coprocessor or Rhai script. When executing an operation, the relevant policy will be determined based on `@policy` directives in the schema. The coprocessor or Rhai script then indicates which of those policies requirements are not met. Finally, the router filters out fields which are unauthorized in the same way it does when using `@authenticated` or `@requiresScopes` before executing the operation. @@ -131,7 +240,7 @@ By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router The Apollo metrics exporter has been improved to not overconsume memory under high load. -Previously, the router appeared to leak memory when under load. The root cause was a bounded `futures` channel that did not enforce expected bounds on channel capacity and could overconsume memory. +Previously, the router appeared to leak memory when under load. The root cause was a bounded `futures` channel that did not enforce expected bounds on channel capacity and could overconsume memory. We have fixed the issue by: @@ -153,12 +262,12 @@ By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/p Configuration between tracing and metrics was inconsistent and did not align with the terminology defined in the OpenTelemetry (OTel) specification. To correct this, the following changes have been made to the router's YAML configuration, `router.yaml`: `telemetry.tracing.trace_config` has been renamed to `common` - + ```diff telemetry tracing: - trace_config: -+ common: ++ common: ``` `telemetry.tracing.common.attributes` has been renamed to `resource` @@ -167,7 +276,7 @@ telemetry tracing: common: - attributes: -+ resource: ++ resource: ``` `telemetry.metrics.common.resources` has been renamed to `resource` @@ -176,7 +285,7 @@ telemetry metrics: common: - resources: -+ resource: ++ resource: ``` `telemetry.tracing.propagation.awsxray` has been renamed to `aws_xray` ```diff @@ -187,7 +296,7 @@ telemetry + aws_xray: true ``` -Although the router will upgrade any existing configuration on startup, you should update your configuration to use the new format as soon as possible. +Although the router will upgrade any existing configuration on startup, you should update your configuration to use the new format as soon as possible. By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/4044, https://github.com/apollographql/router/pull/4050 and https://github.com/apollographql/router/pull/4051 @@ -209,7 +318,7 @@ By [@garypen](https://github.com/garypen) in https://github.com/apollographql/ro ### Clarify and fix docs about supported WebSocket subprotocols ([PR #4063](https://github.com/apollographql/router/pull/4063)) -The documentation about setting up and configuring WebSocket protocols for router-to-subgraph communication has been improved, including clarifying how to set the subgraph path that exposes WebSocket capabilities. +The documentation about setting up and configuring WebSocket protocols for router-to-subgraph communication has been improved, including clarifying how to set the subgraph path that exposes WebSocket capabilities. For details, see the [updated documentation](https://www.apollographql.com/docs/router/executing-operations/subscription-support/#websocket-setup) @@ -323,7 +432,7 @@ Telemetry configuration now supports `enabled` on all exporters. This allows exp ```diff telemetry: - tracing: + tracing: datadog: + enabled: true jaeger: @@ -334,7 +443,7 @@ telemetry: + enabled: true ``` -Existing configurations will be migrated to the new format automatically on startup. However, you should update your configuration to use the new format as soon as possible. +Existing configurations will be migrated to the new format automatically on startup. However, you should update your configuration to use the new format as soon as possible. By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/3952 @@ -368,7 +477,7 @@ By [@garypen](https://github.com/garypen) in https://github.com/apollographql/ro ### Move persisted queries to general availability ([PR #3914](https://github.com/apollographql/router/pull/3914)) -[Persisted Queries](https://www.apollographql.com/docs/graphos/operations/persisted-queries/) (a GraphOS Enterprise feature) is now moving to General Availability, from Preview where it has been since Apollo Router 1.25. In addition to Safelisting, persisted queries can now also be used to [pre-warm the query plan cache](https://github.com/apollographql/router/releases/tag/v1.31.0) to speed up schema updates. +[Persisted Queries](https://www.apollographql.com/docs/graphos/operations/persisted-queries/) (a GraphOS Enterprise feature) is now moving to General Availability, from Preview where it has been since Apollo Router 1.25. In addition to Safelisting, persisted queries can now also be used to [pre-warm the query plan cache](https://github.com/apollographql/router/releases/tag/v1.31.0) to speed up schema updates. The feature is now configured with a `persisted_queries` top-level key in the YAML configuration instead of with `preview_persisted_queries`. Existing configuration files will keep working as before, but with a warning that can be resolved by renaming the configuration section from `preview_persisted_queries` to `persisted_queries`: @@ -454,7 +563,7 @@ An experimental implementation of query batching has been added to support clien If youโ€™re using Apollo Client, you can leverage its built-in support for batching to reduce the number of individual requests sent to the Apollo Router. -Once [configured](https://www.apollographql.com/docs/react/api/link/apollo-link-batch-http/), Apollo Client automatically combines multiple operations into a single HTTP request. The number of operations within a batch is client configurable, including the maximum number of operations in a batch and the maximum duration to wait for operations to accumulate before sending the batch request. +Once [configured](https://www.apollographql.com/docs/react/api/link/apollo-link-batch-http/), Apollo Client automatically combines multiple operations into a single HTTP request. The number of operations within a batch is client configurable, including the maximum number of operations in a batch and the maximum duration to wait for operations to accumulate before sending the batch request. The Apollo Router must be configured to receive batch requests, otherwise it rejects them. When processing a batch request, the router deserializes and processes each operation of a batch independently, and it responds to the client only after all operations of the batch have been completed. @@ -487,15 +596,15 @@ tls: subgraph: all: client_authentication: - certificate_chain: - key: + certificate_chain: + key: # if configuring for a specific subgraph: subgraphs: # subgraph name products: client_authentication: - certificate_chain: - key: + certificate_chain: + key: ``` Details on TLS client authentication can be found in the [documentation](https://www.apollographql.com/docs/router/configuration/overview#tls-client-authentication-for-subgraph-requests) @@ -1163,7 +1272,7 @@ By [@garypen](https://github.com/garypen) in https://github.com/apollographql/ro ### Spelling of `content_negociation` corrected to `content_negotiation` ([Issue #3204](https://github.com/apollographql/router/issues/3204)) -We had a bit of a French twist on one of our internal module names. We won't promise it won't happen again, but `content_negociation` is spelled as `content_negotiation` now. ๐Ÿ˜„ +We had a bit of a French twist on one of our internal module names. We won't promise it won't happen again, but `content_negociation` is spelled as `content_negotiation` now. ๐Ÿ˜„ Thank you for this contribution! diff --git a/Cargo.lock b/Cargo.lock index 203572bcc8..c61057667d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -283,7 +283,7 @@ dependencies = [ [[package]] name = "apollo-router" -version = "1.34.1-rc.0" +version = "1.34.1" dependencies = [ "access-json", "anyhow", @@ -431,7 +431,7 @@ dependencies = [ [[package]] name = "apollo-router-benchmarks" -version = "1.34.1-rc.0" +version = "1.34.1" dependencies = [ "apollo-parser 0.6.3", "apollo-router", @@ -447,7 +447,7 @@ dependencies = [ [[package]] name = "apollo-router-scaffold" -version = "1.34.1-rc.0" +version = "1.34.1" dependencies = [ "anyhow", "cargo-scaffold", diff --git a/apollo-router-benchmarks/Cargo.toml b/apollo-router-benchmarks/Cargo.toml index fc326abf05..0267dc8428 100644 --- a/apollo-router-benchmarks/Cargo.toml +++ b/apollo-router-benchmarks/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router-benchmarks" -version = "1.34.1-rc.0" +version = "1.34.1" authors = ["Apollo Graph, Inc. "] edition = "2021" license = "Elastic-2.0" diff --git a/apollo-router-scaffold/Cargo.toml b/apollo-router-scaffold/Cargo.toml index 3bd29e44cc..8e23cdbc0e 100644 --- a/apollo-router-scaffold/Cargo.toml +++ b/apollo-router-scaffold/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router-scaffold" -version = "1.34.1-rc.0" +version = "1.34.1" authors = ["Apollo Graph, Inc. "] edition = "2021" license = "Elastic-2.0" diff --git a/apollo-router-scaffold/templates/base/Cargo.toml b/apollo-router-scaffold/templates/base/Cargo.toml index db08709de6..cf7308c057 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 = "1.34.1-rc.0" +apollo-router = "1.34.1" {{/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 2bd66be0b9..02df09e4ed 100644 --- a/apollo-router-scaffold/templates/base/xtask/Cargo.toml +++ b/apollo-router-scaffold/templates/base/xtask/Cargo.toml @@ -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 = "v1.34.1-rc.0" } +apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.34.1" } {{/if}} {{/if}} anyhow = "1.0.58" diff --git a/apollo-router/Cargo.toml b/apollo-router/Cargo.toml index 0359975040..8c9f87c9c0 100644 --- a/apollo-router/Cargo.toml +++ b/apollo-router/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router" -version = "1.34.1-rc.0" +version = "1.34.1" authors = ["Apollo Graph, Inc. "] repository = "https://github.com/apollographql/router/" documentation = "https://docs.rs/apollo-router" diff --git a/dockerfiles/tracing/docker-compose.datadog.yml b/dockerfiles/tracing/docker-compose.datadog.yml index 2f0c52d22a..2f135e6472 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:v1.34.1-rc.0 + image: ghcr.io/apollographql/router:v1.34.1 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 39b0eada62..2e7f89ff97 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:v1.34.1-rc.0 + image: ghcr.io/apollographql/router:v1.34.1 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 d3dfb85cc8..60af118d1e 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:v1.34.1-rc.0 + image: ghcr.io/apollographql/router:v1.34.1 volumes: - ./supergraph.graphql:/etc/config/supergraph.graphql - ./router/zipkin.router.yaml:/etc/config/configuration.yaml diff --git a/helm/chart/router/Chart.yaml b/helm/chart/router/Chart.yaml index 543e9968c7..1da1c4d61e 100644 --- a/helm/chart/router/Chart.yaml +++ b/helm/chart/router/Chart.yaml @@ -20,10 +20,10 @@ type: application # so it matches the shape of our release process and release automation. # By proxy of that decision, this version uses SemVer 2.0.0, though the prefix # of "v" is not included. -version: 1.34.1-rc.0 +version: 1.34.1 # 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: "v1.34.1-rc.0" +appVersion: "v1.34.1" diff --git a/helm/chart/router/README.md b/helm/chart/router/README.md index d8b3e2eda0..28efac1384 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: 1.34.1-rc.0](https://img.shields.io/badge/Version-1.34.1--rc.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.34.1-rc.0](https://img.shields.io/badge/AppVersion-v1.34.1--rc.0-informational?style=flat-square) +![Version: 1.34.1](https://img.shields.io/badge/Version-1.34.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.34.1](https://img.shields.io/badge/AppVersion-v1.34.1-informational?style=flat-square) ## Prerequisites @@ -11,7 +11,7 @@ ## Get Repo Info ```console -helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.34.1-rc.0 +helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.34.1 ``` ## Install Chart @@ -19,7 +19,7 @@ helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.34.1-rc.0 **Important:** only helm3 is supported ```console -helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.34.1-rc.0 --values my-values.yaml +helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.34.1 --values my-values.yaml ``` _See [configuration](#configuration) below._ diff --git a/scripts/install.sh b/scripts/install.sh index 743c4e7770..c5cc1ab298 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="v1.34.1-rc.0" +PACKAGE_VERSION="v1.34.1" download_binary() { downloader --check