From ac9734f84099ad954ac3d29965c158df24d03acd Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 4 Mar 2026 17:49:43 -0500 Subject: [PATCH 1/8] docs: note conditions/static not supported for http_client spans --- .../router-telemetry-otel/enabling-telemetry/spans.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx index 89c7c651e1..3971c3139f 100644 --- a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx +++ b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx @@ -71,6 +71,8 @@ telemetry: You can also have [conditions](/router/configuration/telemetry/instrumentation/conditions) on custom attributes using [selectors](/router/configuration/telemetry/instrumentation/selectors). You can only have conditions on a selector at the same execution level. Example you can't have a condition on `response_header` if you want to set an attribute from `request_header`. +Conditions and the `static` selector are supported for the `router`, `supergraph`, `subgraph`, and `connector` services. They are **not** supported for `http_client` span attributes. See [`http_client` span attributes](#http_client-span-attributes) for details. + ```yaml title="desc.router.yaml" telemetry: instrumentation: From 0dda783255ef0b8e22f856c80e07e752e68191ba Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 4 Mar 2026 17:49:55 -0500 Subject: [PATCH 2/8] docs: add note on http_client attribute limitations with error message --- .../router-telemetry-otel/enabling-telemetry/spans.mdx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx index 3971c3139f..62eaa2d9bf 100644 --- a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx +++ b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx @@ -272,6 +272,16 @@ telemetry: The `http_client` span is created for each HTTP request to a subgraph or REST service. It executes after any [Rhai scripts](/router/customizations/rhai) that modify subgraph requests, so its selectors can observe headers added by scripts. + + +`http_client` span attributes only support the `request_header` and `response_header` selectors. Conditions and the `static` selector are **not** supported. Attempting to use them causes a router startup failure with an error similar to: + +``` +could not create router: failed to parse attribute '...': unknown field '...', there are no fields +``` + + + Extract custom attributes from request and response headers using the `request_header` and `response_header` [selectors](/router/configuration/telemetry/instrumentation/selectors). ```yaml title="router.yaml" From 115ecd9d8674df58303d16963c49a34bdf7f150f Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 4 Mar 2026 17:50:13 -0500 Subject: [PATCH 3/8] docs: document http_client selector limitations and add conditions column --- .../router-telemetry-otel/enabling-telemetry/selectors.mdx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx index b79f952297..c779bc830a 100644 --- a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx +++ b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx @@ -113,6 +113,12 @@ The subgraph service executes multiple times during query execution, with each e The HTTP client service also executes multiple times. Each execution represents an HTTP request to a single subgraph or REST service. This service executes after any Rhai scripts that modify subgraph requests, so these selectors can observe headers added by scripts. + + +The `http_client` service only supports the `request_header` and `response_header` selectors. Unlike other services, conditions and the `static` selector are **not** supported. Attempting to configure them causes a router startup failure. + + + | Selector | Defaultable | Values | Description | |--------------------|-------------|--------|-------------------------------| | `request_header` | Yes | | The name of a request header | From 101e86ac78bf847cac43afd812166593a162eacd Mon Sep 17 00:00:00 2001 From: Michelle Mabuyo Date: Fri, 6 Mar 2026 16:34:47 -0500 Subject: [PATCH 4/8] add changeset --- .changesets/docs_wrapper_snowstorm_dungeon_kerosene.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changesets/docs_wrapper_snowstorm_dungeon_kerosene.md diff --git a/.changesets/docs_wrapper_snowstorm_dungeon_kerosene.md b/.changesets/docs_wrapper_snowstorm_dungeon_kerosene.md new file mode 100644 index 0000000000..dd7eaab112 --- /dev/null +++ b/.changesets/docs_wrapper_snowstorm_dungeon_kerosene.md @@ -0,0 +1,5 @@ +### Docs: Document http_client span attribute limitations ([PR #8967](https://github.com/apollographql/router/pull/8967)) + +Document that `http_client` span attributes do not support conditions or the `static` selector, causing a router startup failure when attempted. + +By [@mabuyo](https://github.com/mabuyo) in https://github.com/apollographql/router/pull/8967 \ No newline at end of file From 2c0041dca7567f84c9df3dba06f40a77ac53d7aa Mon Sep 17 00:00:00 2001 From: "apollo-librarian[bot]" <212934294+apollo-librarian[bot]@users.noreply.github.com> Date: Fri, 6 Mar 2026 21:36:46 +0000 Subject: [PATCH 5/8] docs: apply 3 AI review suggestions across 2 files Applied suggestions from AI review 20260306-911566dd-8967-1391116fc81a9852: - docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx:118: Frame the failure relative to the reader's router to be more reader-centric.; Re... - docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx:74: Do not use bold for general emphasis. Avoid using 'here' or vague phrases as lin... - docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx:277: Focus on what is supported rather than what is not supported to maintain a posit... Review: apollographql/router#8967 Triggered by: michelle@apollographql.com --- .../router-telemetry-otel/enabling-telemetry/selectors.mdx | 2 +- .../router-telemetry-otel/enabling-telemetry/spans.mdx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx index c779bc830a..d7c07472d8 100644 --- a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx +++ b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx @@ -115,7 +115,7 @@ The HTTP client service also executes multiple times. Each execution represents -The `http_client` service only supports the `request_header` and `response_header` selectors. Unlike other services, conditions and the `static` selector are **not** supported. Attempting to configure them causes a router startup failure. +The `http_client` service only supports the `request_header` and `response_header` selectors. Unlike other services, conditions and the `static` selector are **not** supported. If you attempt to configure them, your router fails to start. diff --git a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx index 62eaa2d9bf..fff1b74940 100644 --- a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx +++ b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx @@ -71,7 +71,7 @@ telemetry: You can also have [conditions](/router/configuration/telemetry/instrumentation/conditions) on custom attributes using [selectors](/router/configuration/telemetry/instrumentation/selectors). You can only have conditions on a selector at the same execution level. Example you can't have a condition on `response_header` if you want to set an attribute from `request_header`. -Conditions and the `static` selector are supported for the `router`, `supergraph`, `subgraph`, and `connector` services. They are **not** supported for `http_client` span attributes. See [`http_client` span attributes](#http_client-span-attributes) for details. +Conditions and the `static` selector are supported for the `router`, `supergraph`, `subgraph`, and `connector` services. They are not supported for `http_client` span attributes. For details, see [`http_client` span attributes](#http_client-span-attributes). ```yaml title="desc.router.yaml" telemetry: @@ -274,7 +274,7 @@ The `http_client` span is created for each HTTP request to a subgraph or REST se -`http_client` span attributes only support the `request_header` and `response_header` selectors. Conditions and the `static` selector are **not** supported. Attempting to use them causes a router startup failure with an error similar to: +`http_client` span attributes support the `request_header` and `response_header` selectors. Use these selectors to configure your attributes. Attempting to use conditions or the `static` selector causes a router startup failure with an error similar to: ``` could not create router: failed to parse attribute '...': unknown field '...', there are no fields From 8a0f252e277ab9876e5ea4523d9dab4af2ff56aa Mon Sep 17 00:00:00 2001 From: Michelle Mabuyo Date: Mon, 9 Mar 2026 15:18:06 -0400 Subject: [PATCH 6/8] trigger pipeline From e303d58ba1acdaa977c8fd42ffbb7cc7d66556f6 Mon Sep 17 00:00:00 2001 From: "apollo-librarian[bot]" <212934294+apollo-librarian[bot]@users.noreply.github.com> Date: Tue, 10 Mar 2026 15:19:35 +0000 Subject: [PATCH 7/8] docs: apply 3 AI review suggestions across 2 files Applied suggestions from AI review 20260309-911566dd-8967-7480c713df830965: - docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx:118: Focus on what is supported rather than emphasizing the disadvantages or limitati... - docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx:74: Avoid using code font for link text; use a rich noun phrase instead.; Use dictio... - docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx:277: Use reader-centric framing ('If you attempt') and active voice ('the router fail... Review: apollographql/router#8967 Triggered by: michelle@apollographql.com --- .../router-telemetry-otel/enabling-telemetry/selectors.mdx | 2 +- .../router-telemetry-otel/enabling-telemetry/spans.mdx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx index d7c07472d8..acbcf7a0c4 100644 --- a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx +++ b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/selectors.mdx @@ -115,7 +115,7 @@ The HTTP client service also executes multiple times. Each execution represents -The `http_client` service only supports the `request_header` and `response_header` selectors. Unlike other services, conditions and the `static` selector are **not** supported. If you attempt to configure them, your router fails to start. +The `http_client` service supports the `request_header` and `response_header` selectors. Conditions and the `static` selector are currently unavailable for this service. If you attempt to configure them, your router fails to start. diff --git a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx index fff1b74940..2ec913036f 100644 --- a/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx +++ b/docs/source/routing/observability/router-telemetry-otel/enabling-telemetry/spans.mdx @@ -71,7 +71,7 @@ telemetry: You can also have [conditions](/router/configuration/telemetry/instrumentation/conditions) on custom attributes using [selectors](/router/configuration/telemetry/instrumentation/selectors). You can only have conditions on a selector at the same execution level. Example you can't have a condition on `response_header` if you want to set an attribute from `request_header`. -Conditions and the `static` selector are supported for the `router`, `supergraph`, `subgraph`, and `connector` services. They are not supported for `http_client` span attributes. For details, see [`http_client` span attributes](#http_client-span-attributes). +Conditions and the `static` selector are supported for the `router`, `supergraph`, `subgraph`, and `connector` services. They are not supported for `http_client` span attributes. For details, see the [http_client span attributes](#http_client-span-attributes) section. ```yaml title="desc.router.yaml" telemetry: @@ -274,7 +274,7 @@ The `http_client` span is created for each HTTP request to a subgraph or REST se -`http_client` span attributes support the `request_header` and `response_header` selectors. Use these selectors to configure your attributes. Attempting to use conditions or the `static` selector causes a router startup failure with an error similar to: +`http_client` span attributes support the `request_header` and `response_header` selectors. Use these selectors to configure your attributes. If you attempt to use conditions or the `static` selector, the router fails to start with an error similar to: ``` could not create router: failed to parse attribute '...': unknown field '...', there are no fields From 464ea64b160e18d272f6a15fbe26dfaf99a539b6 Mon Sep 17 00:00:00 2001 From: Michelle Mabuyo Date: Tue, 10 Mar 2026 11:27:08 -0400 Subject: [PATCH 8/8] trigger CLA pass