diff --git a/apollo-router/src/services/layers/persisted_queries/mod.rs b/apollo-router/src/services/layers/persisted_queries/mod.rs index d6c51ec8d1..c8ddaa800b 100644 --- a/apollo-router/src/services/layers/persisted_queries/mod.rs +++ b/apollo-router/src/services/layers/persisted_queries/mod.rs @@ -111,7 +111,13 @@ impl PersistedQueryLayer { // If we don't have an ID and we require an ID, return an error immediately, if log_unknown { if let Some(operation_body) = request.supergraph_request.body().query.as_ref() { - log_unknown_operation(operation_body); + // Note: it's kind of inconsistent that if we require + // IDs and skip_enforcement is set, we don't call + // log_unknown_operation on freeform GraphQL, but if we + // *don't* require IDs and skip_enforcement is set, we + // *do* call log_unknown_operation on unknown + // operations. + log_unknown_operation(operation_body, false); } } Err(supergraph_err_pq_id_required(request)) @@ -295,7 +301,7 @@ impl PersistedQueryLayer { )); } if freeform_graphql_action.should_log { - log_unknown_operation(operation_body); + log_unknown_operation(operation_body, skip_enforcement); metric_attributes.push(opentelemetry::KeyValue::new( "persisted_queries.logged".to_string(), true, @@ -322,8 +328,12 @@ impl PersistedQueryLayer { } } -fn log_unknown_operation(operation_body: &str) { - tracing::warn!(message = "unknown operation", operation_body); +fn log_unknown_operation(operation_body: &str, enforcement_skipped: bool) { + tracing::warn!( + message = "unknown operation", + operation_body, + enforcement_skipped + ); } #[derive(Debug, Clone, Eq, PartialEq)] diff --git a/apollo-router/src/services/layers/persisted_queries/snapshots/apollo_router__services__layers__persisted_queries__tests__pq_layer_freeform_graphql_with_safelist_log_unknown_true@logs.snap b/apollo-router/src/services/layers/persisted_queries/snapshots/apollo_router__services__layers__persisted_queries__tests__pq_layer_freeform_graphql_with_safelist_log_unknown_true@logs.snap index be028f55b5..38bf73a998 100644 --- a/apollo-router/src/services/layers/persisted_queries/snapshots/apollo_router__services__layers__persisted_queries__tests__pq_layer_freeform_graphql_with_safelist_log_unknown_true@logs.snap +++ b/apollo-router/src/services/layers/persisted_queries/snapshots/apollo_router__services__layers__persisted_queries__tests__pq_layer_freeform_graphql_with_safelist_log_unknown_true@logs.snap @@ -6,18 +6,22 @@ expression: yaml level: INFO message: Loaded 2 persisted queries. - fields: + enforcement_skipped: false operation_body: "query SomeQuery { me { id } }" level: WARN message: unknown operation - fields: + enforcement_skipped: true operation_body: "query SomeQuery { me { id } }" level: WARN message: unknown operation - fields: + enforcement_skipped: false operation_body: "fragment A on Query { me { id } } query SomeOp { ...A ...B } fragment,,, B on Query{me{username,name} } # yeah" level: WARN message: unknown operation - fields: + enforcement_skipped: false operation_body: "fragment F on Query { __typename foo: __schema { __typename } me { id } } query Q { __type(name: \"foo\") { name } ...F }" level: WARN message: unknown operation