#visualizating 'npm start' in Dagger Traces
1 messages · Page 1 of 1 (latest)
Thanks, I may need a quick live refresher sometime, I thought I understood how we structure the visualization data, but now second guessing myself
is a "shadow bar" a gantt chart element to represent duration? or something else
The part that is confusing me, is that it seems we are showing 1) the tree of spans that are function calls, and 2) the tree of other kinds of spans, side by side instead of interleaved
Take this trace for example: https://dagger.cloud/wachines/traces/aee0f493bfdb7eff1ddd1461f34ba579 (assuming you can view it - attaching a screenshot for others)
The "shadow bars" (ad-hoc name) are the semitransparent blocks in the trace timeline to the right that have a line beneath them. They illustrate the 'side effects' that happened as part of that call, possibly after the synchronous part of the call. The idea is we can roll all those up and tie them back to their point of origin where they were "installed", i.e. Container.withExec, all the way up to the caller of that Container.withExec, Bass.integration. You can click those semitransparent bars to jump to the spot where the effect was made to happen. That way you can have both: you can see the synchronous part of the call (the thick colored bar) and also see the impact/effects it had elsewhere in the trace, in one click without having to dig around.
Normally this works by taking an object like Container and interrogating it to see which LLB vertex digests it contains. Then, later, when we see the span for that digest (has attribute vertex=digest, which Buildkit sets), the frontend ties it back to Container.withExec, where it then gets rolled up into Bass.integration.
But right now this doesn't work specifically for services, because they work differently from LLB, and create their own custom span, which isn't integrated with all that.
Here's the shadow (effect?) bar on the inner Go.gotestsum > Container.withExec calls too for completeness (ignore those logs 😅)
Re: attributes shenanigans 😄what about span links? Don’t they work for this?
Is this 👆 a separate issue? or the same thing?
Those might be a good fit, but afaik you need pretty close control over all the spans involved, which we don't have. Could be worth looking into, but last time I looked into span links they were for a super specific thing
I don't quite follow
got a screenshot? Can hop on a call too