Skip to content
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

set OTLP service name and namespace #210

Merged
merged 3 commits into from
Nov 30, 2021
Merged

set OTLP service name and namespace #210

merged 3 commits into from
Nov 30, 2021

Conversation

Geal
Copy link
Contributor

@Geal Geal commented Nov 29, 2021

fix #180
related to #38

26045c3 is temporary, I'll send a PR to reqwest-tracing to support the tracing-opentelemetry 0.16

we should get #38 implemented, to make sure those kinds of regressions do not happen

Copy link
Contributor

@o0Ignition0o o0Ignition0o left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

I'll try to figure out why the span is manually created once we have tests.

@Geal
Copy link
Contributor Author

Geal commented Nov 30, 2021

FYI: TrueLayer/reqwest-middleware#18

reqwest-tracing still requires tracing-opentelemetry 0.15, so tracing
headers do not get propagated if the versions are different
the spans for execute were considered root spans and did not appear
under the graphql_request span
@Geal Geal merged commit 81720e8 into main Nov 30, 2021
@Geal Geal deleted the otlp-fixes branch November 30, 2021 14:43
@Geal Geal mentioned this pull request Nov 30, 2021
);
let query_task = self.query_cache.get_query(&request.query);
)
.instrument(tracing::info_span!(parent: &span, "execution"));
Copy link
Contributor

Choose a reason for hiding this comment

The 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(

Copy link
Contributor Author

Choose a reason for hiding this comment

The 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

Copy link
Contributor

Choose a reason for hiding this comment

The 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:

  1. where should go the trace: at the source or at the caller
  2. is the decorator more esthetic, should we use it, can we

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that topic should go in #213

Copy link
Contributor Author

Choose a reason for hiding this comment

The 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

@@ -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 {
Copy link
Contributor

Choose a reason for hiding this comment

The 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

Copy link
Contributor Author

Choose a reason for hiding this comment

The 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

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I should have thought of that earlier 😅 23020ae

Maybe we can simplify ResponseStream now

Copy link
Contributor

Choose a reason for hiding this comment

The 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

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's always room for improvement 😀

@Geal Geal self-assigned this Dec 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Zipkin reports UNKNOWN_SERVICE : graphql_request for router spans
4 participants