From ea9dab00fe55de90689c4fa1d95ae2d41169accd Mon Sep 17 00:00:00 2001 From: Irina Shestak Date: Tue, 26 Sep 2023 11:22:00 +0200 Subject: [PATCH 1/8] first batch of edits --- .changesets/docs_garypen_fix_rhai_subgraph_docs.md | 4 ++-- .changesets/feat_bnjjj_fix_3621.md | 8 ++++---- .changesets/feat_bnjjj_fix_3767.md | 4 ++-- .changesets/feat_geal_plan_cache_warmup_doc.md | 9 ++++----- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/.changesets/docs_garypen_fix_rhai_subgraph_docs.md b/.changesets/docs_garypen_fix_rhai_subgraph_docs.md index 94f696f5fa..26971ca845 100644 --- a/.changesets/docs_garypen_fix_rhai_subgraph_docs.md +++ b/.changesets/docs_garypen_fix_rhai_subgraph_docs.md @@ -1,5 +1,5 @@ -### Rhai documentation: remove incorrect statement about request.subgraph fields ([PR #3808](https://github.com/apollographql/router/pull/3808)) +### docs(rhai): remove incorrect statement about request.subgraph fields ([PR #3808](https://github.com/apollographql/router/pull/3808)) -It is possible to modify `request.subgraph` fields from a `Rhai` script and so the documentation should reflect that. +It is possible to modify `request.subgraph` fields from a `Rhai` script, which is now correctly reflected in [Rhai documentation](https://www.apollographql.com/docs/router/customizations/rhai-api/#request-interface). By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/3808 \ No newline at end of file diff --git a/.changesets/feat_bnjjj_fix_3621.md b/.changesets/feat_bnjjj_fix_3621.md index c09c2619a5..a841305668 100644 --- a/.changesets/feat_bnjjj_fix_3621.md +++ b/.changesets/feat_bnjjj_fix_3621.md @@ -1,14 +1,14 @@ -### feat(redis): add configuration to set the timeout ([Issue #3621](https://github.com/apollographql/router/issues/3621)) +### feat(redis): add configuration to set redis request timeout ([Issue #3621](https://github.com/apollographql/router/issues/3621)) -It adds a configuration to set another timeout than the default one (2ms) for redis requests. It also change the default timeout to 2ms (previously set to 1ms) +We added configuration to modify default timeout for redis requests. Default timeout was also changed from 1ms to **2ms**. -Example for APQ: +Here is an exmample to change the timeout for APQ: ```yaml apq: router: cache: redis: - urls: ["redis://..."] + urls: ["redis://..."] timeout: 5ms ``` diff --git a/.changesets/feat_bnjjj_fix_3767.md b/.changesets/feat_bnjjj_fix_3767.md index a79b1e059d..58525a0cd5 100644 --- a/.changesets/feat_bnjjj_fix_3767.md +++ b/.changesets/feat_bnjjj_fix_3767.md @@ -1,8 +1,8 @@ ### feat(telemetry): add metrics for query plan warmup and schema load ([Issue #3767](https://github.com/apollographql/router/issues/3767)) -It adds histogram metrics for `apollo_router_query_planning_warmup_duration` and `apollo_router_schema_load_duration`. +We added histogram metrics for `apollo_router_query_planning_warmup_duration` and `apollo_router_schema_load_duration`. These metrics make it easier to track the time spent loading a new schema and planning queries in the warm-up phase. You can measure the query plan cache usage for both the in-memory-cache and distributed cache. This makes it easier to know how many entries are used as well ass the cache hit rate. -Example in Prometheus: +Here is what these metrics would look like in Prometheus: ``` # HELP apollo_router_query_planning_warmup_duration apollo_router_query_planning_warmup_duration diff --git a/.changesets/feat_geal_plan_cache_warmup_doc.md b/.changesets/feat_geal_plan_cache_warmup_doc.md index a7c9a6f2f1..60e93ab6b2 100644 --- a/.changesets/feat_geal_plan_cache_warmup_doc.md +++ b/.changesets/feat_geal_plan_cache_warmup_doc.md @@ -1,11 +1,10 @@ ### Query plan cache warm-up improvements ([Issue #3704](https://github.com/apollographql/router/issues/3704)) -The `warm_up_queries` option enables quicker schema updates by precomputing query plans for your most used cached queries and your persisted queries. When a new schema is loaded, a precomputed query plan for it may already be in in-memory cache. +The `warm_up_queries` option enables quicker schema updates by precomputing query plans for your most used cached queries and your persisted queries. When a new schema is loaded, a precomputed query plan for it may already be in the in-memory cache. -We made a series of improvements to this feature to make it more usable: -* It is now active by default and warms up the cache with the 30% most used queries of the previous cache. The amount is still configurable, and it can be deactivated by setting it to 0. -* We added new metrics to track the time spent loading a new schema and planning queries in the warm-up phase. You can also measure the query plan cache usage, to know how many entries are used, and the cache hit rate, both for the in memory cache and the distributed cache. -* The warm-up will now plan queries in random order, to make sure that the work can be shared by multiple router instances using distributed caching +We made a series of improvements to this feature to make it more easier to use: +* It is now active by default and warms up the cache with the 30% most used queries of the previous cache. The query cache amount is still configurable, and it can be deactivated by setting it to 0. +* The warm-up will now plan queries in random order to make sure that the work can be shared by multiple router instances using distributed caching. * Persisted queries are part of the warmed up queries. You can get more information about operating the query plan cache and its warm-up phase in the [documentation](https://www.apollographql.com/docs/router/configuration/in-memory-caching#cache-warm-up) From ef1bbc3c80f0a2b3b0b447467f0aaa813eff610c Mon Sep 17 00:00:00 2001 From: Irina Shestak Date: Tue, 26 Sep 2023 14:44:40 +0200 Subject: [PATCH 2/8] =?UTF-8?q?pass=20num=C3=A9ro=20deux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docs_garypen_fix_rhai_subgraph_docs.md | 2 +- .changesets/feat_bnjjj_fix_3621.md | 2 +- .changesets/feat_bnjjj_fix_3767.md | 42 ------------------- .../feat_garypen_one_shot_async_check.md | 2 +- .changesets/feat_geal_h2c.md | 2 +- .../feat_geal_plan_cache_warmup_doc.md | 25 ++++++++++- .../feat_geal_reintroduce_rhai_json.md | 4 +- .changesets/feat_geal_subgraph_mtls.md | 2 +- .../feat_geal_supergraph_coprocessor2.md | 22 +++++----- .changesets/feat_sm_add_awsxray_propagator.md | 4 +- .../fix_bnjjj_fix_otel_data_from_log.md | 4 +- .changesets/fix_garypen_3823_fix_diy.md | 6 +-- .changesets/fix_garypen_helm_extra_labels.md | 4 +- ...ted_queries_failover_and_error_handling.md | 2 +- .changesets/fix_renee_fix_large_ints.md | 5 +-- .changesets/fix_simon_large_id.md | 2 +- .changesets/maint_bnjjj_fix_3740.md | 4 +- .../maint_garypen_3663_no_overwrites.md | 2 +- 18 files changed, 56 insertions(+), 80 deletions(-) delete mode 100644 .changesets/feat_bnjjj_fix_3767.md diff --git a/.changesets/docs_garypen_fix_rhai_subgraph_docs.md b/.changesets/docs_garypen_fix_rhai_subgraph_docs.md index 26971ca845..85f93d6e1a 100644 --- a/.changesets/docs_garypen_fix_rhai_subgraph_docs.md +++ b/.changesets/docs_garypen_fix_rhai_subgraph_docs.md @@ -1,4 +1,4 @@ -### docs(rhai): remove incorrect statement about request.subgraph fields ([PR #3808](https://github.com/apollographql/router/pull/3808)) +### Rhai documentation: remove incorrect statement about request.subgraph fields. ([PR #3808](https://github.com/apollographql/router/pull/3808)) It is possible to modify `request.subgraph` fields from a `Rhai` script, which is now correctly reflected in [Rhai documentation](https://www.apollographql.com/docs/router/customizations/rhai-api/#request-interface). diff --git a/.changesets/feat_bnjjj_fix_3621.md b/.changesets/feat_bnjjj_fix_3621.md index a841305668..f0cc0346a4 100644 --- a/.changesets/feat_bnjjj_fix_3621.md +++ b/.changesets/feat_bnjjj_fix_3621.md @@ -1,4 +1,4 @@ -### feat(redis): add configuration to set redis request timeout ([Issue #3621](https://github.com/apollographql/router/issues/3621)) +### Added configuration to set redis request timeout. ([Issue #3621](https://github.com/apollographql/router/issues/3621)) We added configuration to modify default timeout for redis requests. Default timeout was also changed from 1ms to **2ms**. diff --git a/.changesets/feat_bnjjj_fix_3767.md b/.changesets/feat_bnjjj_fix_3767.md deleted file mode 100644 index 58525a0cd5..0000000000 --- a/.changesets/feat_bnjjj_fix_3767.md +++ /dev/null @@ -1,42 +0,0 @@ -### feat(telemetry): add metrics for query plan warmup and schema load ([Issue #3767](https://github.com/apollographql/router/issues/3767)) - -We added histogram metrics for `apollo_router_query_planning_warmup_duration` and `apollo_router_schema_load_duration`. These metrics make it easier to track the time spent loading a new schema and planning queries in the warm-up phase. You can measure the query plan cache usage for both the in-memory-cache and distributed cache. This makes it easier to know how many entries are used as well ass the cache hit rate. - -Here is what these metrics would look like in Prometheus: - -``` -# HELP apollo_router_query_planning_warmup_duration apollo_router_query_planning_warmup_duration -# TYPE apollo_router_query_planning_warmup_duration histogram -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.05"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.1"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.25"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.5"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="1"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="2.5"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="5"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="10"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="20"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="100"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="1000"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="+Inf"} 1 -apollo_router_query_planning_warmup_duration_sum{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version=""} 0.022390619 -apollo_router_query_planning_warmup_duration_count{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version=""} 1 -# HELP apollo_router_schema_load_duration apollo_router_schema_load_duration -# TYPE apollo_router_schema_load_duration histogram -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.05"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.1"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.25"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.5"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="1"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="2.5"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="5"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="10"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="20"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="100"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="1000"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="+Inf"} 8 -apollo_router_schema_load_duration_sum{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version=""} 0.023486205999999996 -apollo_router_schema_load_duration_count{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version=""} 8 -``` - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/3807 diff --git a/.changesets/feat_garypen_one_shot_async_check.md b/.changesets/feat_garypen_one_shot_async_check.md index 61298d848c..a9c472370c 100644 --- a/.changesets/feat_garypen_one_shot_async_check.md +++ b/.changesets/feat_garypen_one_shot_async_check.md @@ -1,4 +1,4 @@ -### Introduce OneShotAsyncCheckpoint ([PR #3819](https://github.com/apollographql/router/pull/3819)) +### Introduce OneShotAsyncCheckpoint. ([PR #3819](https://github.com/apollographql/router/pull/3819)) The existing AsynCheckpoint requires `Clone` and thus introduces a need for Service Buffering which reduces the performance and resiliance of the router. diff --git a/.changesets/feat_geal_h2c.md b/.changesets/feat_geal_h2c.md index 0852c40671..ea11c85b92 100644 --- a/.changesets/feat_geal_h2c.md +++ b/.changesets/feat_geal_h2c.md @@ -1,4 +1,4 @@ -### HTTP/2 Cleartext protocol (h2c) support for subgraph connections ([Issue #3535](https://github.com/apollographql/router/issues/3535)) +### HTTP/2 Cleartext protocol (h2c) support for subgraph connections. ([Issue #3535](https://github.com/apollographql/router/issues/3535)) The router can now connect to subgraphs over HTTP/2 Cleartext, which uses the HTTP/2 binary protocol directly over TCP without TLS. To activate it, set the `experimental_http2` option to `http2_only`. diff --git a/.changesets/feat_geal_plan_cache_warmup_doc.md b/.changesets/feat_geal_plan_cache_warmup_doc.md index 60e93ab6b2..7246bbdbbe 100644 --- a/.changesets/feat_geal_plan_cache_warmup_doc.md +++ b/.changesets/feat_geal_plan_cache_warmup_doc.md @@ -1,4 +1,4 @@ -### Query plan cache warm-up improvements ([Issue #3704](https://github.com/apollographql/router/issues/3704)) +### Query plan cache warm-up improvements. ([Issue #3704](https://github.com/apollographql/router/issues/3704), [Issue #3767](https://github.com/apollographql/router/issues/3767)) The `warm_up_queries` option enables quicker schema updates by precomputing query plans for your most used cached queries and your persisted queries. When a new schema is loaded, a precomputed query plan for it may already be in the in-memory cache. @@ -7,6 +7,27 @@ We made a series of improvements to this feature to make it more easier to use: * The warm-up will now plan queries in random order to make sure that the work can be shared by multiple router instances using distributed caching. * Persisted queries are part of the warmed up queries. +We also added histogram metrics for `apollo_router_query_planning_warmup_duration` and `apollo_router_schema_load_duration`. These metrics make it easier to track the time spent loading a new schema and planning queries in the warm-up phase. You can measure the query plan cache usage for both the in-memory-cache and distributed cache. This makes it easier to know how many entries are used as well ass the cache hit rate. + +Here is what these metrics would look like in Prometheus: + +``` +# HELP apollo_router_query_planning_warmup_duration apollo_router_query_planning_warmup_duration +# TYPE apollo_router_query_planning_warmup_duration histogram +apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.05"} 1 +apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.1"} 1 +apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.25"} 1 +apollo_router_query_planning_warmup_duration_sum{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version=""} 0.022390619 +apollo_router_query_planning_warmup_duration_count{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version=""} 1 +# HELP apollo_router_schema_load_duration apollo_router_schema_load_duration +# TYPE apollo_router_schema_load_duration histogram +apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.05"} 8 +apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.1"} 8 +apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.25"} 8 +``` + You can get more information about operating the query plan cache and its warm-up phase in the [documentation](https://www.apollographql.com/docs/router/configuration/in-memory-caching#cache-warm-up) -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/3815 https://github.com/apollographql/router/pull/3801 https://github.com/apollographql/router/pull/3767 https://github.com/apollographql/router/pull/3769 https://github.com/apollographql/router/pull/3770 \ No newline at end of file +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/3815 https://github.com/apollographql/router/pull/3801 https://github.com/apollographql/router/pull/3767 https://github.com/apollographql/router/pull/3769 https://github.com/apollographql/router/pull/3770 + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/3807 \ No newline at end of file diff --git a/.changesets/feat_geal_reintroduce_rhai_json.md b/.changesets/feat_geal_reintroduce_rhai_json.md index f76e238eca..20370bb25f 100644 --- a/.changesets/feat_geal_reintroduce_rhai_json.md +++ b/.changesets/feat_geal_reintroduce_rhai_json.md @@ -1,5 +1,5 @@ -### JSON encoding and decoding in Rhai ([PR #3785](https://github.com/apollographql/router/pull/3785)) +### JSON encoding and decoding in Rhai. ([PR #3785](https://github.com/apollographql/router/pull/3785)) -It is now possible to encode or decode JSON from Rhai scripts using `json::encode` and `json::decode` +It is now possible to encode or decode JSON from Rhai scripts using `json::encode` and `json::decode`. By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/3785 \ No newline at end of file diff --git a/.changesets/feat_geal_subgraph_mtls.md b/.changesets/feat_geal_subgraph_mtls.md index a377ab52bf..35b770eab4 100644 --- a/.changesets/feat_geal_subgraph_mtls.md +++ b/.changesets/feat_geal_subgraph_mtls.md @@ -1,4 +1,4 @@ -### TLS client authentication for subgraph requests ([Issue #3414](https://github.com/apollographql/router/issues/3414)) +### TLS client authentication for subgraph requests. ([Issue #3414](https://github.com/apollographql/router/issues/3414)) The router now supports TLS client authentication when connecting to subgraphs. It can be configured as follows: diff --git a/.changesets/feat_geal_supergraph_coprocessor2.md b/.changesets/feat_geal_supergraph_coprocessor2.md index 9dd3030a34..c090d28091 100644 --- a/.changesets/feat_geal_supergraph_coprocessor2.md +++ b/.changesets/feat_geal_supergraph_coprocessor2.md @@ -1,6 +1,6 @@ -### Supergraph coprocessor implementation ([PR #3647](https://github.com/apollographql/router/pull/3647)) +### Supergraph coprocessor implementation. ([PR #3647](https://github.com/apollographql/router/pull/3647)) -Coprocessors now support supergraph service interception. +Coprocessors now support supergraph service interception. On the request side, the coprocessor payload can contain: - method @@ -17,17 +17,17 @@ On the response side, the payload can contain: - sdl The supergraph request body contains: -* query -* operation name -* variables -* extensions +- query +- operation name +- variables +- extensions The supergraph response body contains: -* label -* data -* errors -* extensions +- label +- data +- errors +- extensions -When using `@defer` or subscriptions a supergraph response may contain multiple GraphQL responses, and the coprocessor will be called for each. +When using `@defer` or subscriptions a supergraph response may contain multiple GraphQL responses. The coprocessor will be called for each. By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/3647 \ No newline at end of file diff --git a/.changesets/feat_sm_add_awsxray_propagator.md b/.changesets/feat_sm_add_awsxray_propagator.md index 9b1ff8b2e7..0254d70c0e 100644 --- a/.changesets/feat_sm_add_awsxray_propagator.md +++ b/.changesets/feat_sm_add_awsxray_propagator.md @@ -1,5 +1,5 @@ -Adds support for the OpenTelemetry AWS X-Ray tracing propagator. +### Adds support for the OpenTelemetry AWS X-Ray tracing propagator. ([PR #3580](https://github.com/apollographql/router/pull/3580)) -This propagator helps propagate tracing information from upstream services (such as AWS load balancers) to downstream services and handles conversion between the X-Ray trace id format and OpenTelemetry span contexts. +This propagator helps propagate tracing information from upstream services (such as AWS load balancers) to downstream services. It also handles conversion between the X-Ray trace id format and OpenTelemetry span contexts. By [@scottmace](https://github.com/scottmace) in https://github.com/apollographql/router/pull/3580 diff --git a/.changesets/fix_bnjjj_fix_otel_data_from_log.md b/.changesets/fix_bnjjj_fix_otel_data_from_log.md index 8d2fb003cc..1828f51978 100644 --- a/.changesets/fix_bnjjj_fix_otel_data_from_log.md +++ b/.changesets/fix_bnjjj_fix_otel_data_from_log.md @@ -1,5 +1,5 @@ -### fix(telemetry): do not display otel bug if the trace is sampled ([PR #3832](https://github.com/apollographql/router/pull/3832)) +### fix(telemetry): do not display otel bug if the trace is sampled. ([PR #3832](https://github.com/apollographql/router/pull/3832)) -We changed the way we are sampling spans. If you had logs in an evicted span it displays that log `Unable to find OtelData in extensions; this is a bug` which is incorrect, it's not a bug, we just can't display the `trace_id` because there is no `trace_id` as the span has not been sampled. +We changed the way we are sampling spans. If you had logs in an evicted span it displays an error: `Unable to find OtelData in extensions; this is a bug`. This is incorrect, as it's not a bug. The logs cannot display the `trace_id` as there is no `trace_id` when the span has not been yet sampled. By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/3832 \ No newline at end of file diff --git a/.changesets/fix_garypen_3823_fix_diy.md b/.changesets/fix_garypen_3823_fix_diy.md index 3da4807001..3967c0ea23 100644 --- a/.changesets/fix_garypen_3823_fix_diy.md +++ b/.changesets/fix_garypen_3823_fix_diy.md @@ -1,7 +1,7 @@ -### fix the diy build_docker_image.sh script ([Issue #3823](https://github.com/apollographql/router/issues/3823)) +### Docker Image: fix the DIY build_docker_image.sh script. ([Issue #3823](https://github.com/apollographql/router/issues/3823)) -The diy `build_docker_image.sh` script was broken by the latest `deno` update due to a new requirement to have `cmake` when compiling the router. +The DIY `build_docker_image.sh` script was broken by the latest `deno` update due to a new requirement to have `cmake` when compiling the router. -This adds `cmake` to the build step for diy builds to fix the problem. +This adds `cmake` to the build step for DIY builds to fix the problem. By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/3824 diff --git a/.changesets/fix_garypen_helm_extra_labels.md b/.changesets/fix_garypen_helm_extra_labels.md index 4082915ff1..e08725c6e8 100644 --- a/.changesets/fix_garypen_helm_extra_labels.md +++ b/.changesets/fix_garypen_helm_extra_labels.md @@ -1,7 +1,7 @@ -### Helm: If there are `extraLabels` add them to all resources ([PR #3622](https://github.com/apollographql/router/pull/3622)) +### Helm: If there are `extraLabels` add them to all resources. ([PR #3622](https://github.com/apollographql/router/pull/3622)) This extends the functionality of `extraLabels` so that, if they are defined, they will be templated for all resources created by the chart. - + Previously, they were only templated onto the `Deployment` resource. By [@garypen](https://github.com/garypen) and [@bjoernw](https://github.com/bjoernw) in https://github.com/apollographql/router/pull/3622 diff --git a/.changesets/fix_persisted_queries_failover_and_error_handling.md b/.changesets/fix_persisted_queries_failover_and_error_handling.md index 554ec346f0..b4b14486a1 100644 --- a/.changesets/fix_persisted_queries_failover_and_error_handling.md +++ b/.changesets/fix_persisted_queries_failover_and_error_handling.md @@ -1,4 +1,4 @@ -### Improve multi-cloud failover and error handling for Persisted Queries +### Improve multi-cloud failover and error handling for Persisted Queries. ([PR #3863](https://github.com/apollographql/router/pull/3863)) Improves the resilience of the Persisted Queries feature to Uplink outages, and makes errors fetching Persisted Query Manifests from Uplink more visible. diff --git a/.changesets/fix_renee_fix_large_ints.md b/.changesets/fix_renee_fix_large_ints.md index 756249f92c..55492d6f3c 100644 --- a/.changesets/fix_renee_fix_large_ints.md +++ b/.changesets/fix_renee_fix_large_ints.md @@ -1,4 +1,4 @@ -### Fix error response on large numbers in query transformations ([PR #3820](https://github.com/apollographql/router/pull/3820)) +### Fix error response on large number types in query transformations. ([PR #3820](https://github.com/apollographql/router/pull/3820)) This bug caused the router to reject operations where a large hardcoded integer was used as input for a Float field: @@ -16,7 +16,4 @@ type Query { Now the number is correctly interpreted as a Float. This bug only affected hardcoded numbers, not numbers provided through variables. - ---- - By [@goto-bus-stop](https://github.com/goto-bus-stop) in https://github.com/apollographql/router/pull/3820 \ No newline at end of file diff --git a/.changesets/fix_simon_large_id.md b/.changesets/fix_simon_large_id.md index 58fdfcdebe..3225b973c5 100644 --- a/.changesets/fix_simon_large_id.md +++ b/.changesets/fix_simon_large_id.md @@ -1,4 +1,4 @@ -### Fix validation error with ID variable values overflowing i32 ([Issue #3873](https://github.com/apollographql/router/issues/3873)) +### Fix validation error with ID variable values overflowing i32. ([Issue #3873](https://github.com/apollographql/router/issues/3873)) Input values for variables of type `ID` were previously validated as "either like a GraphQL `Int` or like a GraphQL `String`". GraphQL `Int` is specified as a signed 32-bit integer, such that values that overflow fail validation. Applying this range restriction to `ID` values was incorrect. Instead, validation for `ID` now accepts any JSON integer or JSON string value, so that IDs larger than 32 bits can be used. diff --git a/.changesets/maint_bnjjj_fix_3740.md b/.changesets/maint_bnjjj_fix_3740.md index d4bc5fee7d..8ac1b78579 100644 --- a/.changesets/maint_bnjjj_fix_3740.md +++ b/.changesets/maint_bnjjj_fix_3740.md @@ -1,5 +1,5 @@ -### Add integration test for subscription ([Issue #3740](https://github.com/apollographql/router/issues/3740)) +### Add integration test for subscription. ([Issue #3740](https://github.com/apollographql/router/issues/3740)) Add a regression test that ensures an unnamed subscription makes it through the request pipeline. -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/3752 \ No newline at end of file +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/3752:w \ No newline at end of file diff --git a/.changesets/maint_garypen_3663_no_overwrites.md b/.changesets/maint_garypen_3663_no_overwrites.md index 1a155f7353..979c0d193b 100644 --- a/.changesets/maint_garypen_3663_no_overwrites.md +++ b/.changesets/maint_garypen_3663_no_overwrites.md @@ -1,4 +1,4 @@ -### Check if docker images and helm charts exist before creating them ([Issue #3663](https://github.com/apollographql/router/issues/3663)) +### Check if docker images and helm charts exist before creating them. ([Issue #3663](https://github.com/apollographql/router/issues/3663)) This improves the resilience of our pipeline. From 7ad5f8b74033210d3c1a8607678dfb82bccc22b5 Mon Sep 17 00:00:00 2001 From: Irina Shestak Date: Tue, 26 Sep 2023 11:22:00 +0200 Subject: [PATCH 3/8] first batch of edits --- .changesets/docs_garypen_fix_rhai_subgraph_docs.md | 4 ++-- .changesets/feat_bnjjj_fix_3621.md | 8 ++++---- .changesets/feat_bnjjj_fix_3767.md | 4 ++-- .changesets/feat_geal_plan_cache_warmup_doc.md | 9 ++++----- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/.changesets/docs_garypen_fix_rhai_subgraph_docs.md b/.changesets/docs_garypen_fix_rhai_subgraph_docs.md index 94f696f5fa..26971ca845 100644 --- a/.changesets/docs_garypen_fix_rhai_subgraph_docs.md +++ b/.changesets/docs_garypen_fix_rhai_subgraph_docs.md @@ -1,5 +1,5 @@ -### Rhai documentation: remove incorrect statement about request.subgraph fields ([PR #3808](https://github.com/apollographql/router/pull/3808)) +### docs(rhai): remove incorrect statement about request.subgraph fields ([PR #3808](https://github.com/apollographql/router/pull/3808)) -It is possible to modify `request.subgraph` fields from a `Rhai` script and so the documentation should reflect that. +It is possible to modify `request.subgraph` fields from a `Rhai` script, which is now correctly reflected in [Rhai documentation](https://www.apollographql.com/docs/router/customizations/rhai-api/#request-interface). By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/3808 \ No newline at end of file diff --git a/.changesets/feat_bnjjj_fix_3621.md b/.changesets/feat_bnjjj_fix_3621.md index c09c2619a5..a841305668 100644 --- a/.changesets/feat_bnjjj_fix_3621.md +++ b/.changesets/feat_bnjjj_fix_3621.md @@ -1,14 +1,14 @@ -### feat(redis): add configuration to set the timeout ([Issue #3621](https://github.com/apollographql/router/issues/3621)) +### feat(redis): add configuration to set redis request timeout ([Issue #3621](https://github.com/apollographql/router/issues/3621)) -It adds a configuration to set another timeout than the default one (2ms) for redis requests. It also change the default timeout to 2ms (previously set to 1ms) +We added configuration to modify default timeout for redis requests. Default timeout was also changed from 1ms to **2ms**. -Example for APQ: +Here is an exmample to change the timeout for APQ: ```yaml apq: router: cache: redis: - urls: ["redis://..."] + urls: ["redis://..."] timeout: 5ms ``` diff --git a/.changesets/feat_bnjjj_fix_3767.md b/.changesets/feat_bnjjj_fix_3767.md index a79b1e059d..58525a0cd5 100644 --- a/.changesets/feat_bnjjj_fix_3767.md +++ b/.changesets/feat_bnjjj_fix_3767.md @@ -1,8 +1,8 @@ ### feat(telemetry): add metrics for query plan warmup and schema load ([Issue #3767](https://github.com/apollographql/router/issues/3767)) -It adds histogram metrics for `apollo_router_query_planning_warmup_duration` and `apollo_router_schema_load_duration`. +We added histogram metrics for `apollo_router_query_planning_warmup_duration` and `apollo_router_schema_load_duration`. These metrics make it easier to track the time spent loading a new schema and planning queries in the warm-up phase. You can measure the query plan cache usage for both the in-memory-cache and distributed cache. This makes it easier to know how many entries are used as well ass the cache hit rate. -Example in Prometheus: +Here is what these metrics would look like in Prometheus: ``` # HELP apollo_router_query_planning_warmup_duration apollo_router_query_planning_warmup_duration diff --git a/.changesets/feat_geal_plan_cache_warmup_doc.md b/.changesets/feat_geal_plan_cache_warmup_doc.md index a7c9a6f2f1..60e93ab6b2 100644 --- a/.changesets/feat_geal_plan_cache_warmup_doc.md +++ b/.changesets/feat_geal_plan_cache_warmup_doc.md @@ -1,11 +1,10 @@ ### Query plan cache warm-up improvements ([Issue #3704](https://github.com/apollographql/router/issues/3704)) -The `warm_up_queries` option enables quicker schema updates by precomputing query plans for your most used cached queries and your persisted queries. When a new schema is loaded, a precomputed query plan for it may already be in in-memory cache. +The `warm_up_queries` option enables quicker schema updates by precomputing query plans for your most used cached queries and your persisted queries. When a new schema is loaded, a precomputed query plan for it may already be in the in-memory cache. -We made a series of improvements to this feature to make it more usable: -* It is now active by default and warms up the cache with the 30% most used queries of the previous cache. The amount is still configurable, and it can be deactivated by setting it to 0. -* We added new metrics to track the time spent loading a new schema and planning queries in the warm-up phase. You can also measure the query plan cache usage, to know how many entries are used, and the cache hit rate, both for the in memory cache and the distributed cache. -* The warm-up will now plan queries in random order, to make sure that the work can be shared by multiple router instances using distributed caching +We made a series of improvements to this feature to make it more easier to use: +* It is now active by default and warms up the cache with the 30% most used queries of the previous cache. The query cache amount is still configurable, and it can be deactivated by setting it to 0. +* The warm-up will now plan queries in random order to make sure that the work can be shared by multiple router instances using distributed caching. * Persisted queries are part of the warmed up queries. You can get more information about operating the query plan cache and its warm-up phase in the [documentation](https://www.apollographql.com/docs/router/configuration/in-memory-caching#cache-warm-up) From 94c12dec49a021fd8d07df2919ff8563a5365f48 Mon Sep 17 00:00:00 2001 From: Irina Shestak Date: Tue, 26 Sep 2023 14:44:40 +0200 Subject: [PATCH 4/8] =?UTF-8?q?pass=20num=C3=A9ro=20deux?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docs_garypen_fix_rhai_subgraph_docs.md | 2 +- .changesets/feat_bnjjj_fix_3621.md | 2 +- .changesets/feat_bnjjj_fix_3767.md | 42 ------------------- .../feat_garypen_one_shot_async_check.md | 2 +- .changesets/feat_geal_h2c.md | 2 +- .../feat_geal_plan_cache_warmup_doc.md | 25 ++++++++++- .../feat_geal_reintroduce_rhai_json.md | 4 +- .changesets/feat_geal_subgraph_mtls.md | 2 +- .../feat_geal_supergraph_coprocessor2.md | 22 +++++----- .changesets/feat_sm_add_awsxray_propagator.md | 4 +- .../fix_bnjjj_fix_otel_data_from_log.md | 4 +- .changesets/fix_garypen_3823_fix_diy.md | 6 +-- .changesets/fix_garypen_helm_extra_labels.md | 4 +- ...ted_queries_failover_and_error_handling.md | 2 +- .changesets/fix_renee_fix_large_ints.md | 5 +-- .changesets/fix_simon_large_id.md | 2 +- .changesets/maint_bnjjj_fix_3740.md | 4 +- .../maint_garypen_3663_no_overwrites.md | 2 +- 18 files changed, 56 insertions(+), 80 deletions(-) delete mode 100644 .changesets/feat_bnjjj_fix_3767.md diff --git a/.changesets/docs_garypen_fix_rhai_subgraph_docs.md b/.changesets/docs_garypen_fix_rhai_subgraph_docs.md index 26971ca845..85f93d6e1a 100644 --- a/.changesets/docs_garypen_fix_rhai_subgraph_docs.md +++ b/.changesets/docs_garypen_fix_rhai_subgraph_docs.md @@ -1,4 +1,4 @@ -### docs(rhai): remove incorrect statement about request.subgraph fields ([PR #3808](https://github.com/apollographql/router/pull/3808)) +### Rhai documentation: remove incorrect statement about request.subgraph fields. ([PR #3808](https://github.com/apollographql/router/pull/3808)) It is possible to modify `request.subgraph` fields from a `Rhai` script, which is now correctly reflected in [Rhai documentation](https://www.apollographql.com/docs/router/customizations/rhai-api/#request-interface). diff --git a/.changesets/feat_bnjjj_fix_3621.md b/.changesets/feat_bnjjj_fix_3621.md index a841305668..f0cc0346a4 100644 --- a/.changesets/feat_bnjjj_fix_3621.md +++ b/.changesets/feat_bnjjj_fix_3621.md @@ -1,4 +1,4 @@ -### feat(redis): add configuration to set redis request timeout ([Issue #3621](https://github.com/apollographql/router/issues/3621)) +### Added configuration to set redis request timeout. ([Issue #3621](https://github.com/apollographql/router/issues/3621)) We added configuration to modify default timeout for redis requests. Default timeout was also changed from 1ms to **2ms**. diff --git a/.changesets/feat_bnjjj_fix_3767.md b/.changesets/feat_bnjjj_fix_3767.md deleted file mode 100644 index 58525a0cd5..0000000000 --- a/.changesets/feat_bnjjj_fix_3767.md +++ /dev/null @@ -1,42 +0,0 @@ -### feat(telemetry): add metrics for query plan warmup and schema load ([Issue #3767](https://github.com/apollographql/router/issues/3767)) - -We added histogram metrics for `apollo_router_query_planning_warmup_duration` and `apollo_router_schema_load_duration`. These metrics make it easier to track the time spent loading a new schema and planning queries in the warm-up phase. You can measure the query plan cache usage for both the in-memory-cache and distributed cache. This makes it easier to know how many entries are used as well ass the cache hit rate. - -Here is what these metrics would look like in Prometheus: - -``` -# HELP apollo_router_query_planning_warmup_duration apollo_router_query_planning_warmup_duration -# TYPE apollo_router_query_planning_warmup_duration histogram -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.05"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.1"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.25"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.5"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="1"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="2.5"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="5"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="10"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="20"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="100"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="1000"} 1 -apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="+Inf"} 1 -apollo_router_query_planning_warmup_duration_sum{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version=""} 0.022390619 -apollo_router_query_planning_warmup_duration_count{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version=""} 1 -# HELP apollo_router_schema_load_duration apollo_router_schema_load_duration -# TYPE apollo_router_schema_load_duration histogram -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.05"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.1"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.25"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.5"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="1"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="2.5"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="5"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="10"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="20"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="100"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="1000"} 8 -apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="+Inf"} 8 -apollo_router_schema_load_duration_sum{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version=""} 0.023486205999999996 -apollo_router_schema_load_duration_count{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version=""} 8 -``` - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/3807 diff --git a/.changesets/feat_garypen_one_shot_async_check.md b/.changesets/feat_garypen_one_shot_async_check.md index 61298d848c..a9c472370c 100644 --- a/.changesets/feat_garypen_one_shot_async_check.md +++ b/.changesets/feat_garypen_one_shot_async_check.md @@ -1,4 +1,4 @@ -### Introduce OneShotAsyncCheckpoint ([PR #3819](https://github.com/apollographql/router/pull/3819)) +### Introduce OneShotAsyncCheckpoint. ([PR #3819](https://github.com/apollographql/router/pull/3819)) The existing AsynCheckpoint requires `Clone` and thus introduces a need for Service Buffering which reduces the performance and resiliance of the router. diff --git a/.changesets/feat_geal_h2c.md b/.changesets/feat_geal_h2c.md index 0852c40671..ea11c85b92 100644 --- a/.changesets/feat_geal_h2c.md +++ b/.changesets/feat_geal_h2c.md @@ -1,4 +1,4 @@ -### HTTP/2 Cleartext protocol (h2c) support for subgraph connections ([Issue #3535](https://github.com/apollographql/router/issues/3535)) +### HTTP/2 Cleartext protocol (h2c) support for subgraph connections. ([Issue #3535](https://github.com/apollographql/router/issues/3535)) The router can now connect to subgraphs over HTTP/2 Cleartext, which uses the HTTP/2 binary protocol directly over TCP without TLS. To activate it, set the `experimental_http2` option to `http2_only`. diff --git a/.changesets/feat_geal_plan_cache_warmup_doc.md b/.changesets/feat_geal_plan_cache_warmup_doc.md index 60e93ab6b2..7246bbdbbe 100644 --- a/.changesets/feat_geal_plan_cache_warmup_doc.md +++ b/.changesets/feat_geal_plan_cache_warmup_doc.md @@ -1,4 +1,4 @@ -### Query plan cache warm-up improvements ([Issue #3704](https://github.com/apollographql/router/issues/3704)) +### Query plan cache warm-up improvements. ([Issue #3704](https://github.com/apollographql/router/issues/3704), [Issue #3767](https://github.com/apollographql/router/issues/3767)) The `warm_up_queries` option enables quicker schema updates by precomputing query plans for your most used cached queries and your persisted queries. When a new schema is loaded, a precomputed query plan for it may already be in the in-memory cache. @@ -7,6 +7,27 @@ We made a series of improvements to this feature to make it more easier to use: * The warm-up will now plan queries in random order to make sure that the work can be shared by multiple router instances using distributed caching. * Persisted queries are part of the warmed up queries. +We also added histogram metrics for `apollo_router_query_planning_warmup_duration` and `apollo_router_schema_load_duration`. These metrics make it easier to track the time spent loading a new schema and planning queries in the warm-up phase. You can measure the query plan cache usage for both the in-memory-cache and distributed cache. This makes it easier to know how many entries are used as well ass the cache hit rate. + +Here is what these metrics would look like in Prometheus: + +``` +# HELP apollo_router_query_planning_warmup_duration apollo_router_query_planning_warmup_duration +# TYPE apollo_router_query_planning_warmup_duration histogram +apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.05"} 1 +apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.1"} 1 +apollo_router_query_planning_warmup_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.25"} 1 +apollo_router_query_planning_warmup_duration_sum{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version=""} 0.022390619 +apollo_router_query_planning_warmup_duration_count{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version=""} 1 +# HELP apollo_router_schema_load_duration apollo_router_schema_load_duration +# TYPE apollo_router_schema_load_duration histogram +apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.05"} 8 +apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.1"} 8 +apollo_router_schema_load_duration_bucket{service_name="apollo-router",otel_scope_name="apollo/router",otel_scope_version="",le="0.25"} 8 +``` + You can get more information about operating the query plan cache and its warm-up phase in the [documentation](https://www.apollographql.com/docs/router/configuration/in-memory-caching#cache-warm-up) -By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/3815 https://github.com/apollographql/router/pull/3801 https://github.com/apollographql/router/pull/3767 https://github.com/apollographql/router/pull/3769 https://github.com/apollographql/router/pull/3770 \ No newline at end of file +By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/3815 https://github.com/apollographql/router/pull/3801 https://github.com/apollographql/router/pull/3767 https://github.com/apollographql/router/pull/3769 https://github.com/apollographql/router/pull/3770 + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/3807 \ No newline at end of file diff --git a/.changesets/feat_geal_reintroduce_rhai_json.md b/.changesets/feat_geal_reintroduce_rhai_json.md index f76e238eca..20370bb25f 100644 --- a/.changesets/feat_geal_reintroduce_rhai_json.md +++ b/.changesets/feat_geal_reintroduce_rhai_json.md @@ -1,5 +1,5 @@ -### JSON encoding and decoding in Rhai ([PR #3785](https://github.com/apollographql/router/pull/3785)) +### JSON encoding and decoding in Rhai. ([PR #3785](https://github.com/apollographql/router/pull/3785)) -It is now possible to encode or decode JSON from Rhai scripts using `json::encode` and `json::decode` +It is now possible to encode or decode JSON from Rhai scripts using `json::encode` and `json::decode`. By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/3785 \ No newline at end of file diff --git a/.changesets/feat_geal_subgraph_mtls.md b/.changesets/feat_geal_subgraph_mtls.md index a377ab52bf..35b770eab4 100644 --- a/.changesets/feat_geal_subgraph_mtls.md +++ b/.changesets/feat_geal_subgraph_mtls.md @@ -1,4 +1,4 @@ -### TLS client authentication for subgraph requests ([Issue #3414](https://github.com/apollographql/router/issues/3414)) +### TLS client authentication for subgraph requests. ([Issue #3414](https://github.com/apollographql/router/issues/3414)) The router now supports TLS client authentication when connecting to subgraphs. It can be configured as follows: diff --git a/.changesets/feat_geal_supergraph_coprocessor2.md b/.changesets/feat_geal_supergraph_coprocessor2.md index 9dd3030a34..c090d28091 100644 --- a/.changesets/feat_geal_supergraph_coprocessor2.md +++ b/.changesets/feat_geal_supergraph_coprocessor2.md @@ -1,6 +1,6 @@ -### Supergraph coprocessor implementation ([PR #3647](https://github.com/apollographql/router/pull/3647)) +### Supergraph coprocessor implementation. ([PR #3647](https://github.com/apollographql/router/pull/3647)) -Coprocessors now support supergraph service interception. +Coprocessors now support supergraph service interception. On the request side, the coprocessor payload can contain: - method @@ -17,17 +17,17 @@ On the response side, the payload can contain: - sdl The supergraph request body contains: -* query -* operation name -* variables -* extensions +- query +- operation name +- variables +- extensions The supergraph response body contains: -* label -* data -* errors -* extensions +- label +- data +- errors +- extensions -When using `@defer` or subscriptions a supergraph response may contain multiple GraphQL responses, and the coprocessor will be called for each. +When using `@defer` or subscriptions a supergraph response may contain multiple GraphQL responses. The coprocessor will be called for each. By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/3647 \ No newline at end of file diff --git a/.changesets/feat_sm_add_awsxray_propagator.md b/.changesets/feat_sm_add_awsxray_propagator.md index 9b1ff8b2e7..0254d70c0e 100644 --- a/.changesets/feat_sm_add_awsxray_propagator.md +++ b/.changesets/feat_sm_add_awsxray_propagator.md @@ -1,5 +1,5 @@ -Adds support for the OpenTelemetry AWS X-Ray tracing propagator. +### Adds support for the OpenTelemetry AWS X-Ray tracing propagator. ([PR #3580](https://github.com/apollographql/router/pull/3580)) -This propagator helps propagate tracing information from upstream services (such as AWS load balancers) to downstream services and handles conversion between the X-Ray trace id format and OpenTelemetry span contexts. +This propagator helps propagate tracing information from upstream services (such as AWS load balancers) to downstream services. It also handles conversion between the X-Ray trace id format and OpenTelemetry span contexts. By [@scottmace](https://github.com/scottmace) in https://github.com/apollographql/router/pull/3580 diff --git a/.changesets/fix_bnjjj_fix_otel_data_from_log.md b/.changesets/fix_bnjjj_fix_otel_data_from_log.md index 8d2fb003cc..1828f51978 100644 --- a/.changesets/fix_bnjjj_fix_otel_data_from_log.md +++ b/.changesets/fix_bnjjj_fix_otel_data_from_log.md @@ -1,5 +1,5 @@ -### fix(telemetry): do not display otel bug if the trace is sampled ([PR #3832](https://github.com/apollographql/router/pull/3832)) +### fix(telemetry): do not display otel bug if the trace is sampled. ([PR #3832](https://github.com/apollographql/router/pull/3832)) -We changed the way we are sampling spans. If you had logs in an evicted span it displays that log `Unable to find OtelData in extensions; this is a bug` which is incorrect, it's not a bug, we just can't display the `trace_id` because there is no `trace_id` as the span has not been sampled. +We changed the way we are sampling spans. If you had logs in an evicted span it displays an error: `Unable to find OtelData in extensions; this is a bug`. This is incorrect, as it's not a bug. The logs cannot display the `trace_id` as there is no `trace_id` when the span has not been yet sampled. By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/3832 \ No newline at end of file diff --git a/.changesets/fix_garypen_3823_fix_diy.md b/.changesets/fix_garypen_3823_fix_diy.md index 3da4807001..3967c0ea23 100644 --- a/.changesets/fix_garypen_3823_fix_diy.md +++ b/.changesets/fix_garypen_3823_fix_diy.md @@ -1,7 +1,7 @@ -### fix the diy build_docker_image.sh script ([Issue #3823](https://github.com/apollographql/router/issues/3823)) +### Docker Image: fix the DIY build_docker_image.sh script. ([Issue #3823](https://github.com/apollographql/router/issues/3823)) -The diy `build_docker_image.sh` script was broken by the latest `deno` update due to a new requirement to have `cmake` when compiling the router. +The DIY `build_docker_image.sh` script was broken by the latest `deno` update due to a new requirement to have `cmake` when compiling the router. -This adds `cmake` to the build step for diy builds to fix the problem. +This adds `cmake` to the build step for DIY builds to fix the problem. By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/3824 diff --git a/.changesets/fix_garypen_helm_extra_labels.md b/.changesets/fix_garypen_helm_extra_labels.md index 4082915ff1..e08725c6e8 100644 --- a/.changesets/fix_garypen_helm_extra_labels.md +++ b/.changesets/fix_garypen_helm_extra_labels.md @@ -1,7 +1,7 @@ -### Helm: If there are `extraLabels` add them to all resources ([PR #3622](https://github.com/apollographql/router/pull/3622)) +### Helm: If there are `extraLabels` add them to all resources. ([PR #3622](https://github.com/apollographql/router/pull/3622)) This extends the functionality of `extraLabels` so that, if they are defined, they will be templated for all resources created by the chart. - + Previously, they were only templated onto the `Deployment` resource. By [@garypen](https://github.com/garypen) and [@bjoernw](https://github.com/bjoernw) in https://github.com/apollographql/router/pull/3622 diff --git a/.changesets/fix_persisted_queries_failover_and_error_handling.md b/.changesets/fix_persisted_queries_failover_and_error_handling.md index 554ec346f0..b4b14486a1 100644 --- a/.changesets/fix_persisted_queries_failover_and_error_handling.md +++ b/.changesets/fix_persisted_queries_failover_and_error_handling.md @@ -1,4 +1,4 @@ -### Improve multi-cloud failover and error handling for Persisted Queries +### Improve multi-cloud failover and error handling for Persisted Queries. ([PR #3863](https://github.com/apollographql/router/pull/3863)) Improves the resilience of the Persisted Queries feature to Uplink outages, and makes errors fetching Persisted Query Manifests from Uplink more visible. diff --git a/.changesets/fix_renee_fix_large_ints.md b/.changesets/fix_renee_fix_large_ints.md index 756249f92c..55492d6f3c 100644 --- a/.changesets/fix_renee_fix_large_ints.md +++ b/.changesets/fix_renee_fix_large_ints.md @@ -1,4 +1,4 @@ -### Fix error response on large numbers in query transformations ([PR #3820](https://github.com/apollographql/router/pull/3820)) +### Fix error response on large number types in query transformations. ([PR #3820](https://github.com/apollographql/router/pull/3820)) This bug caused the router to reject operations where a large hardcoded integer was used as input for a Float field: @@ -16,7 +16,4 @@ type Query { Now the number is correctly interpreted as a Float. This bug only affected hardcoded numbers, not numbers provided through variables. - ---- - By [@goto-bus-stop](https://github.com/goto-bus-stop) in https://github.com/apollographql/router/pull/3820 \ No newline at end of file diff --git a/.changesets/fix_simon_large_id.md b/.changesets/fix_simon_large_id.md index 58fdfcdebe..3225b973c5 100644 --- a/.changesets/fix_simon_large_id.md +++ b/.changesets/fix_simon_large_id.md @@ -1,4 +1,4 @@ -### Fix validation error with ID variable values overflowing i32 ([Issue #3873](https://github.com/apollographql/router/issues/3873)) +### Fix validation error with ID variable values overflowing i32. ([Issue #3873](https://github.com/apollographql/router/issues/3873)) Input values for variables of type `ID` were previously validated as "either like a GraphQL `Int` or like a GraphQL `String`". GraphQL `Int` is specified as a signed 32-bit integer, such that values that overflow fail validation. Applying this range restriction to `ID` values was incorrect. Instead, validation for `ID` now accepts any JSON integer or JSON string value, so that IDs larger than 32 bits can be used. diff --git a/.changesets/maint_bnjjj_fix_3740.md b/.changesets/maint_bnjjj_fix_3740.md index d4bc5fee7d..8ac1b78579 100644 --- a/.changesets/maint_bnjjj_fix_3740.md +++ b/.changesets/maint_bnjjj_fix_3740.md @@ -1,5 +1,5 @@ -### Add integration test for subscription ([Issue #3740](https://github.com/apollographql/router/issues/3740)) +### Add integration test for subscription. ([Issue #3740](https://github.com/apollographql/router/issues/3740)) Add a regression test that ensures an unnamed subscription makes it through the request pipeline. -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/3752 \ No newline at end of file +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/3752:w \ No newline at end of file diff --git a/.changesets/maint_garypen_3663_no_overwrites.md b/.changesets/maint_garypen_3663_no_overwrites.md index 1a155f7353..979c0d193b 100644 --- a/.changesets/maint_garypen_3663_no_overwrites.md +++ b/.changesets/maint_garypen_3663_no_overwrites.md @@ -1,4 +1,4 @@ -### Check if docker images and helm charts exist before creating them ([Issue #3663](https://github.com/apollographql/router/issues/3663)) +### Check if docker images and helm charts exist before creating them. ([Issue #3663](https://github.com/apollographql/router/issues/3663)) This improves the resilience of our pipeline. From bd8d41d56cafcfc731317a195886cc9ff1333194 Mon Sep 17 00:00:00 2001 From: Irina Shestak Date: Tue, 26 Sep 2023 15:40:20 +0200 Subject: [PATCH 5/8] =?UTF-8?q?ceci=20n'est=20pas=20une=20passe=20num?= =?UTF-8?q?=C3=A9ro=20trois?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changesets/docs_garypen_fix_rhai_subgraph_docs.md | 2 +- .changesets/feat_bnjjj_fix_3621.md | 2 +- .changesets/feat_garypen_one_shot_async_check.md | 11 ----------- .changesets/feat_geal_h2c.md | 2 +- .changesets/feat_geal_plan_cache_warmup_doc.md | 8 +++++--- .changesets/feat_geal_subgraph_mtls.md | 2 ++ .changesets/feat_geal_supergraph_coprocessor2.md | 2 +- .changesets/fix_bnjjj_fix_otel_data_from_log.md | 5 ----- .changesets/fix_garypen_3823_fix_diy.md | 7 ------- ...x_persisted_queries_failover_and_error_handling.md | 2 +- .changesets/fix_renee_fix_large_ints.md | 3 +-- .changesets/maint_bnjjj_fix_3740.md | 5 ----- .changesets/maint_garypen_3663_no_overwrites.md | 5 ----- docs/source/configuration/overview.mdx | 4 ++-- 14 files changed, 15 insertions(+), 45 deletions(-) delete mode 100644 .changesets/feat_garypen_one_shot_async_check.md delete mode 100644 .changesets/fix_bnjjj_fix_otel_data_from_log.md delete mode 100644 .changesets/fix_garypen_3823_fix_diy.md delete mode 100644 .changesets/maint_bnjjj_fix_3740.md delete mode 100644 .changesets/maint_garypen_3663_no_overwrites.md diff --git a/.changesets/docs_garypen_fix_rhai_subgraph_docs.md b/.changesets/docs_garypen_fix_rhai_subgraph_docs.md index 85f93d6e1a..bbd4366190 100644 --- a/.changesets/docs_garypen_fix_rhai_subgraph_docs.md +++ b/.changesets/docs_garypen_fix_rhai_subgraph_docs.md @@ -1,5 +1,5 @@ ### Rhai documentation: remove incorrect statement about request.subgraph fields. ([PR #3808](https://github.com/apollographql/router/pull/3808)) -It is possible to modify `request.subgraph` fields from a `Rhai` script, which is now correctly reflected in [Rhai documentation](https://www.apollographql.com/docs/router/customizations/rhai-api/#request-interface). +It is possible to modify `request.subgraph` fields from a `Rhai` script. Updating [documentation](https://www.apollographql.com/docs/router/customizations/rhai-api/#request-interface) to reflect that. By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/3808 \ No newline at end of file diff --git a/.changesets/feat_bnjjj_fix_3621.md b/.changesets/feat_bnjjj_fix_3621.md index f0cc0346a4..e11b6e8ea5 100644 --- a/.changesets/feat_bnjjj_fix_3621.md +++ b/.changesets/feat_bnjjj_fix_3621.md @@ -1,6 +1,6 @@ ### Added configuration to set redis request timeout. ([Issue #3621](https://github.com/apollographql/router/issues/3621)) -We added configuration to modify default timeout for redis requests. Default timeout was also changed from 1ms to **2ms**. +We added configuration to override default timeout for redis requests. Default timeout was also changed from 1ms to **2ms**. Here is an exmample to change the timeout for APQ: ```yaml diff --git a/.changesets/feat_garypen_one_shot_async_check.md b/.changesets/feat_garypen_one_shot_async_check.md deleted file mode 100644 index a9c472370c..0000000000 --- a/.changesets/feat_garypen_one_shot_async_check.md +++ /dev/null @@ -1,11 +0,0 @@ -### Introduce OneShotAsyncCheckpoint. ([PR #3819](https://github.com/apollographql/router/pull/3819)) - -The existing AsynCheckpoint requires `Clone` and thus introduces a need for Service Buffering which reduces the performance and resiliance of the router. - -This new set of Services, Layers and utility functions removes the requirement for `Clone` and thus the requirement for service buffering. - -Existing uses of AsyncCheckpoint within the router are replaced with OneShotAsyncCheckpoint along with the requirement to `buffer()` such services. - -If you have a custom plugin that makes use of `AsyncCheckpoint`, we encourage you to migrate to `OneShotAsyncCheckpoint` and thus reduce the requirement for service buffering from your router. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/3819 \ No newline at end of file diff --git a/.changesets/feat_geal_h2c.md b/.changesets/feat_geal_h2c.md index ea11c85b92..5e9bf2d5e8 100644 --- a/.changesets/feat_geal_h2c.md +++ b/.changesets/feat_geal_h2c.md @@ -1,4 +1,4 @@ -### HTTP/2 Cleartext protocol (h2c) support for subgraph connections. ([Issue #3535](https://github.com/apollographql/router/issues/3535)) +### HTTP/2 Cleartext protocol (H2C) support for subgraph connections. ([Issue #3535](https://github.com/apollographql/router/issues/3535)) The router can now connect to subgraphs over HTTP/2 Cleartext, which uses the HTTP/2 binary protocol directly over TCP without TLS. To activate it, set the `experimental_http2` option to `http2_only`. diff --git a/.changesets/feat_geal_plan_cache_warmup_doc.md b/.changesets/feat_geal_plan_cache_warmup_doc.md index 7246bbdbbe..407df74848 100644 --- a/.changesets/feat_geal_plan_cache_warmup_doc.md +++ b/.changesets/feat_geal_plan_cache_warmup_doc.md @@ -2,12 +2,14 @@ The `warm_up_queries` option enables quicker schema updates by precomputing query plans for your most used cached queries and your persisted queries. When a new schema is loaded, a precomputed query plan for it may already be in the in-memory cache. -We made a series of improvements to this feature to make it more easier to use: -* It is now active by default and warms up the cache with the 30% most used queries of the previous cache. The query cache amount is still configurable, and it can be deactivated by setting it to 0. +We made a series of improvements to this feature to make it easier to use: +* It is now active by default. +* It warms up the cache with the 30% most used queries from previous cache. +* The query cache percentage continues to be configurable, and it can be deactivated by setting it to 0. * The warm-up will now plan queries in random order to make sure that the work can be shared by multiple router instances using distributed caching. * Persisted queries are part of the warmed up queries. -We also added histogram metrics for `apollo_router_query_planning_warmup_duration` and `apollo_router_schema_load_duration`. These metrics make it easier to track the time spent loading a new schema and planning queries in the warm-up phase. You can measure the query plan cache usage for both the in-memory-cache and distributed cache. This makes it easier to know how many entries are used as well ass the cache hit rate. +We also added histogram metrics for `apollo_router_query_planning_warmup_duration` and `apollo_router_schema_load_duration`. These metrics make it easier to track the time spent loading a new schema and planning queries in the warm-up phase. You can measure the query plan cache usage for both the in-memory-cache and distributed cache. This makes it easier to know how many entries are used as well as the cache hit rate. Here is what these metrics would look like in Prometheus: diff --git a/.changesets/feat_geal_subgraph_mtls.md b/.changesets/feat_geal_subgraph_mtls.md index 35b770eab4..2f1400af9f 100644 --- a/.changesets/feat_geal_subgraph_mtls.md +++ b/.changesets/feat_geal_subgraph_mtls.md @@ -18,4 +18,6 @@ tls: key: ${file./path/to/key.pem} ``` +Details on TLS client authentication can be found in the [documentation](https://www.apollographql.com/docs/router/configuration/overview#tls-client-authentication-for-subgraph-requests) + By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/3794 \ No newline at end of file diff --git a/.changesets/feat_geal_supergraph_coprocessor2.md b/.changesets/feat_geal_supergraph_coprocessor2.md index c090d28091..12298e4673 100644 --- a/.changesets/feat_geal_supergraph_coprocessor2.md +++ b/.changesets/feat_geal_supergraph_coprocessor2.md @@ -28,6 +28,6 @@ The supergraph response body contains: - errors - extensions -When using `@defer` or subscriptions a supergraph response may contain multiple GraphQL responses. The coprocessor will be called for each. +When using `@defer` or subscriptions a supergraph response may contain multiple GraphQL responses. The coprocessor will be called for each response. Please refer to our [coprocessor documentation](https://www.apollographql.com/docs/router/customizations/coprocessor) for more information. By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/3647 \ No newline at end of file diff --git a/.changesets/fix_bnjjj_fix_otel_data_from_log.md b/.changesets/fix_bnjjj_fix_otel_data_from_log.md deleted file mode 100644 index 1828f51978..0000000000 --- a/.changesets/fix_bnjjj_fix_otel_data_from_log.md +++ /dev/null @@ -1,5 +0,0 @@ -### fix(telemetry): do not display otel bug if the trace is sampled. ([PR #3832](https://github.com/apollographql/router/pull/3832)) - -We changed the way we are sampling spans. If you had logs in an evicted span it displays an error: `Unable to find OtelData in extensions; this is a bug`. This is incorrect, as it's not a bug. The logs cannot display the `trace_id` as there is no `trace_id` when the span has not been yet sampled. - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/3832 \ No newline at end of file diff --git a/.changesets/fix_garypen_3823_fix_diy.md b/.changesets/fix_garypen_3823_fix_diy.md deleted file mode 100644 index 3967c0ea23..0000000000 --- a/.changesets/fix_garypen_3823_fix_diy.md +++ /dev/null @@ -1,7 +0,0 @@ -### Docker Image: fix the DIY build_docker_image.sh script. ([Issue #3823](https://github.com/apollographql/router/issues/3823)) - -The DIY `build_docker_image.sh` script was broken by the latest `deno` update due to a new requirement to have `cmake` when compiling the router. - -This adds `cmake` to the build step for DIY builds to fix the problem. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/3824 diff --git a/.changesets/fix_persisted_queries_failover_and_error_handling.md b/.changesets/fix_persisted_queries_failover_and_error_handling.md index b4b14486a1..dd30320587 100644 --- a/.changesets/fix_persisted_queries_failover_and_error_handling.md +++ b/.changesets/fix_persisted_queries_failover_and_error_handling.md @@ -1,5 +1,5 @@ ### Improve multi-cloud failover and error handling for Persisted Queries. ([PR #3863](https://github.com/apollographql/router/pull/3863)) -Improves the resilience of the Persisted Queries feature to Uplink outages, and makes errors fetching Persisted Query Manifests from Uplink more visible. +Improves the resilience of the Persisted Queries feature to Uplink outages. This makes errors while fetching persisted query manifests from Uplink more visible. By [@glasser](https://github.com/glasser) in https://github.com/apollographql/router/pull/3863 \ No newline at end of file diff --git a/.changesets/fix_renee_fix_large_ints.md b/.changesets/fix_renee_fix_large_ints.md index 55492d6f3c..af3d7a097c 100644 --- a/.changesets/fix_renee_fix_large_ints.md +++ b/.changesets/fix_renee_fix_large_ints.md @@ -13,7 +13,6 @@ type Query { } ``` -Now the number is correctly interpreted as a Float. -This bug only affected hardcoded numbers, not numbers provided through variables. +This number is now correctly interpreted as a Float. This bug only affected hardcoded numbers, not numbers provided through variables. By [@goto-bus-stop](https://github.com/goto-bus-stop) in https://github.com/apollographql/router/pull/3820 \ No newline at end of file diff --git a/.changesets/maint_bnjjj_fix_3740.md b/.changesets/maint_bnjjj_fix_3740.md deleted file mode 100644 index 8ac1b78579..0000000000 --- a/.changesets/maint_bnjjj_fix_3740.md +++ /dev/null @@ -1,5 +0,0 @@ -### Add integration test for subscription. ([Issue #3740](https://github.com/apollographql/router/issues/3740)) - -Add a regression test that ensures an unnamed subscription makes it through the request pipeline. - -By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/3752:w \ No newline at end of file diff --git a/.changesets/maint_garypen_3663_no_overwrites.md b/.changesets/maint_garypen_3663_no_overwrites.md deleted file mode 100644 index 979c0d193b..0000000000 --- a/.changesets/maint_garypen_3663_no_overwrites.md +++ /dev/null @@ -1,5 +0,0 @@ -### Check if docker images and helm charts exist before creating them. ([Issue #3663](https://github.com/apollographql/router/issues/3663)) - -This improves the resilience of our pipeline. - -By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/3825 \ No newline at end of file diff --git a/docs/source/configuration/overview.mdx b/docs/source/configuration/overview.mdx index b96f4fcc2a..4b2125290d 100644 --- a/docs/source/configuration/overview.mdx +++ b/docs/source/configuration/overview.mdx @@ -238,7 +238,7 @@ If set, disables sending anonymous usage information to Apollo. -If set, the listen address of the router. +If set, the listen address of the router. @@ -607,7 +607,7 @@ This produces the file as `server.crt` which can be used in `certificate_authori #### TLS client authentication for subgraph requests -The router support mutual TLS authentication (mTLS) with the subgraphs. This means that it can authenticate itself to the subgraph using a certificate chain and a cryptographic key. It can be configured as follows: +The router supports mutual TLS authentication (mTLS) with the subgraphs. This means that it can authenticate itself to the subgraph using a certificate chain and a cryptographic key. It can be configured as follows: ```yaml tls: From d11fae03177b3cb4fbe39ba88dc7890e792455ee Mon Sep 17 00:00:00 2001 From: Iryna Shestak Date: Wed, 27 Sep 2023 13:22:15 +0200 Subject: [PATCH 6/8] Apply suggestions from code review Co-authored-by: Jesse Rosenberger --- .changesets/docs_garypen_fix_rhai_subgraph_docs.md | 4 ++-- .changesets/feat_bnjjj_fix_3621.md | 2 +- .changesets/feat_geal_h2c.md | 2 +- .changesets/fix_renee_fix_large_ints.md | 2 +- .changesets/fix_simon_large_id.md | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.changesets/docs_garypen_fix_rhai_subgraph_docs.md b/.changesets/docs_garypen_fix_rhai_subgraph_docs.md index 85f93d6e1a..d08bf3f967 100644 --- a/.changesets/docs_garypen_fix_rhai_subgraph_docs.md +++ b/.changesets/docs_garypen_fix_rhai_subgraph_docs.md @@ -1,5 +1,5 @@ -### Rhai documentation: remove incorrect statement about request.subgraph fields. ([PR #3808](https://github.com/apollographql/router/pull/3808)) +### Rhai documentation: remove incorrect statement about request.subgraph fields ([PR #3808](https://github.com/apollographql/router/pull/3808)) -It is possible to modify `request.subgraph` fields from a `Rhai` script, which is now correctly reflected in [Rhai documentation](https://www.apollographql.com/docs/router/customizations/rhai-api/#request-interface). +It is possible to modify `request.subgraph` fields from a Rhai script, which is now correctly reflected in [Rhai documentation](https://www.apollographql.com/docs/router/customizations/rhai-api/#request-interface). By [@garypen](https://github.com/garypen) in https://github.com/apollographql/router/pull/3808 \ No newline at end of file diff --git a/.changesets/feat_bnjjj_fix_3621.md b/.changesets/feat_bnjjj_fix_3621.md index e11b6e8ea5..5ec5ed8018 100644 --- a/.changesets/feat_bnjjj_fix_3621.md +++ b/.changesets/feat_bnjjj_fix_3621.md @@ -1,6 +1,6 @@ ### Added configuration to set redis request timeout. ([Issue #3621](https://github.com/apollographql/router/issues/3621)) -We added configuration to override default timeout for redis requests. Default timeout was also changed from 1ms to **2ms**. +We added configuration to override default timeout for Redis requests. Default timeout was also changed from 1ms to **2ms**. Here is an exmample to change the timeout for APQ: ```yaml diff --git a/.changesets/feat_geal_h2c.md b/.changesets/feat_geal_h2c.md index 5e9bf2d5e8..e989c6beef 100644 --- a/.changesets/feat_geal_h2c.md +++ b/.changesets/feat_geal_h2c.md @@ -1,5 +1,5 @@ ### HTTP/2 Cleartext protocol (H2C) support for subgraph connections. ([Issue #3535](https://github.com/apollographql/router/issues/3535)) -The router can now connect to subgraphs over HTTP/2 Cleartext, which uses the HTTP/2 binary protocol directly over TCP without TLS. To activate it, set the `experimental_http2` option to `http2_only`. +The router can now connect to subgraphs over HTTP/2 Cleartext (H2C), which uses the HTTP/2 binary protocol directly over TCP **without TLS**, which is a mode of operation desired with some service mesh configurations (e.g., Istio, Envoy) where the value of added encryption is unnecessary. To activate it, set the `experimental_http2` option to `http2_only`. By [@Geal](https://github.com/Geal) in https://github.com/apollographql/router/pull/3852 \ No newline at end of file diff --git a/.changesets/fix_renee_fix_large_ints.md b/.changesets/fix_renee_fix_large_ints.md index af3d7a097c..fc3aaf3fd2 100644 --- a/.changesets/fix_renee_fix_large_ints.md +++ b/.changesets/fix_renee_fix_large_ints.md @@ -13,6 +13,6 @@ type Query { } ``` -This number is now correctly interpreted as a Float. This bug only affected hardcoded numbers, not numbers provided through variables. +This number is now correctly interpreted as a `Float`. This bug only affected hardcoded numbers, not numbers provided through variables. By [@goto-bus-stop](https://github.com/goto-bus-stop) in https://github.com/apollographql/router/pull/3820 \ No newline at end of file diff --git a/.changesets/fix_simon_large_id.md b/.changesets/fix_simon_large_id.md index 3225b973c5..f2e0b2590a 100644 --- a/.changesets/fix_simon_large_id.md +++ b/.changesets/fix_simon_large_id.md @@ -1,4 +1,4 @@ -### Fix validation error with ID variable values overflowing i32. ([Issue #3873](https://github.com/apollographql/router/issues/3873)) +### Fix validation error with `ID` variable values overflowing 32-bit integers. ([Issue #3873](https://github.com/apollographql/router/issues/3873)) Input values for variables of type `ID` were previously validated as "either like a GraphQL `Int` or like a GraphQL `String`". GraphQL `Int` is specified as a signed 32-bit integer, such that values that overflow fail validation. Applying this range restriction to `ID` values was incorrect. Instead, validation for `ID` now accepts any JSON integer or JSON string value, so that IDs larger than 32 bits can be used. From 7cfc0ff40194a413a835bb5c653fa35c57f02024 Mon Sep 17 00:00:00 2001 From: Irina Shestak Date: Wed, 27 Sep 2023 13:23:46 +0200 Subject: [PATCH 7/8] rm periods at end of sentences --- .changesets/feat_bnjjj_fix_3621.md | 2 +- .changesets/feat_geal_h2c.md | 2 +- .changesets/feat_geal_plan_cache_warmup_doc.md | 2 +- .changesets/feat_geal_reintroduce_rhai_json.md | 2 +- .changesets/feat_geal_subgraph_mtls.md | 2 +- .changesets/feat_geal_supergraph_coprocessor2.md | 2 +- .changesets/feat_sm_add_awsxray_propagator.md | 2 +- .changesets/fix_garypen_helm_extra_labels.md | 2 +- .changesets/fix_igni_coprocessors_discard_content_length.md | 2 +- .../fix_persisted_queries_failover_and_error_handling.md | 2 +- .changesets/fix_renee_fix_large_ints.md | 2 +- .changesets/fix_simon_large_id.md | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.changesets/feat_bnjjj_fix_3621.md b/.changesets/feat_bnjjj_fix_3621.md index 5ec5ed8018..70dfd20691 100644 --- a/.changesets/feat_bnjjj_fix_3621.md +++ b/.changesets/feat_bnjjj_fix_3621.md @@ -1,4 +1,4 @@ -### Added configuration to set redis request timeout. ([Issue #3621](https://github.com/apollographql/router/issues/3621)) +### Added configuration to set redis request timeout ([Issue #3621](https://github.com/apollographql/router/issues/3621)) We added configuration to override default timeout for Redis requests. Default timeout was also changed from 1ms to **2ms**. diff --git a/.changesets/feat_geal_h2c.md b/.changesets/feat_geal_h2c.md index e989c6beef..b6874069a0 100644 --- a/.changesets/feat_geal_h2c.md +++ b/.changesets/feat_geal_h2c.md @@ -1,4 +1,4 @@ -### HTTP/2 Cleartext protocol (H2C) support for subgraph connections. ([Issue #3535](https://github.com/apollographql/router/issues/3535)) +### HTTP/2 Cleartext protocol (H2C) support for subgraph connections ([Issue #3535](https://github.com/apollographql/router/issues/3535)) The router can now connect to subgraphs over HTTP/2 Cleartext (H2C), which uses the HTTP/2 binary protocol directly over TCP **without TLS**, which is a mode of operation desired with some service mesh configurations (e.g., Istio, Envoy) where the value of added encryption is unnecessary. To activate it, set the `experimental_http2` option to `http2_only`. diff --git a/.changesets/feat_geal_plan_cache_warmup_doc.md b/.changesets/feat_geal_plan_cache_warmup_doc.md index 407df74848..8eb3e1dee1 100644 --- a/.changesets/feat_geal_plan_cache_warmup_doc.md +++ b/.changesets/feat_geal_plan_cache_warmup_doc.md @@ -1,4 +1,4 @@ -### Query plan cache warm-up improvements. ([Issue #3704](https://github.com/apollographql/router/issues/3704), [Issue #3767](https://github.com/apollographql/router/issues/3767)) +### Query plan cache warm-up improvements ([Issue #3704](https://github.com/apollographql/router/issues/3704), [Issue #3767](https://github.com/apollographql/router/issues/3767)) The `warm_up_queries` option enables quicker schema updates by precomputing query plans for your most used cached queries and your persisted queries. When a new schema is loaded, a precomputed query plan for it may already be in the in-memory cache. diff --git a/.changesets/feat_geal_reintroduce_rhai_json.md b/.changesets/feat_geal_reintroduce_rhai_json.md index 20370bb25f..7f960707db 100644 --- a/.changesets/feat_geal_reintroduce_rhai_json.md +++ b/.changesets/feat_geal_reintroduce_rhai_json.md @@ -1,4 +1,4 @@ -### JSON encoding and decoding in Rhai. ([PR #3785](https://github.com/apollographql/router/pull/3785)) +### JSON encoding and decoding in Rhai ([PR #3785](https://github.com/apollographql/router/pull/3785)) It is now possible to encode or decode JSON from Rhai scripts using `json::encode` and `json::decode`. diff --git a/.changesets/feat_geal_subgraph_mtls.md b/.changesets/feat_geal_subgraph_mtls.md index 2f1400af9f..9ab4698a1a 100644 --- a/.changesets/feat_geal_subgraph_mtls.md +++ b/.changesets/feat_geal_subgraph_mtls.md @@ -1,4 +1,4 @@ -### TLS client authentication for subgraph requests. ([Issue #3414](https://github.com/apollographql/router/issues/3414)) +### TLS client authentication for subgraph requests ([Issue #3414](https://github.com/apollographql/router/issues/3414)) The router now supports TLS client authentication when connecting to subgraphs. It can be configured as follows: diff --git a/.changesets/feat_geal_supergraph_coprocessor2.md b/.changesets/feat_geal_supergraph_coprocessor2.md index 12298e4673..ead15c859c 100644 --- a/.changesets/feat_geal_supergraph_coprocessor2.md +++ b/.changesets/feat_geal_supergraph_coprocessor2.md @@ -1,4 +1,4 @@ -### Supergraph coprocessor implementation. ([PR #3647](https://github.com/apollographql/router/pull/3647)) +### Supergraph coprocessor implementation ([PR #3647](https://github.com/apollographql/router/pull/3647)) Coprocessors now support supergraph service interception. diff --git a/.changesets/feat_sm_add_awsxray_propagator.md b/.changesets/feat_sm_add_awsxray_propagator.md index 0254d70c0e..fbe21cd136 100644 --- a/.changesets/feat_sm_add_awsxray_propagator.md +++ b/.changesets/feat_sm_add_awsxray_propagator.md @@ -1,4 +1,4 @@ -### Adds support for the OpenTelemetry AWS X-Ray tracing propagator. ([PR #3580](https://github.com/apollographql/router/pull/3580)) +### Adds support for the OpenTelemetry AWS X-Ray tracing propagator ([PR #3580](https://github.com/apollographql/router/pull/3580)) This propagator helps propagate tracing information from upstream services (such as AWS load balancers) to downstream services. It also handles conversion between the X-Ray trace id format and OpenTelemetry span contexts. diff --git a/.changesets/fix_garypen_helm_extra_labels.md b/.changesets/fix_garypen_helm_extra_labels.md index e08725c6e8..d8439dad01 100644 --- a/.changesets/fix_garypen_helm_extra_labels.md +++ b/.changesets/fix_garypen_helm_extra_labels.md @@ -1,4 +1,4 @@ -### Helm: If there are `extraLabels` add them to all resources. ([PR #3622](https://github.com/apollographql/router/pull/3622)) +### Helm: If there are `extraLabels` add them to all resources ([PR #3622](https://github.com/apollographql/router/pull/3622)) This extends the functionality of `extraLabels` so that, if they are defined, they will be templated for all resources created by the chart. diff --git a/.changesets/fix_igni_coprocessors_discard_content_length.md b/.changesets/fix_igni_coprocessors_discard_content_length.md index 3655239e87..16c02d3494 100644 --- a/.changesets/fix_igni_coprocessors_discard_content_length.md +++ b/.changesets/fix_igni_coprocessors_discard_content_length.md @@ -1,4 +1,4 @@ -### Coprocessors: Discard content-length sent by coprocessors. ([PR #3802](https://github.com/apollographql/router/pull/3802)) +### Coprocessors: Discard content-length sent by coprocessors ([PR #3802](https://github.com/apollographql/router/pull/3802)) The `content-length` of an HTTP response can only be computed when a router response is being sent. We now discard coprocessors `content-length` header to make sure the value is computed correctly. diff --git a/.changesets/fix_persisted_queries_failover_and_error_handling.md b/.changesets/fix_persisted_queries_failover_and_error_handling.md index dd30320587..26ed4644ad 100644 --- a/.changesets/fix_persisted_queries_failover_and_error_handling.md +++ b/.changesets/fix_persisted_queries_failover_and_error_handling.md @@ -1,4 +1,4 @@ -### Improve multi-cloud failover and error handling for Persisted Queries. ([PR #3863](https://github.com/apollographql/router/pull/3863)) +### Improve multi-cloud failover and error handling for Persisted Queries ([PR #3863](https://github.com/apollographql/router/pull/3863)) Improves the resilience of the Persisted Queries feature to Uplink outages. This makes errors while fetching persisted query manifests from Uplink more visible. diff --git a/.changesets/fix_renee_fix_large_ints.md b/.changesets/fix_renee_fix_large_ints.md index fc3aaf3fd2..1ab697866d 100644 --- a/.changesets/fix_renee_fix_large_ints.md +++ b/.changesets/fix_renee_fix_large_ints.md @@ -1,4 +1,4 @@ -### Fix error response on large number types in query transformations. ([PR #3820](https://github.com/apollographql/router/pull/3820)) +### Fix error response on large number types in query transformations ([PR #3820](https://github.com/apollographql/router/pull/3820)) This bug caused the router to reject operations where a large hardcoded integer was used as input for a Float field: diff --git a/.changesets/fix_simon_large_id.md b/.changesets/fix_simon_large_id.md index f2e0b2590a..d2d0a28733 100644 --- a/.changesets/fix_simon_large_id.md +++ b/.changesets/fix_simon_large_id.md @@ -1,4 +1,4 @@ -### Fix validation error with `ID` variable values overflowing 32-bit integers. ([Issue #3873](https://github.com/apollographql/router/issues/3873)) +### Fix validation error with `ID` variable values overflowing 32-bit integers ([Issue #3873](https://github.com/apollographql/router/issues/3873)) Input values for variables of type `ID` were previously validated as "either like a GraphQL `Int` or like a GraphQL `String`". GraphQL `Int` is specified as a signed 32-bit integer, such that values that overflow fail validation. Applying this range restriction to `ID` values was incorrect. Instead, validation for `ID` now accepts any JSON integer or JSON string value, so that IDs larger than 32 bits can be used. From 8cfdea2b791033f122887002c6127c0f5655a9e6 Mon Sep 17 00:00:00 2001 From: Iryna Shestak Date: Wed, 27 Sep 2023 13:24:29 +0200 Subject: [PATCH 8/8] Apply suggestions from code review Co-authored-by: Jesse Rosenberger --- .changesets/feat_bnjjj_fix_3621.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changesets/feat_bnjjj_fix_3621.md b/.changesets/feat_bnjjj_fix_3621.md index 70dfd20691..dacac24f7d 100644 --- a/.changesets/feat_bnjjj_fix_3621.md +++ b/.changesets/feat_bnjjj_fix_3621.md @@ -2,7 +2,7 @@ We added configuration to override default timeout for Redis requests. Default timeout was also changed from 1ms to **2ms**. -Here is an exmample to change the timeout for APQ: +Here is an example to change the timeout for [Distributed APQ](https://www.apollographql.com/docs/router/configuration/distributed-caching#distributed-apq-caching) (an Enterprise Feature): ```yaml apq: router: