From 852b7cd4c096c13d42c90f6b17601ad36eb2522a Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Sun, 15 Sep 2019 18:53:56 +0000 Subject: [PATCH] tracing(app): spans for report rendering via websocket --- app/api_topology.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/api_topology.go b/app/api_topology.go index 9a48ada0f..67ecf89ce 100644 --- a/app/api_topology.go +++ b/app/api_topology.go @@ -7,6 +7,7 @@ import ( "context" "github.com/gorilla/mux" + ot "github.com/opentracing/opentracing-go" log "github.com/sirupsen/logrus" "github.com/weaveworks/scope/common/xfer" @@ -133,6 +134,8 @@ func handleWebsocket( defer rep.UnWait(ctx, wait) for { + span := ot.StartSpan("ws.Render", ot.Tag{"topology", topologyID}) + ctx := ot.ContextWithSpan(ctx, span) // We measure how much time has passed since the channel was opened // and add it to the initial report timestamp to get the timestamp // of the snapshot we want to report right now. @@ -144,11 +147,13 @@ func handleWebsocket( re, err := rep.Report(ctx, reportTimestamp) if err != nil { log.Errorf("Error generating report: %v", err) + span.Finish() return } renderer, filter, err := topologyRegistry.RendererForTopology(topologyID, r.Form, re) if err != nil { log.Errorf("Error generating report: %v", err) + span.Finish() return } @@ -167,8 +172,10 @@ func handleWebsocket( if !xfer.IsExpectedWSCloseError(err) { log.Errorf("cannot serialize topology diff: %s", err) } + span.Finish() return } + span.Finish() select { case <-wait: