[Hawkular-dev] [hawkular-apm] tracing async operations

Pavol Loffay ploffay at redhat.com
Tue Jan 10 15:25:17 EST 2017


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 at 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 at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/hawkular-dev/attachments/20170110/032dcff0/attachment.html 


More information about the hawkular-dev mailing list