Giter Site home page Giter Site logo

Comments (5)

yurishkuro avatar yurishkuro commented on July 17, 2024 1

I don't know if any tracer is able to accept completely arbitrary IDs. These IDs are usually captured in the span and stored in the tracing backend, so the backend data model puts additional limitations on what can be used as an ID.

I would say reusing IDs not generated by the tracing infrastructure is not where the industry is going to (e.g. https://github.com/w3c/trace-context), but some tracing platforms might support them for legacy services. E.g. in Jaeger, as long as your legacy/external IDs fit in 16-bytes array, it can still capture/represent them in the storage.

There is still going to be an issue with using message-id as span-id, because APIs like OpenTracing/OpenCensus don't allow you to provide a custom id when creating a new span (you'd need to hack the tracer implementation a bit), and you do need to create a span for the producer generating a message in order to capture proper causality between spans in the trace.

from specification.

yurishkuro avatar yurishkuro commented on July 17, 2024 1

Yes, you can persist the trace context with the data/message and use it to resume the trace later. But many tracing systems wouldn't work very well with workflows that takes days/weeks to complete.

from specification.

yurishkuro avatar yurishkuro commented on July 17, 2024

It's not a question of OpenTracing, but of the specific tracing library implementation you bind your code to. For example, in Jaeger you can force the use of the external trace ID (but not span IDs) provided it is representable as a 8-bytes or 16-bytes array.

from specification.

imrefazekas avatar imrefazekas commented on July 17, 2024

Do you know any library allowing me to inject those IDs?
I mean most of the services I'm working with are fragmented in time and the "built-in" ID generation is a show stopper for me.
Thanks!

from specification.

imrefazekas avatar imrefazekas commented on July 17, 2024

Hello, ok I understand better a little bit. How do you track a workflow which is fragmented in time and space? A digital contract is suspended and continued after a few weeks of delay? How should I connect the new spans to the old ones? Or in a stock market platform where some part of the process is cultivated in a different system / counrty? Should I persist the context and inject it manually? Thanks...

from specification.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.