From a0a89007d939be2bb0f117e27f96f8685f34b6a4 Mon Sep 17 00:00:00 2001 From: Jesse Rosenberger Date: Wed, 28 Aug 2024 12:48:08 +0300 Subject: [PATCH 1/4] prep release: v1.53.0 --- .../config_geal_raise_redis_timeouts.md | 5 - .../docs_tninesling_cost_docs_update.md | 5 - .changesets/feat_bnjjj_feat_417.md | 26 - .../feat_candle_exhale_deodorant_weeds.md | 28 - ...nabling_both_best_effort_query_planners.md | 14 - .changesets/feat_enhanced_observability.md | 13 - .changesets/feat_geal_v8_heap_statistics.md | 7 - .changesets/feat_helm_rollingupdate.md | 5 - .changesets/feat_propagation_format.md | 22 - .../feat_tarmac_peanuts_brandy_reverse.md | 7 - .../feat_tninesling_cost_directives.md | 30 - .../feat_tninesling_make_demand_control_ga.md | 9 - .changesets/feat_update_federation.md | 8 - .changesets/fix_bnjjj_fix_5702.md | 21 - ...bnjjj_fix_fatal_error_subgraph_response.md | 8 - ...x_bnjjj_fix_subgraph_selector_for_event.md | 23 - ...fix_bnjjj_fix_supergraph_query_selector.md | 22 - .../fix_bnjjj_improve_gt_lt_conditions.md | 23 - .changesets/fix_bryn_remote_spans.md | 16 - .changesets/fix_bryn_revert_5703.md | 5 - .changesets/fix_customer_snore_infant_wrap.md | 5 - ...rypen_fix_sessions_and_handle_reporting.md | 7 - .changesets/fix_geal_subgraph_error_path.md | 5 - .changesets/fix_missing_cache_gauge.md | 5 - .../fix_renee_consistent_uplink_type.md | 5 - .changesets/fix_renee_operation_variables.md | 13 - .../fix_tninesling_cost_result_filtering.md | 41 -- ...inesling_demand_control_score_arguments.md | 5 - ...int_bnjjj_improve_perf_custom_telemetry.md | 5 - CHANGELOG.md | 417 +++++++++++++ Cargo.lock | 8 +- apollo-federation/Cargo.toml | 2 +- apollo-router-benchmarks/Cargo.toml | 2 +- apollo-router-scaffold/Cargo.toml | 2 +- .../templates/base/Cargo.template.toml | 2 +- .../templates/base/xtask/Cargo.template.toml | 2 +- apollo-router/Cargo.toml | 4 +- .../tracing/docker-compose.datadog.yml | 2 +- dockerfiles/tracing/docker-compose.jaeger.yml | 2 +- dockerfiles/tracing/docker-compose.zipkin.yml | 2 +- helm/chart/router/Chart.yaml | 4 +- helm/chart/router/README.md | 6 +- licenses.html | 584 +++++++++++++++--- scripts/install.sh | 2 +- 44 files changed, 940 insertions(+), 489 deletions(-) delete mode 100644 .changesets/config_geal_raise_redis_timeouts.md delete mode 100644 .changesets/docs_tninesling_cost_docs_update.md delete mode 100644 .changesets/feat_bnjjj_feat_417.md delete mode 100644 .changesets/feat_candle_exhale_deodorant_weeds.md delete mode 100644 .changesets/feat_enabling_both_best_effort_query_planners.md delete mode 100644 .changesets/feat_enhanced_observability.md delete mode 100644 .changesets/feat_geal_v8_heap_statistics.md delete mode 100644 .changesets/feat_helm_rollingupdate.md delete mode 100644 .changesets/feat_propagation_format.md delete mode 100644 .changesets/feat_tarmac_peanuts_brandy_reverse.md delete mode 100644 .changesets/feat_tninesling_cost_directives.md delete mode 100644 .changesets/feat_tninesling_make_demand_control_ga.md delete mode 100644 .changesets/feat_update_federation.md delete mode 100644 .changesets/fix_bnjjj_fix_5702.md delete mode 100644 .changesets/fix_bnjjj_fix_fatal_error_subgraph_response.md delete mode 100644 .changesets/fix_bnjjj_fix_subgraph_selector_for_event.md delete mode 100644 .changesets/fix_bnjjj_fix_supergraph_query_selector.md delete mode 100644 .changesets/fix_bnjjj_improve_gt_lt_conditions.md delete mode 100644 .changesets/fix_bryn_remote_spans.md delete mode 100644 .changesets/fix_bryn_revert_5703.md delete mode 100644 .changesets/fix_customer_snore_infant_wrap.md delete mode 100644 .changesets/fix_garypen_fix_sessions_and_handle_reporting.md delete mode 100644 .changesets/fix_geal_subgraph_error_path.md delete mode 100644 .changesets/fix_missing_cache_gauge.md delete mode 100644 .changesets/fix_renee_consistent_uplink_type.md delete mode 100644 .changesets/fix_renee_operation_variables.md delete mode 100644 .changesets/fix_tninesling_cost_result_filtering.md delete mode 100644 .changesets/fix_tninesling_demand_control_score_arguments.md delete mode 100644 .changesets/maint_bnjjj_improve_perf_custom_telemetry.md diff --git a/.changesets/config_geal_raise_redis_timeouts.md b/.changesets/config_geal_raise_redis_timeouts.md deleted file mode 100644 index 3dec9af696..0000000000 --- a/.changesets/config_geal_raise_redis_timeouts.md +++ /dev/null @@ -1,5 +0,0 @@ -### Increase default Redis timeout ([PR #5795](https://github.com/apollographql/router/pull/5795)) - -The default Redis command timeout was increased from 2ms to 500ms to accommodate common production use cases. - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/5795 \ No newline at end of file diff --git a/.changesets/docs_tninesling_cost_docs_update.md b/.changesets/docs_tninesling_cost_docs_update.md deleted file mode 100644 index 7311bdfa38..0000000000 --- a/.changesets/docs_tninesling_cost_docs_update.md +++ /dev/null @@ -1,5 +0,0 @@ -### Add sections on using @cost and @listSize to demand control docs ([PR #5839](https://github.com/apollographql/router/pull/5839)) - -Updates the demand control documentation to include details on `@cost` and `@listSize` for more accurate cost estimation. - -By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5839 diff --git a/.changesets/feat_bnjjj_feat_417.md b/.changesets/feat_bnjjj_feat_417.md deleted file mode 100644 index 7c4dc0aba5..0000000000 --- a/.changesets/feat_bnjjj_feat_417.md +++ /dev/null @@ -1,26 +0,0 @@ -### Support new telemetry trace ID format ([PR #5735](https://github.com/apollographql/router/pull/5735)) - -The router supports a new UUID format for telemetry trace IDs. - - -The following formats are supported in router configuration for trace IDs: - -* `open_telemetry` -* `hexadecimal` (same as `opentelemetry`) -* `decimal` -* `datadog` -* `uuid` (may contain dashes) - -You can configure router logging to display the formatted trace ID with `display_trace_id`: - -```yaml - telemetry: - exporters: - logging: - stdout: - format: - json: - display_trace_id: (true|false|open_telemetry|hexadecimal|decimal|datadog|uuid) -``` - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5735 \ No newline at end of file diff --git a/.changesets/feat_candle_exhale_deodorant_weeds.md b/.changesets/feat_candle_exhale_deodorant_weeds.md deleted file mode 100644 index 00b59a4e3f..0000000000 --- a/.changesets/feat_candle_exhale_deodorant_weeds.md +++ /dev/null @@ -1,28 +0,0 @@ -### Add warnings for invalid configuration of custom telemetry ([PR #5759](https://github.com/apollographql/router/issues/5759)) - -The router now logs warnings when running with telemetry that may have invalid custom configurations. - - -For example, you may customize telemetry using invalid conditions or inaccessible statuses: - -```yaml -telemetry: - instrumentation: - events: - subgraph: - my.event: - message: "Auditing Router Event" - level: info - on: request - attributes: - subgraph.response.status: code - # Warning: should use selector for subgraph_name: true instead of comparing strings of subgraph_name and product - condition: - eq: - - subgraph_name - - product -``` - -Although the configuration is syntactically correct, its customization is invalid, and the router now outputs warnings for such invalid configurations. - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5759 \ No newline at end of file diff --git a/.changesets/feat_enabling_both_best_effort_query_planners.md b/.changesets/feat_enabling_both_best_effort_query_planners.md deleted file mode 100644 index 9faf5e04e9..0000000000 --- a/.changesets/feat_enabling_both_best_effort_query_planners.md +++ /dev/null @@ -1,14 +0,0 @@ -### Enable native query planner to run in the background ([PR #5790](https://github.com/apollographql/router/pull/5790), [PR #5811](https://github.com/apollographql/router/pull/5811), [PR #5771](https://github.com/apollographql/router/pull/5771), [PR #5860](https://github.com/apollographql/router/pull/5860)) - -The router now schedules background jobs to run the native (Rust) query planner to compare its results to the legacy implementation. This helps ascertain its correctness before making a decision to switch entirely to it from the legacy query planner. - -The router continues to use the legacy query planner to plan and execute -operations, so there is no effect on the hot path. - -To disable running background comparisons with the native query planner, you can configure the router to enable only the `legacy` query planner: - -```yaml -experimental_query_planner_mode: legacy -``` - -By [SimonSapin](https://github.com/SimonSapin) in ([PR #5790](https://github.com/apollographql/router/pull/5790), [PR #5811](https://github.com/apollographql/router/pull/5811), [PR #5771](https://github.com/apollographql/router/pull/5771) [PR #5860](https://github.com/apollographql/router/pull/5860)) \ No newline at end of file diff --git a/.changesets/feat_enhanced_observability.md b/.changesets/feat_enhanced_observability.md deleted file mode 100644 index 703e0a6918..0000000000 --- a/.changesets/feat_enhanced_observability.md +++ /dev/null @@ -1,13 +0,0 @@ -### New `apollo.router.cache.storage.estimated_size` gauge ([PR #5770](https://github.com/apollographql/router/pull/5770)) - -The router supports the new metric `apollo.router.cache.storage.estimated_size` that helps users understand and monitor the amount of memory that query planner cache entries consume. - -The `apollo.router.cache.storage.estimated_size` metric gives an estimated size in bytes of a cache entry. It has the following attributes: -- `kind`: `query planner`. -- `storage`: `memory`. - -Before using the estimate to decide whether to update the cache, users should validate that the estimate correlates with their pod's memory usage. - -To learn how to troubleshoot with this metric, see the [Pods terminating due to memory pressure](https://www.apollographql.com/docs/router/containerization/kubernetes#pods-terminating-due-to-memory-pressure) guide in docs. - -By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/5770 \ No newline at end of file diff --git a/.changesets/feat_geal_v8_heap_statistics.md b/.changesets/feat_geal_v8_heap_statistics.md deleted file mode 100644 index c091b108a8..0000000000 --- a/.changesets/feat_geal_v8_heap_statistics.md +++ /dev/null @@ -1,7 +0,0 @@ -### Add V8 heap usage metrics ([PR #5781](https://github.com/apollographql/router/pull/5781)) - -The router supports new gauge metrics for tracking heap memory usage of the V8 Javascript engine: -- `apollo.router.v8.heap.used`: heap memory used by V8, in bytes -- `apollo.router.v8.heap.total`: total heap allocated by V8, in bytes - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/5781 \ No newline at end of file diff --git a/.changesets/feat_helm_rollingupdate.md b/.changesets/feat_helm_rollingupdate.md deleted file mode 100644 index 84094eb0a9..0000000000 --- a/.changesets/feat_helm_rollingupdate.md +++ /dev/null @@ -1,5 +0,0 @@ -### Helm: Support `maxSurge` and `maxUnavailable` for rolling updates ([Issue #5664](https://github.com/apollographql/router/issues/5664)) - -The router Helm chart now supports the configuration of `maxSurge` and `maxUnavailable` for the `RollingUpdate` deployment strategy. - -By [Jon Christiansen](https://github.com/theJC) in https://github.com/apollographql/router/pull/5665 diff --git a/.changesets/feat_propagation_format.md b/.changesets/feat_propagation_format.md deleted file mode 100644 index 9aaad0efb2..0000000000 --- a/.changesets/feat_propagation_format.md +++ /dev/null @@ -1,22 +0,0 @@ -### Add `format` for trace ID propagation. ([PR #5803](https://github.com/apollographql/router/pull/5803)) - -The router now supports specifying the format of trace IDs that are propagated to subgraphs via headers. - -You can configure the format with the `format` option: - -```yaml -telemetry: - exporters: - tracing: - propagation: - request: - header_name: "my_header" - # Must be in UUID form, with or without dashes - format: uuid -``` - -Note that incoming requests must be some form of UUID, either with or without dashes. - -To learn about supported formats, go to [`request` configuration reference](https://apollographql.com/docs/router/configuration/telemetry/exporters/tracing/overview#request-configuration-reference) docs. - -By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/5803 diff --git a/.changesets/feat_tarmac_peanuts_brandy_reverse.md b/.changesets/feat_tarmac_peanuts_brandy_reverse.md deleted file mode 100644 index 1b87851a52..0000000000 --- a/.changesets/feat_tarmac_peanuts_brandy_reverse.md +++ /dev/null @@ -1,7 +0,0 @@ -### REMINDER: ADD CHANGELOG NOTICE FOR CACHE BUMP FOR FEDERATION UPGRADE - -THIS CHANGELOG SHOULD NOT BE IN THE FINAL RELEASE. THIS IS A REMINDER TO PUT THE BANNER AT THE TOP OF THE CHANGELOG DURING FINALIZATION. - -IF YOU ARE REVIEWING THIS CHANGESET, CALL THIS OUT! :) - -By [@abernix](https://github.com/abernix) \ No newline at end of file diff --git a/.changesets/feat_tninesling_cost_directives.md b/.changesets/feat_tninesling_cost_directives.md deleted file mode 100644 index 07b05cbdf6..0000000000 --- a/.changesets/feat_tninesling_cost_directives.md +++ /dev/null @@ -1,30 +0,0 @@ -### Support demand control directives ([PR #5777](https://github.com/apollographql/router/pull/5777)) - -The router supports two new demand control directives, `@cost` and `@listSize`, that you can use to provide more accurate estimates of GraphQL operation costs to the router's demand control plugin. - -Use the `@cost` directive to customize the weights of operation cost calculations, particularly for expensive resolvers. - -```graphql -type Product { - id: ID! - name: String - expensiveField: Int @cost(weight: 20) -} -``` - -Use the `@listSize` directive to provide a more accurate estimate for the size of a specific list field, particularly for those that differ greatly from the global list size estimate. - -```graphql -type Magazine { - # This is assumed to always return 5 items - headlines: [Article] @listSize(assumedSize: 5) - - # This is estimated to return as many items as are requested by the parameter named "first" - getPage(first: Int!, after: ID!): [Article] - @listSize(slicingArguments: ["first"]) -} -``` - -To learn more, go to [Demand Control](https://www.apollographql.com/docs/router/executing-operations/demand-control/) docs. - -By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5777 diff --git a/.changesets/feat_tninesling_make_demand_control_ga.md b/.changesets/feat_tninesling_make_demand_control_ga.md deleted file mode 100644 index 8f99b75478..0000000000 --- a/.changesets/feat_tninesling_make_demand_control_ga.md +++ /dev/null @@ -1,9 +0,0 @@ -### General Availability (GA) of Demand Control ([PR #5868](https://github.com/apollographql/router/pull/5868)) - -Demand control in the router is now a generally available (GA) feature. - -**GA compatibility update**: if you used demand control during its preview, to use it in GA you must update your configuration from `preview_demand_control` to `demand_control`. - -To learn more, go to [Demand Control](https://www.apollographql.com/docs/router/executing-operations/demand-control/) docs. - -By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5868 diff --git a/.changesets/feat_update_federation.md b/.changesets/feat_update_federation.md deleted file mode 100644 index b3c0670daa..0000000000 --- a/.changesets/feat_update_federation.md +++ /dev/null @@ -1,8 +0,0 @@ -### Update federation to 2.8.3 ([PR #5781](https://github.com/apollographql/router/pull/5781)) - -> [!IMPORTANT] -> If you have enabled [Distributed query plan caching](https://www.apollographql.com/docs/router/configuration/distributed-caching/#distributed-query-plan-caching), this release changes the hashing algorithm used for the cache keys. On account of this, you should anticipate additional cache regeneration cost when updating between these versions while the new hashing algorithm comes into service. - -This updates the router from federation version 2.8.1 to 2.8.3, with a [fix for fragment generation](https://github.com/apollographql/federation/pull/3043). - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/5781 diff --git a/.changesets/fix_bnjjj_fix_5702.md b/.changesets/fix_bnjjj_fix_5702.md deleted file mode 100644 index d364b78f27..0000000000 --- a/.changesets/fix_bnjjj_fix_5702.md +++ /dev/null @@ -1,21 +0,0 @@ -### Fix `exists` condition for custom telemetry events ([Issue #5702](https://github.com/apollographql/router/issues/5702)) - -The router now properly handles the `exists` condition for events. The following configuration now works as intended: - -```yaml -telemetry: - instrumentation: - events: - supergraph: - my.event: - message: "Auditing Router Event" - level: info - on: request - attributes: - graphql.operation.name: true - condition: - exists: - operation_name: string -``` - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5759 \ No newline at end of file diff --git a/.changesets/fix_bnjjj_fix_fatal_error_subgraph_response.md b/.changesets/fix_bnjjj_fix_fatal_error_subgraph_response.md deleted file mode 100644 index b36b9ab32b..0000000000 --- a/.changesets/fix_bnjjj_fix_fatal_error_subgraph_response.md +++ /dev/null @@ -1,8 +0,0 @@ -### fix(subgraph_service): when the subgraph connection is closed or in error, return a proper subgraph response ([PR #5859](https://github.com/apollographql/router/pull/5859)) - - -The router now returns a proper subgraph response, with an error if necessary, when a subgraph connection is closed or returns an error. - -Previously, this issue prevented the subgraph response service from being triggered in coprocessors or Rhai scripts. - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5859 \ No newline at end of file diff --git a/.changesets/fix_bnjjj_fix_subgraph_selector_for_event.md b/.changesets/fix_bnjjj_fix_subgraph_selector_for_event.md deleted file mode 100644 index 9894b91622..0000000000 --- a/.changesets/fix_bnjjj_fix_subgraph_selector_for_event.md +++ /dev/null @@ -1,23 +0,0 @@ -### Evaluate selectors in response stage when possible ([PR #5725](https://github.com/apollographql/router/pull/5725)) - - -The router now supports having various supergraph selectors on response events. - -Because `events` are triggered at a specific event (`request`|`response`|`error`), you usually have only one condition for a related event. You can however have selectors that can be applied to several events, like `subgraph_name` to get the subgraph name). - -Example of an event to log the raw subgraph response only on a subgraph named `products`, this was not working before. - -```yaml -telemetry: - instrumentation: - events: - subgraph: - response: - level: info - condition: - eq: - - subgraph_name: true - - "products" -``` - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5725 \ No newline at end of file diff --git a/.changesets/fix_bnjjj_fix_supergraph_query_selector.md b/.changesets/fix_bnjjj_fix_supergraph_query_selector.md deleted file mode 100644 index 4546589f00..0000000000 --- a/.changesets/fix_bnjjj_fix_supergraph_query_selector.md +++ /dev/null @@ -1,22 +0,0 @@ -### Support supergraph query selector for events ([PR #5764](https://github.com/apollographql/router/pull/5764)) - -The router now supports the `query: root_fields` selector for `event_response`. Previously the selector worked for `response` stage events but didn't work for `event_response`. - -The following configuration for a `query: root_fields` on an `event_response` now works: - -```yaml -telemetry: - instrumentation: - events: - supergraph: - OPERATION_LIMIT_INFO: - message: operation limit info - on: event_response - level: info - attributes: - graphql.operation.name: true - query.root_fields: - query: root_fields -``` - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5764 \ No newline at end of file diff --git a/.changesets/fix_bnjjj_improve_gt_lt_conditions.md b/.changesets/fix_bnjjj_improve_gt_lt_conditions.md deleted file mode 100644 index 8923ee459b..0000000000 --- a/.changesets/fix_bnjjj_improve_gt_lt_conditions.md +++ /dev/null @@ -1,23 +0,0 @@ -### Support `gt`/`lt` conditions for parsing string selectors to numbers ([PR #5758](https://github.com/apollographql/router/pull/5758)) - -The router now supports greater than (`gt`) and less than (`lt`) conditions for header selectors. - -The following example applies an attribute on a span if the `content-length` header is greater than 100: - -```yaml -telemetry: - instrumentation: - spans: - mode: spec_compliant - router: - attributes: - trace_id: true - payload_is_to_big: # Set this attribute to true if the value of content-length header is > than 100 - static: true - condition: - gt: - - request_header: "content-length" - - 100 -``` - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5758 \ No newline at end of file diff --git a/.changesets/fix_bryn_remote_spans.md b/.changesets/fix_bryn_remote_spans.md deleted file mode 100644 index 76eb80956d..0000000000 --- a/.changesets/fix_bryn_remote_spans.md +++ /dev/null @@ -1,16 +0,0 @@ -### Fix trace propagation via header ([PR #5802](https://github.com/apollographql/router/pull/5802)) - -The router now correctly propagates trace IDs when using the `propagation.request.header_name` configuration option. - -```yaml -telemetry: - exporters: - tracing: - propagation: - request: - header_name: "id_from_header" -``` - -Previously, trace IDs weren't transferred to the root span of the request, causing spans to be incorrectly attributed to new traces. - -By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/5802 diff --git a/.changesets/fix_bryn_revert_5703.md b/.changesets/fix_bryn_revert_5703.md deleted file mode 100644 index bc072c4a8b..0000000000 --- a/.changesets/fix_bryn_revert_5703.md +++ /dev/null @@ -1,5 +0,0 @@ -### Fix Datadog underreporting APM metrics ([PR #5780](https://github.com/apollographql/router/pull/5780)) - -The previous [PR #5703](https://github.com/apollographql/router/pull/5703) has been reverted in this release because it caused Datadog to underreport APM span metrics. - -By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/5780 diff --git a/.changesets/fix_customer_snore_infant_wrap.md b/.changesets/fix_customer_snore_infant_wrap.md deleted file mode 100644 index c69784386d..0000000000 --- a/.changesets/fix_customer_snore_infant_wrap.md +++ /dev/null @@ -1,5 +0,0 @@ -### Enable progressive override with federation 2.7 and above ([PR #5754](https://github.com/apollographql/router/pull/5754)) - -The progressive override feature is now available when using Federation v2.7 and above. - -By [@o0ignition0o](https://github.com/o0ignition0o) in https://github.com/apollographql/router/pull/5754 diff --git a/.changesets/fix_garypen_fix_sessions_and_handle_reporting.md b/.changesets/fix_garypen_fix_sessions_and_handle_reporting.md deleted file mode 100644 index f9cd880578..0000000000 --- a/.changesets/fix_garypen_fix_sessions_and_handle_reporting.md +++ /dev/null @@ -1,7 +0,0 @@ -### Fix session counting and the reporting of file handle shortage ([PR #5834](https://github.com/apollographql/router/pull/5834)) - -The router previously gave incorrect warnings about file handle shortages due to session counting incorrectly including connections to health-check connections or other non-GraphQL connections. This is now corrected so that only connections to the main GraphQL port are counted, and file handle shortages are now handled correctly as a global resource. - -Also, the router's port listening logic had its own custom rate-limiting of log notifications. This has been removed and replaced by the [standard router log rate limiting configuration](https://www.apollographql.com/docs/router/configuration/telemetry/exporters/logging/stdout/#rate_limit) - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/5834 diff --git a/.changesets/fix_geal_subgraph_error_path.md b/.changesets/fix_geal_subgraph_error_path.md deleted file mode 100644 index f68b129de2..0000000000 --- a/.changesets/fix_geal_subgraph_error_path.md +++ /dev/null @@ -1,5 +0,0 @@ -### Set subgraph error path if not present ([PR #5773](https://github.com/apollographql/router/pull/5773)) - -The router now sets the error path in all cases during subgraph response conversion. Previously the router's subgraph service didn't set the error path for some network-level errors. - -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/5773 \ No newline at end of file diff --git a/.changesets/fix_missing_cache_gauge.md b/.changesets/fix_missing_cache_gauge.md deleted file mode 100644 index 1b71523210..0000000000 --- a/.changesets/fix_missing_cache_gauge.md +++ /dev/null @@ -1,5 +0,0 @@ -### Fix missing `apollo_router_cache_size` metric ([PR #5770](https://github.com/apollographql/router/pull/5770)) - -Previously, if the in-memory cache wasn't mutated, the `apollo_router_cache_size` metric wouldn't be available. This has been fixed in this release. - -By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/5770 diff --git a/.changesets/fix_renee_consistent_uplink_type.md b/.changesets/fix_renee_consistent_uplink_type.md deleted file mode 100644 index 7a6e044edf..0000000000 --- a/.changesets/fix_renee_consistent_uplink_type.md +++ /dev/null @@ -1,5 +0,0 @@ -### Fix inconsistent `type` attribute in `apollo.router.uplink.fetch.duration` metric ([PR #5816](https://github.com/apollographql/router/pull/5816)) - -The router now always reports a short name in the `type` attribute for the `apollo.router.fetch.duration` metric, instead of sometimes using a fully-qualified Rust path and sometimes using a short name. - -By [@goto-bus-stop](https://github.com/goto-bus-stop) in https://github.com/apollographql/router/pull/5816 diff --git a/.changesets/fix_renee_operation_variables.md b/.changesets/fix_renee_operation_variables.md deleted file mode 100644 index 5b72677432..0000000000 --- a/.changesets/fix_renee_operation_variables.md +++ /dev/null @@ -1,13 +0,0 @@ -### Fix GraphQL query directives validation bug ([PR #5753](https://github.com/apollographql/router/pull/5753)) - -The router now supports GraphQL queries where a variable is used in a directive on the same operation where the variable is declared. - -For example, the following query both declares and uses `$var`: - -```graphql -query GetSomething($var: Int!) @someDirective(argument: $var) { - something -} -``` - -By [@goto-bus-stop](https://github.com/goto-bus-stop) in https://github.com/apollographql/router/pull/5753 diff --git a/.changesets/fix_tninesling_cost_result_filtering.md b/.changesets/fix_tninesling_cost_result_filtering.md deleted file mode 100644 index 57bdfbe67f..0000000000 --- a/.changesets/fix_tninesling_cost_result_filtering.md +++ /dev/null @@ -1,41 +0,0 @@ -### Fix cost result filtering for custom metrics ([PR #5838](https://github.com/apollographql/router/pull/5838)) - -The router can now filter for custom metrics that use demand control cost information in their conditions. This allows a telemetry config such as the following: - -```yaml -telemetry: - instrumentation: - instruments: - supergraph: - cost.rejected.operations: - type: histogram - value: - cost: estimated - description: "Estimated cost per rejected operation." - unit: delta - condition: - eq: - - cost: result - - "COST_ESTIMATED_TOO_EXPENSIVE" -``` - -This also fixes an issue where attribute comparisons would fail silently when comparing integers to float values. Users can now write integer values in conditions that compare against selectors that select floats: - -```yaml -telemetry: - instrumentation: - instruments: - supergraph: - cost.rejected.operations: - type: histogram - value: - cost: actual - description: "Estimated cost per rejected operation." - unit: delta - condition: - gt: - - cost: delta - - 1 -``` - -By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5838 diff --git a/.changesets/fix_tninesling_demand_control_score_arguments.md b/.changesets/fix_tninesling_demand_control_score_arguments.md deleted file mode 100644 index 200523fb00..0000000000 --- a/.changesets/fix_tninesling_demand_control_score_arguments.md +++ /dev/null @@ -1,5 +0,0 @@ -### Add argument cost to type cost in demand control scoring algorithm ([PR #5740](https://github.com/apollographql/router/pull/5740)) - -The router's operation scoring algorithm for demand control now includes field arguments in the type cost. - -By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5740 diff --git a/.changesets/maint_bnjjj_improve_perf_custom_telemetry.md b/.changesets/maint_bnjjj_improve_perf_custom_telemetry.md deleted file mode 100644 index 722e5ad6ed..0000000000 --- a/.changesets/maint_bnjjj_improve_perf_custom_telemetry.md +++ /dev/null @@ -1,5 +0,0 @@ -### Improve performance by optimizing telemetry meter and instrument creation ([PR #5629](https://github.com/apollographql/router/pull/5629)) - -The router's performance has been improved by removing telemetry creation out of the critical path, from being created in every service to being created when starting the telemetry plugin. - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5629 \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fc01da455..544198df12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,423 @@ 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.53.0] - 2024-08-28 + +> [!IMPORTANT] +> If you have enabled [Distributed query plan caching](https://www.apollographql.com/docs/router/configuration/distributed-caching/#distributed-query-plan-caching), this release changes the hashing algorithm used for the cache keys. On account of this, you should anticipate additional cache regeneration cost when updating between these versions while the new hashing algorithm comes into service. + +## 🚀 Features + +### Add warnings for invalid configuration of custom telemetry ([PR #5759](https://github.com/apollographql/router/issues/5759)) + +The router now logs warnings when running with telemetry that may have invalid custom configurations. + +For example, you may customize telemetry using invalid conditions or inaccessible statuses: + +```yaml +telemetry: + instrumentation: + events: + subgraph: + my.event: + message: "Auditing Router Event" + level: info + on: request + attributes: + subgraph.response.status: code + # Warning: should use selector for subgraph_name: true instead of comparing strings of subgraph_name and product + condition: + eq: + - subgraph_name + - product +``` + +Although the configuration is syntactically correct, its customization is invalid, and the router now outputs warnings for such invalid configurations. + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5759 + +### Support demand control directives ([PR #5777](https://github.com/apollographql/router/pull/5777)) + +The router supports two new demand control directives, `@cost` and `@listSize`, that you can use to provide more accurate estimates of GraphQL operation costs to the router's demand control plugin. + +Use the `@cost` directive to customize the weights of operation cost calculations, particularly for expensive resolvers. + +```graphql +type Product { + id: ID! + name: String + expensiveField: Int @cost(weight: 20) +} +``` + +Use the `@listSize` directive to provide a more accurate estimate for the size of a specific list field, particularly for those that differ greatly from the global list size estimate. + +```graphql +type Magazine { + # This is assumed to always return 5 items + headlines: [Article] @listSize(assumedSize: 5) + + # This is estimated to return as many items as are requested by the parameter named "first" + getPage(first: Int!, after: ID!): [Article] + @listSize(slicingArguments: ["first"]) +} +``` + +To learn more, go to [Demand Control](https://www.apollographql.com/docs/router/executing-operations/demand-control/) docs. + +By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5777 + +### Add V8 heap usage metrics ([PR #5781](https://github.com/apollographql/router/pull/5781)) + +The router supports new gauge metrics for tracking heap memory usage of the V8 Javascript engine: +- `apollo.router.v8.heap.used`: heap memory used by V8, in bytes +- `apollo.router.v8.heap.total`: total heap allocated by V8, in bytes + +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/5781 + +### Update Federation to v2.9.0 ([PR #5902](https://github.com/apollographql/router/pull/5902)) + +This updates the router to Federation v2.9.0. + +By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5902 + +### Enable native query planner to run in the background ([PR #5790](https://github.com/apollographql/router/pull/5790), [PR #5811](https://github.com/apollographql/router/pull/5811), [PR #5771](https://github.com/apollographql/router/pull/5771), [PR #5860](https://github.com/apollographql/router/pull/5860)) + +The router now schedules background jobs to run the native (Rust) query planner to compare its results to the legacy implementation. This helps ascertain its correctness before making a decision to switch entirely to it from the legacy query planner. + +The router continues to use the legacy query planner to plan and execute operations, so there is no effect on the hot path. + +To disable running background comparisons with the native query planner, you can configure the router to enable only the `legacy` query planner: + +```yaml +experimental_query_planner_mode: legacy +``` + +By [SimonSapin](https://github.com/SimonSapin) in ([PR #5790](https://github.com/apollographql/router/pull/5790), [PR #5811](https://github.com/apollographql/router/pull/5811), [PR #5771](https://github.com/apollographql/router/pull/5771) [PR #5860](https://github.com/apollographql/router/pull/5860)) + +### Helm: Support `maxSurge` and `maxUnavailable` for rolling updates ([Issue #5664](https://github.com/apollographql/router/issues/5664)) + +The router Helm chart now supports the configuration of `maxSurge` and `maxUnavailable` for the `RollingUpdate` deployment strategy. + +By [Jon Christiansen](https://github.com/theJC) in https://github.com/apollographql/router/pull/5665 + +### Support new telemetry trace ID format ([PR #5735](https://github.com/apollographql/router/pull/5735)) + +The router supports a new UUID format for telemetry trace IDs. + +The following formats are supported in router configuration for trace IDs: + +* `open_telemetry` +* `hexadecimal` (same as `opentelemetry`) +* `decimal` +* `datadog` +* `uuid` (may contain dashes) + +You can configure router logging to display the formatted trace ID with `display_trace_id`: + +```yaml + telemetry: + exporters: + logging: + stdout: + format: + json: + display_trace_id: (true|false|open_telemetry|hexadecimal|decimal|datadog|uuid) +``` + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5735 + +### Add `format` for trace ID propagation. ([PR #5803](https://github.com/apollographql/router/pull/5803)) + +The router now supports specifying the format of trace IDs that are propagated to subgraphs via headers. + +You can configure the format with the `format` option: + +```yaml +telemetry: + exporters: + tracing: + propagation: + request: + header_name: "my_header" + # Must be in UUID form, with or without dashes + format: uuid +``` + +Note that incoming requests must be some form of UUID, either with or without dashes. + +To learn about supported formats, go to [`request` configuration reference](https://apollographql.com/docs/router/configuration/telemetry/exporters/tracing/overview#request-configuration-reference) docs. + +By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/5803 + +### General Availability (GA) of Demand Control ([PR #5868](https://github.com/apollographql/router/pull/5868)) + +Demand control in the router is now a generally available (GA) feature. + +**GA compatibility update**: if you used demand control during its preview, to use it in GA you must update your configuration from `preview_demand_control` to `demand_control`. + +To learn more, go to [Demand Control](https://www.apollographql.com/docs/router/executing-operations/demand-control/) docs. + +By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5868 + +### New `apollo.router.cache.storage.estimated_size` gauge ([PR #5770](https://github.com/apollographql/router/pull/5770)) + +The router supports the new metric `apollo.router.cache.storage.estimated_size` that helps users understand and monitor the amount of memory that query planner cache entries consume. + +The `apollo.router.cache.storage.estimated_size` metric gives an estimated size in bytes of a cache entry. It has the following attributes: +- `kind`: `query planner`. +- `storage`: `memory`. + +Before using the estimate to decide whether to update the cache, users should validate that the estimate correlates with their pod's memory usage. + +To learn how to troubleshoot with this metric, see the [Pods terminating due to memory pressure](https://www.apollographql.com/docs/router/containerization/kubernetes#pods-terminating-due-to-memory-pressure) guide in docs. + +By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/5770 + +## 🐛 Fixes + +### Fix GraphQL query directives validation bug ([PR #5753](https://github.com/apollographql/router/pull/5753)) + +The router now supports GraphQL queries where a variable is used in a directive on the same operation where the variable is declared. + +For example, the following query both declares and uses `$var`: + +```graphql +query GetSomething(: Int!) @someDirective(argument: $var) { + something +} +``` + +By [@goto-bus-stop](https://github.com/goto-bus-stop) in https://github.com/apollographql/router/pull/5753 + +### Evaluate selectors in response stage when possible ([PR #5725](https://github.com/apollographql/router/pull/5725)) + +The router now supports having various supergraph selectors on response events. + +Because `events` are triggered at a specific event (`request`|`response`|`error`), you usually have only one condition for a related event. You can however have selectors that can be applied to several events, like `subgraph_name` to get the subgraph name). + +Example of an event to log the raw subgraph response only on a subgraph named `products`, this was not working before. + +```yaml +telemetry: + instrumentation: + events: + subgraph: + response: + level: info + condition: + eq: + - subgraph_name: true + - "products" +``` + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5725 + +### Fix trace propagation via header ([PR #5802](https://github.com/apollographql/router/pull/5802)) + +The router now correctly propagates trace IDs when using the `propagation.request.header_name` configuration option. + +```yaml +telemetry: + exporters: + tracing: + propagation: + request: + header_name: "id_from_header" +``` + +Previously, trace IDs weren't transferred to the root span of the request, causing spans to be incorrectly attributed to new traces. + +By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/5802 + +### Add argument cost to type cost in demand control scoring algorithm ([PR #5740](https://github.com/apollographql/router/pull/5740)) + +The router's operation scoring algorithm for demand control now includes field arguments in the type cost. + +By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5740 + +### Support `gt`/`lt` conditions for parsing string selectors to numbers ([PR #5758](https://github.com/apollographql/router/pull/5758)) + +The router now supports greater than (`gt`) and less than (`lt`) conditions for header selectors. + +The following example applies an attribute on a span if the `content-length` header is greater than 100: + +```yaml +telemetry: + instrumentation: + spans: + mode: spec_compliant + router: + attributes: + trace_id: true + payload_is_to_big: # Set this attribute to true if the value of content-length header is > than 100 + static: true + condition: + gt: + - request_header: "content-length" + - 100 +``` + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5758 + +### Set subgraph error path if not present ([PR #5773](https://github.com/apollographql/router/pull/5773)) + +The router now sets the error path in all cases during subgraph response conversion. Previously the router's subgraph service didn't set the error path for some network-level errors. + +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/5773 + +### Fix cost result filtering for custom metrics ([PR #5838](https://github.com/apollographql/router/pull/5838)) + +The router can now filter for custom metrics that use demand control cost information in their conditions. This allows a telemetry config such as the following: + +```yaml +telemetry: + instrumentation: + instruments: + supergraph: + cost.rejected.operations: + type: histogram + value: + cost: estimated + description: "Estimated cost per rejected operation." + unit: delta + condition: + eq: + - cost: result + - "COST_ESTIMATED_TOO_EXPENSIVE" +``` + +This also fixes an issue where attribute comparisons would fail silently when comparing integers to float values. Users can now write integer values in conditions that compare against selectors that select floats: + +```yaml +telemetry: + instrumentation: + instruments: + supergraph: + cost.rejected.operations: + type: histogram + value: + cost: actual + description: "Estimated cost per rejected operation." + unit: delta + condition: + gt: + - cost: delta + - 1 +``` + +By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5838 + +### Fix missing `apollo_router_cache_size` metric ([PR #5770](https://github.com/apollographql/router/pull/5770)) + +Previously, if the in-memory cache wasn't mutated, the `apollo_router_cache_size` metric wouldn't be available. This has been fixed in this release. + +By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/5770 + +### fix(subgraph_service): when the subgraph connection is closed or in error, return a proper subgraph response ([PR #5859](https://github.com/apollographql/router/pull/5859)) + + +The router now returns a proper subgraph response, with an error if necessary, when a subgraph connection is closed or returns an error. + +Previously, this issue prevented the subgraph response service from being triggered in coprocessors or Rhai scripts. + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5859 + +### Fix `exists` condition for custom telemetry events ([Issue #5702](https://github.com/apollographql/router/issues/5702)) + +The router now properly handles the `exists` condition for events. The following configuration now works as intended: + +```yaml +telemetry: + instrumentation: + events: + supergraph: + my.event: + message: "Auditing Router Event" + level: info + on: request + attributes: + graphql.operation.name: true + condition: + exists: + operation_name: string +``` + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5759 + +### Fix Datadog underreporting APM metrics ([PR #5780](https://github.com/apollographql/router/pull/5780)) + +The previous [PR #5703](https://github.com/apollographql/router/pull/5703) has been reverted in this release because it caused Datadog to underreport APM span metrics. + +By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/5780 + +### Fix inconsistent `type` attribute in `apollo.router.uplink.fetch.duration` metric ([PR #5816](https://github.com/apollographql/router/pull/5816)) + +The router now always reports a short name in the `type` attribute for the `apollo.router.fetch.duration` metric, instead of sometimes using a fully-qualified Rust path and sometimes using a short name. + +By [@goto-bus-stop](https://github.com/goto-bus-stop) in https://github.com/apollographql/router/pull/5816 + +### Enable progressive override with federation 2.7 and above ([PR #5754](https://github.com/apollographql/router/pull/5754)) + +The progressive override feature is now available when using Federation v2.7 and above. + +By [@o0ignition0o](https://github.com/o0ignition0o) in https://github.com/apollographql/router/pull/5754 + +### Support supergraph query selector for events ([PR #5764](https://github.com/apollographql/router/pull/5764)) + +The router now supports the `query: root_fields` selector for `event_response`. Previously the selector worked for `response` stage events but didn't work for `event_response`. + +The following configuration for a `query: root_fields` on an `event_response` now works: + +```yaml +telemetry: + instrumentation: + events: + supergraph: + OPERATION_LIMIT_INFO: + message: operation limit info + on: event_response + level: info + attributes: + graphql.operation.name: true + query.root_fields: + query: root_fields +``` + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5764 + +### Fix session counting and the reporting of file handle shortage ([PR #5834](https://github.com/apollographql/router/pull/5834)) + +The router previously gave incorrect warnings about file handle shortages due to session counting incorrectly including connections to health-check connections or other non-GraphQL connections. This is now corrected so that only connections to the main GraphQL port are counted, and file handle shortages are now handled correctly as a global resource. + +Also, the router's port listening logic had its own custom rate-limiting of log notifications. This has been removed and replaced by the [standard router log rate limiting configuration](https://www.apollographql.com/docs/router/configuration/telemetry/exporters/logging/stdout/#rate_limit) + +By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/5834 + +## 📃 Configuration + +### Increase default Redis timeout ([PR #5795](https://github.com/apollographql/router/pull/5795)) + +The default Redis command timeout was increased from 2ms to 500ms to accommodate common production use cases. + +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/5795 + +## 🛠 Maintenance + +### Improve performance by optimizing telemetry meter and instrument creation ([PR #5629](https://github.com/apollographql/router/pull/5629)) + +The router's performance has been improved by removing telemetry creation out of the critical path, from being created in every service to being created when starting the telemetry plugin. + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5629 + +## 📚 Documentation + +### Add sections on using @cost and @listSize to demand control docs ([PR #5839](https://github.com/apollographql/router/pull/5839)) + +Updates the demand control documentation to include details on `@cost` and `@listSize` for more accurate cost estimation. + +By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5839 + # [1.52.1] - 2024-08-27 > [!IMPORTANT] diff --git a/Cargo.lock b/Cargo.lock index ac59d9dd47..8a99dd3deb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -178,7 +178,7 @@ dependencies = [ [[package]] name = "apollo-federation" -version = "1.53.0-rc.1" +version = "1.53.0" dependencies = [ "apollo-compiler", "derive_more", @@ -229,7 +229,7 @@ dependencies = [ [[package]] name = "apollo-router" -version = "1.53.0-rc.1" +version = "1.53.0" dependencies = [ "access-json", "ahash", @@ -398,7 +398,7 @@ dependencies = [ [[package]] name = "apollo-router-benchmarks" -version = "1.53.0-rc.1" +version = "1.53.0" dependencies = [ "apollo-parser", "apollo-router", @@ -414,7 +414,7 @@ dependencies = [ [[package]] name = "apollo-router-scaffold" -version = "1.53.0-rc.1" +version = "1.53.0" dependencies = [ "anyhow", "cargo-scaffold", diff --git a/apollo-federation/Cargo.toml b/apollo-federation/Cargo.toml index 0f62efa5b6..220c25b371 100644 --- a/apollo-federation/Cargo.toml +++ b/apollo-federation/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-federation" -version = "1.53.0-rc.1" +version = "1.53.0" authors = ["The Apollo GraphQL Contributors"] edition = "2021" description = "Apollo Federation" diff --git a/apollo-router-benchmarks/Cargo.toml b/apollo-router-benchmarks/Cargo.toml index 4c84421402..c051b44df7 100644 --- a/apollo-router-benchmarks/Cargo.toml +++ b/apollo-router-benchmarks/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router-benchmarks" -version = "1.53.0-rc.1" +version = "1.53.0" 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 b4217e82b5..5cf55bfeda 100644 --- a/apollo-router-scaffold/Cargo.toml +++ b/apollo-router-scaffold/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router-scaffold" -version = "1.53.0-rc.1" +version = "1.53.0" authors = ["Apollo Graph, Inc. "] edition = "2021" license = "Elastic-2.0" diff --git a/apollo-router-scaffold/templates/base/Cargo.template.toml b/apollo-router-scaffold/templates/base/Cargo.template.toml index b66b95c69c..9953fb981c 100644 --- a/apollo-router-scaffold/templates/base/Cargo.template.toml +++ b/apollo-router-scaffold/templates/base/Cargo.template.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.53.0-rc.1" +apollo-router = "1.53.0" {{/if}} {{/if}} async-trait = "0.1.52" diff --git a/apollo-router-scaffold/templates/base/xtask/Cargo.template.toml b/apollo-router-scaffold/templates/base/xtask/Cargo.template.toml index e3fa00ed97..482be08889 100644 --- a/apollo-router-scaffold/templates/base/xtask/Cargo.template.toml +++ b/apollo-router-scaffold/templates/base/xtask/Cargo.template.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.53.0-rc.1" } +apollo-router-scaffold = { git = "https://github.com/apollographql/router.git", tag = "v1.53.0" } {{/if}} {{/if}} anyhow = "1.0.58" diff --git a/apollo-router/Cargo.toml b/apollo-router/Cargo.toml index 6265d716fa..19950eb520 100644 --- a/apollo-router/Cargo.toml +++ b/apollo-router/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apollo-router" -version = "1.53.0-rc.1" +version = "1.53.0" authors = ["Apollo Graph, Inc. "] repository = "https://github.com/apollographql/router/" documentation = "https://docs.rs/apollo-router" @@ -68,7 +68,7 @@ askama = "0.12.1" access-json = "0.1.0" anyhow = "1.0.86" apollo-compiler.workspace = true -apollo-federation = { path = "../apollo-federation", version = "=1.53.0-rc.1" } +apollo-federation = { path = "../apollo-federation", version = "=1.53.0" } arc-swap = "1.6.0" async-channel = "1.9.0" async-compression = { version = "0.4.6", features = [ diff --git a/dockerfiles/tracing/docker-compose.datadog.yml b/dockerfiles/tracing/docker-compose.datadog.yml index 3043bbd6ff..83c20bb40e 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.53.0-rc.1 + image: ghcr.io/apollographql/router:v1.53.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 f8364b6fbc..94900947d1 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.53.0-rc.1 + image: ghcr.io/apollographql/router:v1.53.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 42ac11aa6d..f719e3de99 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.53.0-rc.1 + image: ghcr.io/apollographql/router:v1.53.0 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 58f0f433e7..40ba75ba53 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.53.0-rc.1 +version: 1.53.0 # 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.53.0-rc.1" +appVersion: "v1.53.0" diff --git a/helm/chart/router/README.md b/helm/chart/router/README.md index 802b6ddd61..e962582547 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.53.0-rc.1](https://img.shields.io/badge/Version-1.53.0--rc.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.53.0-rc.1](https://img.shields.io/badge/AppVersion-v1.53.0--rc.1-informational?style=flat-square) +![Version: 1.53.0](https://img.shields.io/badge/Version-1.53.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v1.53.0](https://img.shields.io/badge/AppVersion-v1.53.0-informational?style=flat-square) ## Prerequisites @@ -11,7 +11,7 @@ ## Get Repo Info ```console -helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.53.0-rc.1 +helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.53.0 ``` ## Install Chart @@ -19,7 +19,7 @@ helm pull oci://ghcr.io/apollographql/helm-charts/router --version 1.53.0-rc.1 **Important:** only helm3 is supported ```console -helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.53.0-rc.1 --values my-values.yaml +helm upgrade --install [RELEASE_NAME] oci://ghcr.io/apollographql/helm-charts/router --version 1.53.0 --values my-values.yaml ``` _See [configuration](#configuration) below._ diff --git a/licenses.html b/licenses.html index 1725f7e24d..37df6f6803 100644 --- a/licenses.html +++ b/licenses.html @@ -44,8 +44,8 @@

