Hello John,

this might also help: https://github.com/opentracing/specification/blob/master/specification.md#the-opentracing-data-model and also following subsection https://github.com/opentracing/specification/blob/master/specification.md#references-between-spans


Pavol

On Tue, Jan 10, 2017 at 10:45 AM, Gary Brown <gbrown@redhat.com> wrote:
For a concrete example, we have a vertx-opentracing application:

https://github.com/hawkular/hawkular-apm/blob/master/examples/vertx-opentracing/order-manager/src/main/java/org/hawkular/apm/examples/vertx/opentracing/ordermanager/PlaceOrderHandler.java#L52

This shows where the top level span is started within the order manager service. This span is propagated through various handlers until it is finally finished here:

https://github.com/hawkular/hawkular-apm/blob/master/examples/vertx-opentracing/order-manager/src/main/java/org/hawkular/apm/examples/vertx/opentracing/ordermanager/PlaceOrderHandler.java#L126

Regards
Gary

----- Original Message -----
> Hi John
>
> If I put things in OpenTracing terms, each unit of work we want to measure is
> a Span, where work performed in the scope of one Span, is created as a child
> of that Span - so building up a tree structure. So this is how units of
> work, whether sync or async, get represented.
>
> So the issue is, how we identify the start and end of a Span, when they are
> not necessarily occurring within the same thread. And secondly, when a child
> activity is spawned, that is not in the same thread as its parent, how that
> child Span becomes associated with its parent.
>
> The piece of code you reference is part of the original java agent, and it
> relies on ThreadLocal as a way to track activity within threads - but to
> support async behaviour, the agent also enables the trace sessions/context
> to be propagated across threads, using context relevant ids.
>
> If explicitly instrumenting code with the OpenTracing API, async behaviour
> can be monitored by simply passing around the Span objects.
>
> Let me know if you need further information in any particular area.
>
> Regards
> Gary
>
> ----- Original Message -----
> > I am reading through some of the Hawkular APM code and have been looking at
> > how trace fragments get created and written on the client side. One of the
> > classes I am reviewing is FragmentBuilder.java. Its javadocs state that the
> > sequence of events within a thread of execution should be in sequence. It
> > made me wonder whether it is possible to trace async operations. I found
> > https://issues.jboss.org/browse/HWKAPM-77
> > <https://issues.jboss.org/browse/HWKAPM-77> which apparently improves
> > support for async execution.
> >
> > Gary, can you or anyone else familiar how things work, give a brief
> > explanation of how things work async flows? Most everything in
> > hawkular-metrics is async and reactive. That makes debugging difficult at
> > times where you have to rely primarily on logging. I am wondering if
> > Hawkular APM would be a good tool for these types of situations.
> >
> > - John
>
_______________________________________________
hawkular-dev mailing list
hawkular-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hawkular-dev



--
Pavol Loffay
Cell: +421948286055
Red Hat
Purkyňova 111 
TPB-B
612 45 Brno