question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Distributed tracing is impossible to implement

See original GitHub issue

In addition to #508, there is another big issue with this library.

The only way to get the tracer to work now is to use the OpenTracingTracerFactory. It returns a wrapper that implements ITracer but underneath calls the Tracer. So far so good, except I can’t use the existing Tracer, so I submitted #513.

Now, I want to do distributed tracing and therefore I need to extract or inject the context from a message. I am not using http apis, I use a message broker or event streams. In OpenTracing library, it is quite trivial - create a text map and ask it to serialize or deserialize the dictionary. But what works fine with OpenTracing, suddenly starts to break with Datadog.Trace.OpenTracing, because it expects that I have ICodec implemented in my parser. That would also be ok, but this interface, like many other interfaces and classes in this library, is internal. So, here comes the full stop and I am unable to move anywhere.

Even if I take the code from Datadog.Trace.OpenTracing, which is not a lot, it again has references to the Datadog.Trace library own internal classes.

All in all, I concluded that there’s no way I can ever implement distributed tracing with Datadog and being five days from the end of our trial period, where everything else is (almost) very good, this is a huge blocked for us to engage with Datadog.

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Comments:11 (10 by maintainers)

github_iconTop GitHub Comments

1reaction
alexeyzimarevcommented, Dec 5, 2019

I have checked the whole thing closer and I now understand that as soon as I give the Datadog tracer the http header built-in format (BuiltinFormats.HttpHeaders) it will use it. Maybe, just adding the same HttpHeaderCodec to the _codecs dictionary for the BuiltinFormats.TextMap would be a very good step forward. The OpenTracing .NET lib has just two built-in formats and if both of them are supported - I personally would be happy.

In the future, I’d love to see something similar to the extractor/injector registry like in Jaeger library, but that’s a bit more work.

0reactions
lucaspimentelcommented, Apr 2, 2020

@alanisaac added support for BuiltinFormats.TextMap. Closing this issue since that change was included in release 1.16.0.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Distributed Tracing — we've been doing it wrong | Medium
Distributed Tracing is often considered hard to deploy and its value proposition questionable at best. A variety of reasons are attributed ...
Read more >
Chapter 1. The Problem with Distributed Tracing
There's just one problem—distributed tracing can be hard. ... You may use patterns that are antithetical to the request-based style of most distributed ......
Read more >
Challenges of Distributed Tracing
What are the challenges, benefits and use cases of distributed ... Tracing the problem manually using logs is the most difficult way to ......
Read more >
Distributed Tracing Is Powerful...But Also Effectively D.O.A.?
Distributed tracing can provide a thread to follow through that labyrinth, but even with tracing distributed systems are still very difficult to ...
Read more >
The First Rule of Distributed Tracing Is…
Distributed Tracing is a mechanism to collect individual requests across micro-services boundaries. It also enables instrumentation of ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found