Third Party Licenses

Overview of licenses:

    -
  • Apache License 2.0 (452)
  • -
  • MIT License (151)
  • +
  • Apache License 2.0 (468)
  • +
  • MIT License (163)
  • BSD 3-Clause "New" or "Revised" License (11)
  • ISC License (8)
  • BSD 2-Clause "Simplified" License (5)
  • @@ -65,6 +65,7 @@

    Used by:

  • aws-config
  • aws-credential-types
  • aws-runtime
  • +
  • aws-sigv4
  • aws-smithy-async
  • aws-smithy-http
  • aws-smithy-json
  • @@ -1710,6 +1711,191 @@

    Used by:

    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 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
    +                        https://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
     
  • @@ -2989,6 +3175,7 @@

    Used by:

  • clap_builder
  • clap_derive
  • clap_lex
  • +
  • opentelemetry-proto
                                 Apache License
                            Version 2.0, January 2004
@@ -5295,6 +5482,7 @@ 

Used by:

  • utf-8
  • utf8parse
  • wasm-streams
  • +
  • zerocopy
  •                               Apache License
                             Version 2.0, January 2004
    @@ -8230,6 +8418,7 @@ 

    Used by:

  • cc
  • cfg-if
  • cfg-if
  • +
  • ci_info
  • cmake
  • concurrent-queue
  • const-random
  • @@ -8246,6 +8435,7 @@

    Used by:

  • derive_arbitrary
  • displaydoc
  • either
  • +
  • envmnt
  • equivalent
  • error-chain
  • event-listener
  • @@ -8257,6 +8447,7 @@

    Used by:

  • fnv
  • form_urlencoded
  • fraction
  • +
  • fsio
  • futures-lite
  • futures-timer
  • gimli
  • @@ -11067,6 +11258,53 @@

    Used by:

    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. +
    + +
  • +

    Apache License 2.0

    +

    Used by:

    + +
    # Contributing
    +
    +## License
    +
    +Licensed under either of
    +
    + * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
    + * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
    +
    +at your option.
    +
    +### Contribution
    +
    +Unless you explicitly state otherwise, any contribution intentionally submitted
    +for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any
    +additional terms or conditions.
    +
    +
  • +
  • +

    Apache License 2.0

    +

    Used by:

    + +
    ../../LICENSE-APACHE
    +
  • +
  • +

    Apache License 2.0

    +

    Used by:

    + +
    // Licensed under the Apache License, Version 2.0
    +// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
    +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
    +// All files in the project carrying such notice may not be copied, modified, or distributed
    +// except according to those terms.
     
  • @@ -11703,14 +11941,10 @@

    Used by:

    Apache License 2.0

    Used by:

  • + +
  • +

    Apache License 2.0

    +

    Used by:

    + +
    Copyright 2021 Oliver Giersch
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +
    +
  • +
  • +

    Apache License 2.0

    +

    Used by:

    + +
    Copyright [2022] [Bryn Cooke]
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +
    +
  • +
  • +

    Apache License 2.0

    +

    Used by:

    + +
    Copyright [2023] [Bryn Cooke]
    +
    +Licensed under the Apache License, Version 2.0 (the "License");
    +you may not use this file except in compliance with the License.
    +You may obtain a copy of the License at
    +
    +    http://www.apache.org/licenses/LICENSE-2.0
    +
    +Unless required by applicable law or agreed to in writing, software
    +distributed under the License is distributed on an "AS IS" BASIS,
    +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +See the License for the specific language governing permissions and
    +limitations under the License.
    +
    +
  • +
  • +

    Apache License 2.0

    +

    Used by:

    + +
    Licensed under the Apache License, Version 2.0
    +<LICENSE-APACHE or
    +http://www.apache.org/licenses/LICENSE-2.0> or the MIT
    +license <LICENSE-MIT or http://opensource.org/licenses/MIT>,
    +at your option. All files in the project carrying such
    +notice may not be copied, modified, or distributed except
    +according to those terms.
    +
    +
  • +
  • +

    Apache License 2.0

    +

    Used by:

    + +
    MIT OR Apache-2.0
    +
  • +
  • +

    Apache License 2.0

    +

    Used by:

    + +
    MIT OR Apache-2.0
    +
    +
  • +
  • +

    Apache License 2.0

    +

    Used by:

    + +
    MIT or Apache-2.0
     
  • @@ -12672,36 +13011,6 @@

    Used by:

    // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -
  • -
  • -

    ISC License

    -

    Used by:

    - -
    // Copyright 2021 Brian Smith.
    -//
    -// Permission to use, copy, modify, and/or distribute this software for any
    -// purpose with or without fee is hereby granted, provided that the above
    -// copyright notice and this permission notice appear in all copies.
    -//
    -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES
    -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
    -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
    -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
    -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
    -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
    -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    -
    -#[test]
    -fn cert_without_extensions_test() {
    -    // Check the certificate is valid with
    -    // `openssl x509 -in cert_without_extensions.der -inform DER -text -noout`
    -    const CERT_WITHOUT_EXTENSIONS_DER: &[u8] = include_bytes!("cert_without_extensions.der");
    -
    -    assert!(webpki::EndEntityCert::try_from(CERT_WITHOUT_EXTENSIONS_DER).is_ok());
    -}
     
  • @@ -12771,6 +13080,7 @@

    ISC License

    Used by:

    ISC License:
     
    @@ -13520,6 +13830,66 @@ 

    Used by:

    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:

    + +
    Copyright (c) 2019 Carl Lerche
    +
    +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.
    +
    +Copyright (c) 2018 David Tolnay
    +
    +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
    @@ -14526,8 +14896,6 @@ 

    Used by:

    MIT License

    Used by:

    +
  • +
  • +

    MIT License

    +

    Used by:

    + +
    The MIT License (MIT)
    +
    +Copyright (c) 2014 Mathijs van de Nes
    +
    +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.
    +
  • MIT License

    @@ -14872,6 +15269,8 @@

    Used by:

    The MIT License (MIT)
     
    @@ -15423,6 +15822,25 @@ 

    Used by:

    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +
    +
  • +
  • +

    MIT License

    +

    Used by:

    + +
    This project is dual-licensed under the Unlicense and MIT licenses.
    +
    +You may use this code under the terms of either license.
     
  • @@ -15820,7 +16238,6 @@

    Used by:

    Mozilla Public License 2.0

    Used by:

    Mozilla Public License Version 2.0
    @@ -16203,8 +16620,8 @@ 

    Used by:

    Mozilla Public License 2.0

    Used by:

    Mozilla Public License Version 2.0
     ==================================
    @@ -16579,6 +16996,35 @@ 

    Used by:

    This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0. +
    +
  • +
  • +

    Mozilla Public License 2.0

    +

    Used by:

    + +
    This packge contains a modified version of ca-bundle.crt:
    +
    +ca-bundle.crt -- Bundle of CA Root Certificates
    +
    +Certificate data from Mozilla as of: Thu Nov  3 19:04:19 2011#
    +This is a bundle of X.509 certificates of public Certificate Authorities
    +(CA). These were automatically extracted from Mozilla's root certificates
    +file (certdata.txt).  This file can be found in the mozilla source tree:
    +http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1#
    +It contains the certificates in PEM format and therefore
    +can be directly used with curl / libcurl / php_curl, or with
    +an Apache+mod_ssl webserver for SSL client authentication.
    +Just configure this file as the SSLCACertificateFile.#
    +
    +***** BEGIN LICENSE BLOCK *****
    +This Source Code Form is subject to the terms of the Mozilla Public License,
    +v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain
    +one at http://mozilla.org/MPL/2.0/.
    +
    +***** END LICENSE BLOCK *****
    +@(#) $RCSfile: certdata.txt,v $ $Revision: 1.80 $ $Date: 2011/11/03 15:11:58 $
     
  • @@ -16649,50 +17095,26 @@

    Used by:

    UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
     
    -See Terms of Use <https://www.unicode.org/copyright.html>
    -for definitions of Unicode Inc.’s Data Files and Software.
    +Unicode Data Files include all data files under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and http://www.unicode.org/utility/trac/browser/.
    +
    +Unicode Data Files do not include PDF online code charts under the directory http://www.unicode.org/Public/.
     
    -NOTICE TO USER: Carefully read the following legal agreement.
    -BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
    -DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
    -YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
    -TERMS AND CONDITIONS OF THIS AGREEMENT.
    -IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
    -THE DATA FILES OR SOFTWARE.
    +Software includes any source code published in the Unicode Standard or under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and http://www.unicode.org/utility/trac/browser/.
    +
    +NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
     
     COPYRIGHT AND PERMISSION NOTICE
     
    -Copyright © 1991-2022 Unicode, Inc. All rights reserved.
    -Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
    +Copyright © 1991-2016 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
     
    -Permission is hereby granted, free of charge, to any person obtaining
    -a copy of the Unicode data files and any associated documentation
    -(the "Data Files") or Unicode software and any associated documentation
    -(the "Software") to deal in the Data Files or Software
    -without restriction, including without limitation the rights to use,
    -copy, modify, merge, publish, distribute, and/or sell copies of
    -the Data Files or Software, and to permit persons to whom the Data Files
    -or Software are furnished to do so, provided that either
    -(a) this copyright and permission notice appear with all copies
    -of the Data Files or Software, or
    -(b) this copyright and permission notice appear in associated
    -Documentation.
    -
    -THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS.
    -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
    -NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
    -DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
    -DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
    -TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
    -PERFORMANCE OF THE DATA FILES OR SOFTWARE.
    -
    -Except as contained in this notice, the name of a copyright holder
    -shall not be used in advertising or otherwise to promote the sale,
    -use or other dealings in these Data Files or Software without prior
    -written authorization of the copyright holder.
    +Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that either
    +
    +     (a) this copyright and permission notice appear with all copies of the Data Files or Software, or
    +     (b) this copyright and permission notice appear in associated Documentation.
    +
    +THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
    +
    +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder.
     
  • diff --git a/scripts/install.sh b/scripts/install.sh index ebb6b69b6b..f250d420a1 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.53.0-rc.1" +PACKAGE_VERSION="v1.53.0" download_binary() { downloader --check From 17845d4f469d4a2a77c7ef7ac818b7af43f084a1 Mon Sep 17 00:00:00 2001 From: Jesse Rosenberger Date: Wed, 28 Aug 2024 13:47:08 +0300 Subject: [PATCH 2/4] CHANGELOG edits --- CHANGELOG.md | 109 ++++++++++++++++++++++++++------------------------- 1 file changed, 55 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 544198df12..57cf11944f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,36 +11,10 @@ This project adheres to [Semantic Versioning v2.0.0](https://semver.org/spec/v2. ## 🚀 Features -### Add warnings for invalid configuration of custom telemetry ([PR #5759](https://github.com/apollographql/router/issues/5759)) - -The router now logs warnings when running with telemetry that may have invalid custom configurations. - -For example, you may customize telemetry using invalid conditions or inaccessible statuses: - -```yaml -telemetry: - instrumentation: - events: - subgraph: - my.event: - message: "Auditing Router Event" - level: info - on: request - attributes: - subgraph.response.status: code - # Warning: should use selector for subgraph_name: true instead of comparing strings of subgraph_name and product - condition: - eq: - - subgraph_name - - product -``` - -Although the configuration is syntactically correct, its customization is invalid, and the router now outputs warnings for such invalid configurations. - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5759 - ### Support demand control directives ([PR #5777](https://github.com/apollographql/router/pull/5777)) +> ⚠️ This is a [GraphOS Router feature](https://www.apollographql.com/graphos). + The router supports two new demand control directives, `@cost` and `@listSize`, that you can use to provide more accurate estimates of GraphQL operation costs to the router's demand control plugin. Use the `@cost` directive to customize the weights of operation cost calculations, particularly for expensive resolvers. @@ -70,19 +44,15 @@ To learn more, go to [Demand Control](https://www.apollographql.com/docs/router/ By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5777 -### Add V8 heap usage metrics ([PR #5781](https://github.com/apollographql/router/pull/5781)) - -The router supports new gauge metrics for tracking heap memory usage of the V8 Javascript engine: -- `apollo.router.v8.heap.used`: heap memory used by V8, in bytes -- `apollo.router.v8.heap.total`: total heap allocated by V8, in bytes +### General Availability (GA) of Demand Control ([PR #5868](https://github.com/apollographql/router/pull/5868)) -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/5781 +Demand control in the router is now a generally available (GA) feature. -### Update Federation to v2.9.0 ([PR #5902](https://github.com/apollographql/router/pull/5902)) +**GA compatibility update**: if you used demand control during its preview, to use it in GA you must update your configuration from `preview_demand_control` to `demand_control`. -This updates the router to Federation v2.9.0. +To learn more, go to [Demand Control](https://www.apollographql.com/docs/router/executing-operations/demand-control/) docs. -By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5902 +By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5868 ### Enable native query planner to run in the background ([PR #5790](https://github.com/apollographql/router/pull/5790), [PR #5811](https://github.com/apollographql/router/pull/5811), [PR #5771](https://github.com/apollographql/router/pull/5771), [PR #5860](https://github.com/apollographql/router/pull/5860)) @@ -98,6 +68,48 @@ experimental_query_planner_mode: legacy By [SimonSapin](https://github.com/SimonSapin) in ([PR #5790](https://github.com/apollographql/router/pull/5790), [PR #5811](https://github.com/apollographql/router/pull/5811), [PR #5771](https://github.com/apollographql/router/pull/5771) [PR #5860](https://github.com/apollographql/router/pull/5860)) +### Add warnings for invalid configuration of custom telemetry ([PR #5759](https://github.com/apollographql/router/issues/5759)) + +The router now logs warnings when running with telemetry that may have invalid custom configurations. + +For example, you may customize telemetry using invalid conditions or inaccessible statuses: + +```yaml +telemetry: + instrumentation: + events: + subgraph: + my.event: + message: "Auditing Router Event" + level: info + on: request + attributes: + subgraph.response.status: code + # Warning: should use selector for subgraph_name: true instead of comparing strings of subgraph_name and product + condition: + eq: + - subgraph_name + - product +``` + +Although the configuration is syntactically correct, its customization is invalid, and the router now outputs warnings for such invalid configurations. + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5759 + +### Add V8 heap usage metrics ([PR #5781](https://github.com/apollographql/router/pull/5781)) + +The router supports new gauge metrics for tracking heap memory usage of the V8 Javascript engine: +- `apollo.router.v8.heap.used`: heap memory used by V8, in bytes +- `apollo.router.v8.heap.total`: total heap allocated by V8, in bytes + +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/5781 + +### Update Federation to v2.9.0 ([PR #5902](https://github.com/apollographql/router/pull/5902)) + +This updates the router to Federation v2.9.0. + +By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5902 + ### Helm: Support `maxSurge` and `maxUnavailable` for rolling updates ([Issue #5664](https://github.com/apollographql/router/issues/5664)) The router Helm chart now supports the configuration of `maxSurge` and `maxUnavailable` for the `RollingUpdate` deployment strategy. @@ -139,9 +151,9 @@ You can configure the format with the `format` option: ```yaml telemetry: exporters: - tracing: - propagation: - request: + tracing: + propagation: + request: header_name: "my_header" # Must be in UUID form, with or without dashes format: uuid @@ -153,16 +165,6 @@ To learn about supported formats, go to [`request` configuration reference](http By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/5803 -### General Availability (GA) of Demand Control ([PR #5868](https://github.com/apollographql/router/pull/5868)) - -Demand control in the router is now a generally available (GA) feature. - -**GA compatibility update**: if you used demand control during its preview, to use it in GA you must update your configuration from `preview_demand_control` to `demand_control`. - -To learn more, go to [Demand Control](https://www.apollographql.com/docs/router/executing-operations/demand-control/) docs. - -By [@tninesling](https://github.com/tninesling) in https://github.com/apollographql/router/pull/5868 - ### New `apollo.router.cache.storage.estimated_size` gauge ([PR #5770](https://github.com/apollographql/router/pull/5770)) The router supports the new metric `apollo.router.cache.storage.estimated_size` that helps users understand and monitor the amount of memory that query planner cache entries consume. @@ -317,8 +319,7 @@ Previously, if the in-memory cache wasn't mutated, the `apollo_router_cache_size By [@BrynCooke](https://github.com/BrynCooke) in https://github.com/apollographql/router/pull/5770 -### fix(subgraph_service): when the subgraph connection is closed or in error, return a proper subgraph response ([PR #5859](https://github.com/apollographql/router/pull/5859)) - +### Interrupted subgraph connections trigger error responses and subgraph service hook points ([PR #5859](https://github.com/apollographql/router/pull/5859)) The router now returns a proper subgraph response, with an error if necessary, when a subgraph connection is closed or returns an error. @@ -360,7 +361,7 @@ The router now always reports a short name in the `type` attribute for the `apol By [@goto-bus-stop](https://github.com/goto-bus-stop) in https://github.com/apollographql/router/pull/5816 -### Enable progressive override with federation 2.7 and above ([PR #5754](https://github.com/apollographql/router/pull/5754)) +### Enable progressive override with Federation 2.7 and above ([PR #5754](https://github.com/apollographql/router/pull/5754)) The progressive override feature is now available when using Federation v2.7 and above. @@ -415,7 +416,7 @@ By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router ## 📚 Documentation -### Add sections on using @cost and @listSize to demand control docs ([PR #5839](https://github.com/apollographql/router/pull/5839)) +### Add sections on using `@cost` and `@listSize` to demand control docs ([PR #5839](https://github.com/apollographql/router/pull/5839)) Updates the demand control documentation to include details on `@cost` and `@listSize` for more accurate cost estimation. From c84d66cc69efcc3467168d8e0704a5f959cc27d7 Mon Sep 17 00:00:00 2001 From: Jesse Rosenberger Date: Wed, 28 Aug 2024 14:52:17 +0300 Subject: [PATCH 3/4] Apply suggestions from code review Co-authored-by: Iryna Shestak --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 57cf11944f..1eff82969d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ This project adheres to [Semantic Versioning v2.0.0](https://semver.org/spec/v2. ### Support demand control directives ([PR #5777](https://github.com/apollographql/router/pull/5777)) -> ⚠️ This is a [GraphOS Router feature](https://www.apollographql.com/graphos). +> ⚠️ This is a [GraphOS Router feature](https://www.apollographql.com/graphos-router). The router supports two new demand control directives, `@cost` and `@listSize`, that you can use to provide more accurate estimates of GraphQL operation costs to the router's demand control plugin. @@ -58,6 +58,8 @@ By [@tninesling](https://github.com/tninesling) in https://github.com/apollograp The router now schedules background jobs to run the native (Rust) query planner to compare its results to the legacy implementation. This helps ascertain its correctness before making a decision to switch entirely to it from the legacy query planner. +To learn more, go to [Experimental Query Planner Mode](https://www.apollographql.com/docs/router/configuration/configuration/experimental_query_planning_mode) docs. + The router continues to use the legacy query planner to plan and execute operations, so there is no effect on the hot path. To disable running background comparisons with the native query planner, you can configure the router to enable only the `legacy` query planner: From 8df1274cd25ff21103ae8708ef04c6c3444c2f00 Mon Sep 17 00:00:00 2001 From: Iryna Shestak Date: Wed, 28 Aug 2024 14:05:03 +0200 Subject: [PATCH 4/4] update experimental qp mode docs url --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1eff82969d..987aa1a79c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,7 +58,7 @@ By [@tninesling](https://github.com/tninesling) in https://github.com/apollograp The router now schedules background jobs to run the native (Rust) query planner to compare its results to the legacy implementation. This helps ascertain its correctness before making a decision to switch entirely to it from the legacy query planner. -To learn more, go to [Experimental Query Planner Mode](https://www.apollographql.com/docs/router/configuration/configuration/experimental_query_planning_mode) docs. +To learn more, go to [Experimental Query Planner Mode](https://www.apollographql.com/docs/router/configuration/configuration/experimental_query_planner_mode) docs. The router continues to use the legacy query planner to plan and execute operations, so there is no effect on the hot path.