Skip to content

Commit cf91af7

Browse files
committed
graphql: no Option and noop struct
1 parent e525140 commit cf91af7

File tree

9 files changed

+40
-22
lines changed

9 files changed

+40
-22
lines changed

graph/src/components/graphql.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ pub trait GraphQlRunner: Send + Sync + 'static {
4848
}
4949

5050
pub trait GraphQLMetrics: Send + Sync + 'static {
51-
fn observe_query_execution(&self, duration: Duration, results: &QueryResults) -> ();
52-
fn observe_query_parsing(&self, duration: Duration, results: &QueryResults) -> ();
53-
fn observe_query_validation(&self, duration: Duration, id: &DeploymentHash) -> ();
51+
fn observe_query_execution(&self, duration: Duration, results: &QueryResults);
52+
fn observe_query_parsing(&self, duration: Duration, results: &QueryResults);
53+
fn observe_query_validation(&self, duration: Duration, id: &DeploymentHash);
5454
}
5555

5656
#[async_trait]

graphql/src/execution/query.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -149,15 +149,13 @@ impl Query {
149149
query: GraphDataQuery,
150150
max_complexity: Option<u64>,
151151
max_depth: u8,
152-
metrics: Option<Arc<dyn GraphQLMetrics>>,
152+
metrics: Arc<dyn GraphQLMetrics>,
153153
) -> Result<Arc<Self>, Vec<QueryExecutionError>> {
154154
let validation_phase_start = Instant::now();
155155
let validation_errors =
156156
validate(schema.document(), &query.document, &GRAPHQL_VALIDATION_PLAN);
157157

158-
if let Some(metrics) = metrics {
159-
metrics.observe_query_validation(validation_phase_start.elapsed(), schema.id());
160-
}
158+
metrics.observe_query_validation(validation_phase_start.elapsed(), schema.id());
161159

162160
if !validation_errors.is_empty() {
163161
if !ENV_VARS.graphql.silent_graphql_validations {

graphql/src/runner.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ where
129129
query,
130130
max_complexity,
131131
max_depth,
132-
Some(metrics.cheap_clone()),
132+
metrics.cheap_clone(),
133133
)?;
134134
self.load_manager
135135
.decide(
@@ -236,7 +236,7 @@ where
236236
subscription.query,
237237
ENV_VARS.graphql.max_complexity,
238238
ENV_VARS.graphql.max_depth,
239-
Some(self.graphql_metrics.cheap_clone()),
239+
self.graphql_metrics.cheap_clone(),
240240
)?;
241241

242242
if let Err(err) = self

graphql/src/subscription/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ pub fn execute_subscription(
5252
subscription.query,
5353
options.max_complexity,
5454
options.max_depth,
55-
Some(options.graphql_metrics.cheap_clone()),
55+
options.graphql_metrics.cheap_clone(),
5656
)?;
5757
execute_prepared_subscription(query, options)
5858
}

graphql/tests/introspection.rs

+8-4
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use graph_graphql::prelude::{
1212
a, api_schema, execute_query, ExecutionContext, Query as PreparedQuery, QueryExecutionOptions,
1313
Resolver,
1414
};
15+
use test_store::graphql_metrics;
1516
use test_store::LOAD_MANAGER;
1617

1718
/// Mock resolver used in tests that don't need a resolver.
@@ -571,10 +572,13 @@ async fn introspection_query(schema: Schema, query: &str) -> QueryResult {
571572
};
572573

573574
let schema = Arc::new(ApiSchema::from_api_schema(schema).unwrap());
574-
let result = match PreparedQuery::new(&logger, schema, None, query, None, 100, None) {
575-
Ok(query) => Ok(Arc::try_unwrap(execute_query(query, None, None, options).await).unwrap()),
576-
Err(e) => Err(e),
577-
};
575+
let result =
576+
match PreparedQuery::new(&logger, schema, None, query, None, 100, graphql_metrics()) {
577+
Ok(query) => {
578+
Ok(Arc::try_unwrap(execute_query(query, None, None, options).await).unwrap())
579+
}
580+
Err(e) => Err(e),
581+
};
578582
QueryResult::from(result)
579583
}
580584

server/http/src/service.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -330,9 +330,9 @@ mod tests {
330330
}
331331

332332
impl GraphQLMetrics for TestGraphQLMetrics {
333-
fn observe_query_execution(&self, _duration: Duration, _results: &QueryResults) -> () {}
334-
fn observe_query_parsing(&self, _duration: Duration, _results: &QueryResults) -> () {}
335-
fn observe_query_validation(&self, _duration: Duration, _id: &DeploymentHash) -> () {}
333+
fn observe_query_execution(&self, _duration: Duration, _results: &QueryResults) {}
334+
fn observe_query_parsing(&self, _duration: Duration, _results: &QueryResults) {}
335+
fn observe_query_validation(&self, _duration: Duration, _id: &DeploymentHash) {}
336336
}
337337

338338
#[async_trait]

server/http/tests/server.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ use tokio::time::sleep;
1717
pub struct TestGraphQLMetrics;
1818

1919
impl GraphQLMetrics for TestGraphQLMetrics {
20-
fn observe_query_execution(&self, _duration: Duration, _results: &QueryResults) -> () {}
21-
fn observe_query_parsing(&self, _duration: Duration, _results: &QueryResults) -> () {}
22-
fn observe_query_validation(&self, _duration: Duration, _id: &DeploymentHash) -> () {}
20+
fn observe_query_execution(&self, _duration: Duration, _results: &QueryResults) {}
21+
fn observe_query_parsing(&self, _duration: Duration, _results: &QueryResults) {}
22+
fn observe_query_validation(&self, _duration: Duration, _id: &DeploymentHash) {}
2323
}
2424

2525
/// A simple stupid query runner for testing.

server/index-node/src/service.rs

+17-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ use crate::explorer::Explorer;
2222
use crate::resolver::IndexNodeResolver;
2323
use crate::schema::SCHEMA;
2424

25+
struct NoopGraphQLMetrics;
26+
27+
impl GraphQLMetrics for NoopGraphQLMetrics {
28+
fn observe_query_execution(&self, _duration: Duration, _results: &QueryResults) {}
29+
fn observe_query_parsing(&self, _duration: Duration, _results: &QueryResults) {}
30+
fn observe_query_validation(&self, _duration: Duration, _id: &DeploymentHash) {}
31+
}
32+
2533
/// An asynchronous response to a GraphQL request.
2634
pub type IndexNodeServiceResponse = DynTryFuture<'static, Response<Body>, GraphQLServerError>;
2735

@@ -120,7 +128,15 @@ where
120128
let validated = ValidatedRequest::new(body, &req_parts.headers)?;
121129
let query = validated.query;
122130

123-
let query = match PreparedQuery::new(&self.logger, schema, None, query, None, 100, None) {
131+
let query = match PreparedQuery::new(
132+
&self.logger,
133+
schema,
134+
None,
135+
query,
136+
None,
137+
100,
138+
Arc::new(NoopGraphQLMetrics),
139+
) {
124140
Ok(query) => query,
125141
Err(e) => return Ok(QueryResults::from(QueryResult::from(e)).as_http_response()),
126142
};

store/test-store/src/store.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,7 @@ async fn execute_subgraph_query_internal(
440440
query,
441441
max_complexity,
442442
100,
443-
None,
443+
graphql_metrics(),
444444
));
445445
let mut result = QueryResults::empty();
446446
let deployment = query.schema.id().clone();

0 commit comments

Comments
 (0)