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

feat: implement tracing without composition #30

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft

Conversation

bassosimone
Copy link
Contributor

Tracing with composition is tricky for OONI because we sometimes have
a DoH resolution (so two HTTP round trips) before a real HTTP round trip
when we're using a DoH resolver.

In such a case, tracing with composition complicates attributing the
correct connection to the request that's using it. This happens because
the whole chain of operations is using the same context.Context, so we
end up attaching three traces to the context (one per round trip).

Conversely, if traces do not compose, each round trip gets its own
Trace and we should be able to bind connections and requests.

Because ooni/oohttp is experimental and will always be experimental, I
don't feel bad about adding this API for experimentation and for our
own sake. The original API is still there, so it all feels ~fine.

I will revert this commit if the experiment fails 😬.

Reference issue: ooni/probe#2220

Tracing with composition is tricky for OONI because we sometimes have
a DoH resolution (so two HTTP round trips) before a real HTTP round trip
when we're using a DoH resolver.

In such a case, tracing with composition complicates attributing the
correct connection to the request that's using it. This happens because
the whole chain of operations is using the same context.Context, so we
end up attaching three traces to the context (one per round trip).

Conversely, if traces do not compose, each round trip gets its own
Trace and we should be able to bind connections and requests.

Because ooni/oohttp is experimental and will always be experimental, I
don't feel bad about adding this API for experimentation and for our
own sake. The original API is still there, so it all feels ~fine.

I will revert this commit if the experiment fails 😬.

Reference issue: ooni/probe#2220
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant