-
Notifications
You must be signed in to change notification settings - Fork 299
set OTLP service name and namespace #210
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,6 +2,7 @@ use apollo_router_core::prelude::graphql::*; | |
use derivative::Derivative; | ||
use futures::prelude::*; | ||
use std::sync::Arc; | ||
use tracing::{Instrument, Span}; | ||
use tracing_futures::WithSubscriber; | ||
|
||
/// The default router of Apollo, suitable for most use cases. | ||
|
@@ -88,6 +89,7 @@ pub struct ApolloPreparedQuery { | |
impl PreparedQuery for ApolloPreparedQuery { | ||
#[tracing::instrument(level = "debug")] | ||
async fn execute(self, request: Arc<Request>) -> ResponseStream { | ||
let span = Span::current(); | ||
stream::once( | ||
async move { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What would happen if we attach the current span to this future? Would that solve the problem? There is a dedicated function for that https://docs.rs/tracing/0.1.29/tracing/trait.Instrument.html#method.in_current_span There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yep, I tried that, but it makes the future non Send. I think I found another way without setting the parent explicitely, I'll try this afternoon There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I should have thought of that earlier 😅 23020ae Maybe we can simplify There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Cool! ^_^ some improvements coming then? I'm glad I looked at this PR even if it was a bit late There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There's always room for improvement 😀 |
||
let response_task = self | ||
|
@@ -98,13 +100,17 @@ impl PreparedQuery for ApolloPreparedQuery { | |
Arc::clone(&request), | ||
Arc::clone(&self.service_registry), | ||
Arc::clone(&self.schema), | ||
); | ||
let query_task = self.query_cache.get_query(&request.query); | ||
) | ||
.instrument(tracing::info_span!(parent: &span, "execution")); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I wonder if this instrumentation shouldn't stay in model.rs 🤔 validate_request does that already. Does using the decorator fix the issue? I like the decorator ^_^ #[tracing::instrument(name = "validation", level = "debug")]
pub fn validate_request( There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The attribute does not allow overriding the parent span: https://docs.rs/tracing/0.1.29/tracing/attr.instrument.html There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes this comment was not about overriding parent span and stuff. More a question of:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. that topic should go in #213 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm fine either way, as long as we make sure we don't serialize too much info with the attribute |
||
let query_task = self | ||
.query_cache | ||
.get_query(&request.query) | ||
.instrument(tracing::info_span!(parent: &span, "query_parsing")); | ||
|
||
let (mut response, query) = tokio::join!(response_task, query_task); | ||
|
||
if let Some(query) = query { | ||
tracing::debug_span!("format_response").in_scope(|| { | ||
tracing::debug_span!(parent: &span, "format_response").in_scope(|| { | ||
query.format_response(&mut response, request.operation_name.as_deref()) | ||
}); | ||
} | ||
|
Uh oh!
There was an error while loading. Please reload this page.