From fc82735a89dbd5cad3da5cf601817cbc355175c9 Mon Sep 17 00:00:00 2001 From: Ian Cottrell Date: Mon, 25 Nov 2019 10:15:35 -0500 Subject: [PATCH] internal/telemetry: delay the conversion of metrics convert to wire form only when we need to encode it Change-Id: Ib36ee2fbef773241a30b9aa707ebf311119b8705 Reviewed-on: https://go-review.googlesource.com/c/tools/+/208658 Run-TryBot: Ian Cottrell TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: Nathan Dias --- internal/telemetry/export/ocagent/ocagent.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/internal/telemetry/export/ocagent/ocagent.go b/internal/telemetry/export/ocagent/ocagent.go index 098a1ffe99..e8f618716a 100644 --- a/internal/telemetry/export/ocagent/ocagent.go +++ b/internal/telemetry/export/ocagent/ocagent.go @@ -48,7 +48,7 @@ type exporter struct { config Config node *wire.Node spans []*telemetry.Span - metrics []*wire.Metric + metrics []telemetry.MetricData } // Connect creates a process specific exporter with the specified @@ -114,7 +114,7 @@ func (e *exporter) Log(context.Context, telemetry.Event) {} func (e *exporter) Metric(ctx context.Context, data telemetry.MetricData) { e.mu.Lock() defer e.mu.Unlock() - e.metrics = append(e.metrics, convertMetric(data, e.config.Start)) + e.metrics = append(e.metrics, data) } func (e *exporter) Flush() { @@ -125,7 +125,10 @@ func (e *exporter) Flush() { spans[i] = convertSpan(s) } e.spans = nil - metrics := e.metrics + metrics := make([]*wire.Metric, len(e.metrics)) + for i, m := range e.metrics { + metrics[i] = convertMetric(m, e.config.Start) + } e.metrics = nil if len(spans) > 0 {