Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion apollo-router/src/query_planner/execution.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ use crate::json_ext::Path;
use crate::json_ext::Value;
use crate::json_ext::ValueExt;
use crate::plugins::subscription::SubscriptionConfig;
use crate::query_planner::fetch::FetchNode;
use crate::query_planner::fetch::Variables;
use crate::query_planner::FlattenNode;
use crate::query_planner::Primary;
Expand Down Expand Up @@ -252,7 +253,6 @@ impl PlanNode {
.supergraph_request(parameters.supergraph_request.clone())
.variables(variables)
.current_dir(current_dir.clone())
.deferred_fetches(parameters.deferred_fetches.clone())
.build();
(value, errors) = match service.oneshot(request).await {
Ok(r) => r,
Expand All @@ -264,6 +264,13 @@ impl PlanNode {
.build()],
),
};
FetchNode::deferred_fetches(
current_dir,
&fetch_node.id,
parameters.deferred_fetches,
&value,
&errors,
);
}
None => {
value = Value::Object(Object::default());
Expand Down
6 changes: 1 addition & 5 deletions apollo-router/src/query_planner/fetch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ use serde::Deserialize;
use serde::Serialize;
use serde_json_bytes::ByteString;
use serde_json_bytes::Map;
use tokio::sync::broadcast;
use tokio::sync::broadcast::Sender;
use tower::ServiceExt;
use tracing::instrument;
Expand Down Expand Up @@ -378,8 +377,6 @@ impl FetchNode {
output_rewrites: &Option<Vec<DataRewrite>>,
schema: &Schema,
paths: Vec<Vec<Path>>,
id: Option<String>,
deferred_fetches: &HashMap<String, broadcast::Sender<(Value, Vec<Error>)>>,
operation_str: &str,
variables: Map<ByteString, Value>,
) -> (Value, Vec<Error>) {
Expand Down Expand Up @@ -436,13 +433,12 @@ impl FetchNode {
output_rewrites,
service_name,
);
Self::deferred_fetches(current_dir, id, deferred_fetches, &value, &errors);
(value, errors)
}

pub(crate) fn deferred_fetches(
current_dir: &Path,
id: Option<String>,
id: &Option<String>,
deferred_fetches: &HashMap<String, Sender<(Value, Vec<Error>)>>,
value: &Value,
errors: &[Error],
Expand Down
4 changes: 2 additions & 2 deletions apollo-router/src/services/connector_service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ impl tower::Service<ConnectRequest> for ConnectorService {
"otel.kind" = "INTERNAL",
"apollo.connector.type" = CONNECTOR_TYPE_HTTP,
"apollo.connector.detail" = tracing::field::Empty,
"apollo.connector.field.name" = connector.field_name().to_string(),
"apollo.connector.selection" = connector.selection.to_string(),
"apollo.connector.field.name" = %connector.field_name(),
"apollo.connector.selection" = %connector.selection,
"apollo.connector.source.name" = tracing::field::Empty,
"apollo.connector.source.detail" = tracing::field::Empty,
"apollo_private.sent_time_offset" = fetch_time_offset,
Expand Down
5 changes: 0 additions & 5 deletions apollo-router/src/services/fetch.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
#![allow(missing_docs)] // FIXME

use std::collections::HashMap;
use std::sync::Arc;

use serde_json_bytes::Value;
use tokio::sync::broadcast;
use tower::BoxError;

use crate::error::Error;
Expand All @@ -23,7 +21,6 @@ pub(crate) struct Request {
pub(crate) supergraph_request: Arc<http::Request<GraphQLRequest>>,
pub(crate) variables: Variables,
pub(crate) current_dir: Path,
pub(crate) deferred_fetches: HashMap<String, broadcast::Sender<(Value, Vec<Error>)>>,
}

pub(crate) type Response = (Value, Vec<Error>);
Expand All @@ -40,15 +37,13 @@ impl Request {
supergraph_request: Arc<http::Request<GraphQLRequest>>,
variables: Variables,
current_dir: Path,
deferred_fetches: HashMap<String, broadcast::Sender<(Value, Vec<Error>)>>,
) -> Self {
Self {
context,
fetch_node,
supergraph_request,
variables,
current_dir,
deferred_fetches,
}
}
}
8 changes: 0 additions & 8 deletions apollo-router/src/services/fetch_service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,6 @@ impl FetchService {
let FetchRequest {
fetch_node,
supergraph_request,
deferred_fetches,
variables,
context,
current_dir,
Expand All @@ -110,7 +109,6 @@ impl FetchService {
service_name,
requires,
output_rewrites,
id,
..
} = fetch_node;

Expand Down Expand Up @@ -142,7 +140,6 @@ impl FetchService {
&output_rewrites,
&service_name,
);
FetchNode::deferred_fetches(&current_dir, id, &deferred_fetches, &value, &errors);
Ok((value, errors))
})
}
Expand All @@ -156,7 +153,6 @@ impl FetchService {
let FetchRequest {
fetch_node,
supergraph_request,
deferred_fetches,
variables,
current_dir,
context,
Expand All @@ -169,7 +165,6 @@ impl FetchService {
operation_name,
requires,
output_rewrites,
id,
..
} = fetch_node;

Expand Down Expand Up @@ -210,7 +205,6 @@ impl FetchService {
let aqs = aliased_operation.to_string(); // TODO
let sns = service_name.clone();
let current_dir = current_dir.clone();
let deferred_fetches = deferred_fetches.clone();
let service = subgraph_service_factory
.create(&sns)
.expect("we already checked that the service exists during planning; qed");
Expand Down Expand Up @@ -247,8 +241,6 @@ impl FetchService {
&output_rewrites,
&schema,
variables.inverted_paths,
id,
&deferred_fetches,
&aqs,
variables.variables,
)
Expand Down