From aa19001595d4b024e90f56d86df0af0e7df17923 Mon Sep 17 00:00:00 2001 From: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com> Date: Fri, 2 Aug 2024 11:14:35 +0200 Subject: [PATCH 1/2] execute supergraph query selector also on events Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com> --- .../plugins/telemetry/config_new/selectors.rs | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/apollo-router/src/plugins/telemetry/config_new/selectors.rs b/apollo-router/src/plugins/telemetry/config_new/selectors.rs index 1216afe0f5..875f88efb7 100644 --- a/apollo-router/src/plugins/telemetry/config_new/selectors.rs +++ b/apollo-router/src/plugins/telemetry/config_new/selectors.rs @@ -833,7 +833,11 @@ impl Selector for SupergraphSelector { .flatten() .map(opentelemetry::Value::from), - SupergraphSelector::Query { default, .. } => request + SupergraphSelector::Query { + default, + query: Query::String, + .. + } => request .supergraph_request .body() .query @@ -990,6 +994,25 @@ impl Selector for SupergraphSelector { ctx: &Context, ) -> Option { match self { + SupergraphSelector::Query { query, .. } => { + let limits_opt = ctx + .extensions() + .with_lock(|lock| lock.get::>().cloned()); + match query { + Query::Aliases => { + limits_opt.map(|limits| opentelemetry::Value::I64(limits.aliases as i64)) + } + Query::Depth => { + limits_opt.map(|limits| opentelemetry::Value::I64(limits.depth as i64)) + } + Query::Height => { + limits_opt.map(|limits| opentelemetry::Value::I64(limits.height as i64)) + } + Query::RootFields => limits_opt + .map(|limits| opentelemetry::Value::I64(limits.root_fields as i64)), + Query::String => None, + } + } SupergraphSelector::ResponseData { response_data, default, @@ -3010,13 +3033,19 @@ mod test { selector .on_response( &crate::services::SupergraphResponse::fake_builder() - .context(context) + .context(context.clone()) .build() .unwrap() ) .unwrap(), 4.into() ); + assert_eq!( + selector + .on_response_event(&crate::graphql::Response::builder().build(), &context) + .unwrap(), + 4.into() + ); } #[test] From 0a04f2c126e619723df18bb574fe1eb092b369f4 Mon Sep 17 00:00:00 2001 From: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com> Date: Fri, 2 Aug 2024 11:18:37 +0200 Subject: [PATCH 2/2] changelog Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com> --- ...fix_bnjjj_fix_supergraph_query_selector.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .changesets/fix_bnjjj_fix_supergraph_query_selector.md diff --git a/.changesets/fix_bnjjj_fix_supergraph_query_selector.md b/.changesets/fix_bnjjj_fix_supergraph_query_selector.md new file mode 100644 index 0000000000..0914846045 --- /dev/null +++ b/.changesets/fix_bnjjj_fix_supergraph_query_selector.md @@ -0,0 +1,20 @@ +### Execute supergraph query selector also on events ([PR #5764](https://github.com/apollographql/router/pull/5764)) + +The `query: root_fields` selector works on `response` stage for events right now but it should also work on `event_response`. This configuration is now working: + +```yaml +telemetry: + instrumentation: + events: + supergraph: + OPERATION_LIMIT_INFO: + message: operation limit info + on: event_response + level: info + attributes: + graphql.operation.name: true + query.root_fields: + query: root_fields +``` + +By [@bnjjj](https://github.com/bnjjj) in https://github.com/apollographql/router/pull/5764 \ No newline at end of file