Skip to content

Commit ead890c

Browse files
committed
Put operation limits in the limits plugin
1 parent 5d72827 commit ead890c

File tree

9 files changed

+17
-14
lines changed

9 files changed

+17
-14
lines changed

apollo-router/src/services/layers/enforce_operation_limits.rs renamed to apollo-router/src/plugins/limits/enforce_operation_limits_layer.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,20 @@ use futures::StreamExt as _;
33
use futures::future::BoxFuture;
44
use tower::Service;
55

6+
use super::operation_limits::OperationLimits;
67
use crate::graphql;
78
use crate::services::layers::query_analysis::ParsedDocument;
89
use crate::services::supergraph;
9-
use crate::spec::operation_limits::OperationLimits;
1010

1111
/// Layer that enforces operation limits and rejects GraphQL requests that exceed the limits.
1212
///
1313
/// `ParsedDocument` must be available in the context. Otherwise, no limits are enforced.
1414
pub(crate) struct EnforceOperationLimitsLayer {
15-
config: crate::plugins::limits::Config,
15+
config: super::Config,
1616
}
1717

1818
impl EnforceOperationLimitsLayer {
19-
pub(crate) fn new(config: &crate::plugins::limits::Config) -> Self {
19+
pub(crate) fn new(config: &super::Config) -> Self {
2020
Self {
2121
config: config.clone(),
2222
}
@@ -40,7 +40,7 @@ impl<S> tower::Layer<S> for EnforceOperationLimitsLayer {
4040
#[derive(Clone)]
4141
pub(crate) struct EnforceOperationLimits<S> {
4242
inner: S,
43-
config: crate::plugins::limits::Config,
43+
config: super::Config,
4444
}
4545

4646
impl<S> Service<supergraph::Request> for EnforceOperationLimits<S>
@@ -69,7 +69,7 @@ where
6969

7070
if let Some(document) = document {
7171
let mut query_metrics = OperationLimits::default();
72-
let result = crate::spec::operation_limits::check(
72+
let result = super::operation_limits::check(
7373
&mut query_metrics,
7474
&self.config,
7575
&document.executable,

apollo-router/src/plugins/limits/mod.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
mod enforce_operation_limits_layer;
12
mod layer;
23
mod limited;
4+
mod operation_limits;
35

46
use std::error::Error;
57

@@ -18,9 +20,9 @@ use crate::graphql;
1820
use crate::layers::ServiceBuilderExt;
1921
use crate::plugin::Plugin;
2022
use crate::plugin::PluginInit;
23+
use crate::plugins::limits::enforce_operation_limits_layer::EnforceOperationLimitsLayer;
2124
use crate::plugins::limits::layer::BodyLimitError;
2225
use crate::plugins::limits::layer::RequestBodyLimitLayer;
23-
use crate::services::layers::enforce_operation_limits::EnforceOperationLimitsLayer;
2426
use crate::services::router;
2527
use crate::services::supergraph;
2628

@@ -148,6 +150,9 @@ impl Default for Config {
148150
}
149151
}
150152

153+
// Pub for use in telemetry.
154+
pub(crate) use operation_limits::OperationLimits;
155+
151156
struct LimitsPlugin {
152157
config: Config,
153158
}

apollo-router/src/spec/operation_limits.rs renamed to apollo-router/src/plugins/limits/operation_limits.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ impl OperationLimits<bool> {
5454
}
5555

5656
/// Returns which limits are exceeded by the given query, if any
57-
pub(crate) fn check(
57+
pub(super) fn check(
5858
query_metrics_in: &mut OperationLimits<u32>,
5959
config_limits: &crate::plugins::limits::Config,
6060
document: &ExecutableDocument,

apollo-router/src/plugins/telemetry/config_new/instruments.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2477,6 +2477,7 @@ mod tests {
24772477
use crate::plugins::connectors::handle_responses::MappedResponse;
24782478
use crate::plugins::connectors::make_requests::ResponseKey;
24792479
use crate::plugins::connectors::mapping::Problem;
2480+
use crate::plugins::limits::OperationLimits;
24802481
use crate::plugins::telemetry::APOLLO_PRIVATE_QUERY_ALIASES;
24812482
use crate::plugins::telemetry::APOLLO_PRIVATE_QUERY_DEPTH;
24822483
use crate::plugins::telemetry::APOLLO_PRIVATE_QUERY_HEIGHT;
@@ -2494,7 +2495,6 @@ mod tests {
24942495
use crate::services::connector::request_service::TransportRequest;
24952496
use crate::services::connector::request_service::TransportResponse;
24962497
use crate::services::connector::request_service::transport;
2497-
use crate::spec::operation_limits::OperationLimits;
24982498

24992499
type JsonMap = serde_json_bytes::Map<ByteString, Value>;
25002500

apollo-router/src/plugins/telemetry/config_new/subgraph/selectors.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use crate::context::OPERATION_NAME;
1313
use crate::plugin::serde::deserialize_jsonpath;
1414
use crate::plugins::cache::entity::CacheSubgraph;
1515
use crate::plugins::cache::metrics::CacheMetricContextKey;
16+
use crate::plugins::limits::OperationLimits;
1617
use crate::plugins::telemetry::config::AttributeValue;
1718
use crate::plugins::telemetry::config_new::Selector;
1819
use crate::plugins::telemetry::config_new::Stage;
@@ -29,7 +30,6 @@ use crate::plugins::telemetry::config_new::selectors::OperationName;
2930
use crate::plugins::telemetry::config_new::selectors::Query;
3031
use crate::plugins::telemetry::config_new::selectors::ResponseStatus;
3132
use crate::services::subgraph;
32-
use crate::spec::operation_limits::OperationLimits;
3333

3434
#[derive(Deserialize, JsonSchema, Clone, Debug)]
3535
#[serde(deny_unknown_fields, rename_all = "snake_case", untagged)]

apollo-router/src/plugins/telemetry/config_new/supergraph/selectors.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use crate::context::CONTAINS_GRAPHQL_ERROR;
1111
use crate::context::OPERATION_KIND;
1212
use crate::context::OPERATION_NAME;
1313
use crate::plugin::serde::deserialize_jsonpath;
14+
use crate::plugins::limits::OperationLimits;
1415
use crate::plugins::telemetry::config::AttributeValue;
1516
use crate::plugins::telemetry::config_new::Selector;
1617
use crate::plugins::telemetry::config_new::Stage;
@@ -27,7 +28,6 @@ use crate::plugins::telemetry::config_new::selectors::Query;
2728
use crate::plugins::telemetry::config_new::selectors::ResponseStatus;
2829
use crate::services::FIRST_EVENT_CONTEXT_KEY;
2930
use crate::services::supergraph;
30-
use crate::spec::operation_limits::OperationLimits;
3131

3232
#[derive(Deserialize, JsonSchema, Clone, Debug)]
3333
#[serde(deny_unknown_fields, rename_all = "snake_case", untagged)]
@@ -667,6 +667,7 @@ mod test {
667667

668668
use crate::context::OPERATION_KIND;
669669
use crate::context::OPERATION_NAME;
670+
use crate::plugins::limits::OperationLimits;
670671
use crate::plugins::telemetry::config::AttributeValue;
671672
use crate::plugins::telemetry::config_new::Selector;
672673
use crate::plugins::telemetry::config_new::selectors::OperationKind;
@@ -675,7 +676,6 @@ mod test {
675676
use crate::plugins::telemetry::config_new::supergraph::selectors::SupergraphSelector;
676677
use crate::plugins::telemetry::otel;
677678
use crate::services::FIRST_EVENT_CONTEXT_KEY;
678-
use crate::spec::operation_limits::OperationLimits;
679679

680680
#[test]
681681
fn supergraph_request_header() {

apollo-router/src/plugins/telemetry/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ use crate::metrics::filter::FilterMeterProvider;
9393
use crate::metrics::meter_provider_internal;
9494
use crate::plugin::PluginInit;
9595
use crate::plugin::PluginPrivate;
96+
use crate::plugins::limits::OperationLimits;
9697
use crate::plugins::telemetry::apollo::ForwardHeaders;
9798
use crate::plugins::telemetry::apollo_exporter::proto::reports::StatsContext;
9899
use crate::plugins::telemetry::apollo_exporter::proto::reports::trace::node::Id::ResponseName;
@@ -144,7 +145,6 @@ use crate::services::layers::persisted_queries::UsedQueryIdFromManifest;
144145
use crate::services::router;
145146
use crate::services::subgraph;
146147
use crate::services::supergraph;
147-
use crate::spec::operation_limits::OperationLimits;
148148

149149
pub(crate) mod apollo;
150150
pub(crate) mod apollo_exporter;
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
//! Layers that are internal to the execution pipeline.
22
pub(crate) mod allow_only_http_post_mutations;
33
pub(crate) mod apq;
4-
pub(crate) mod enforce_operation_limits;
54
pub(crate) mod persisted_queries;
65
pub(crate) mod query_analysis;
76
pub(crate) mod static_page;

apollo-router/src/spec/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
mod field_type;
66
mod fragments;
7-
pub(crate) mod operation_limits;
87
pub(crate) mod query;
98
mod schema;
109
mod selection;

0 commit comments

Comments
 (0)