From 71482053b885ea3938876d1306ad8a1e4037f367 Mon Sep 17 00:00:00 2001 From: Ian Cottrell Date: Fri, 28 Feb 2020 14:08:49 -0500 Subject: [PATCH] internal/telemetry: remove Flush method from exporter It is never invoked anyway, and it provices no useful benefit while complicating the implementation, as it is the only non context aware method. Change-Id: Id5a99439fedafdf4d71285e36103b4854cf3635a Reviewed-on: https://go-review.googlesource.com/c/tools/+/221540 Run-TryBot: Ian Cottrell TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke --- internal/lsp/debug/serve.go | 8 +------- internal/telemetry/export/export.go | 11 ----------- internal/telemetry/export/log.go | 1 - internal/telemetry/export/ocagent/ocagent.go | 19 +++++++++---------- .../telemetry/export/ocagent/ocagent_test.go | 3 +-- 5 files changed, 11 insertions(+), 31 deletions(-) diff --git a/internal/lsp/debug/serve.go b/internal/lsp/debug/serve.go index c1fb38014b..102f08eff8 100644 --- a/internal/lsp/debug/serve.go +++ b/internal/lsp/debug/serve.go @@ -49,7 +49,7 @@ type Instance struct { LogWriter io.Writer - ocagent export.Exporter + ocagent *ocagent.Exporter prometheus *prometheus.Exporter rpcs *rpcs traces *traces @@ -540,12 +540,6 @@ func (i *Instance) Metric(ctx context.Context, data telemetry.MetricData) { } } -func (i *Instance) Flush() { - if i.ocagent != nil { - i.ocagent.Flush() - } -} - type dataFunc func(*http.Request) interface{} func render(tmpl *template.Template, fun dataFunc) func(http.ResponseWriter, *http.Request) { diff --git a/internal/telemetry/export/export.go b/internal/telemetry/export/export.go index dc794588eb..00b9ce18e8 100644 --- a/internal/telemetry/export/export.go +++ b/internal/telemetry/export/export.go @@ -26,8 +26,6 @@ type Exporter interface { Log(context.Context, telemetry.Event) Metric(context.Context, telemetry.MetricData) - - Flush() } var ( @@ -107,12 +105,3 @@ func Metric(ctx context.Context, data telemetry.MetricData) { } exporter.Metric(ctx, data) } - -func Flush() { - exporterMu.Lock() - defer exporterMu.Unlock() - if exporter == nil { - return - } - exporter.Flush() -} diff --git a/internal/telemetry/export/log.go b/internal/telemetry/export/log.go index a63ad4795c..21aef00528 100644 --- a/internal/telemetry/export/log.go +++ b/internal/telemetry/export/log.go @@ -34,4 +34,3 @@ func (w *logWriter) Log(ctx context.Context, event telemetry.Event) { fmt.Fprintf(w.writer, "%v\n", event) } func (w *logWriter) Metric(context.Context, telemetry.MetricData) {} -func (w *logWriter) Flush() {} diff --git a/internal/telemetry/export/ocagent/ocagent.go b/internal/telemetry/export/ocagent/ocagent.go index 8e30a7d085..70018b391a 100644 --- a/internal/telemetry/export/ocagent/ocagent.go +++ b/internal/telemetry/export/ocagent/ocagent.go @@ -19,7 +19,6 @@ import ( "time" "golang.org/x/tools/internal/telemetry" - "golang.org/x/tools/internal/telemetry/export" "golang.org/x/tools/internal/telemetry/export/ocagent/wire" "golang.org/x/tools/internal/telemetry/tag" ) @@ -43,7 +42,7 @@ func Discover() *Config { } } -type exporter struct { +type Exporter struct { mu sync.Mutex config Config spans []*telemetry.Span @@ -53,11 +52,11 @@ type exporter struct { // Connect creates a process specific exporter with the specified // serviceName and the address of the ocagent to which it will upload // its telemetry. -func Connect(config *Config) export.Exporter { +func Connect(config *Config) *Exporter { if config == nil || config.Address == "off" { return nil } - exporter := &exporter{config: *config} + exporter := &Exporter{config: *config} if exporter.config.Start.IsZero() { exporter.config.Start = time.Now() } @@ -85,23 +84,23 @@ func Connect(config *Config) export.Exporter { return exporter } -func (e *exporter) StartSpan(ctx context.Context, span *telemetry.Span) {} +func (e *Exporter) StartSpan(ctx context.Context, span *telemetry.Span) {} -func (e *exporter) FinishSpan(ctx context.Context, span *telemetry.Span) { +func (e *Exporter) FinishSpan(ctx context.Context, span *telemetry.Span) { e.mu.Lock() defer e.mu.Unlock() e.spans = append(e.spans, span) } -func (e *exporter) Log(context.Context, telemetry.Event) {} +func (e *Exporter) Log(context.Context, telemetry.Event) {} -func (e *exporter) Metric(ctx context.Context, data telemetry.MetricData) { +func (e *Exporter) Metric(ctx context.Context, data telemetry.MetricData) { e.mu.Lock() defer e.mu.Unlock() e.metrics = append(e.metrics, data) } -func (e *exporter) Flush() { +func (e *Exporter) Flush() { e.mu.Lock() defer e.mu.Unlock() spans := make([]*wire.Span, len(e.spans)) @@ -149,7 +148,7 @@ func (cfg *Config) buildNode() *wire.Node { } } -func (e *exporter) send(endpoint string, message interface{}) { +func (e *Exporter) send(endpoint string, message interface{}) { blob, err := json.Marshal(message) if err != nil { errorInExport("ocagent failed to marshal message for %v: %v", endpoint, err) diff --git a/internal/telemetry/export/ocagent/ocagent_test.go b/internal/telemetry/export/ocagent/ocagent_test.go index 36e16175ba..50b92477f7 100644 --- a/internal/telemetry/export/ocagent/ocagent_test.go +++ b/internal/telemetry/export/ocagent/ocagent_test.go @@ -17,13 +17,12 @@ import ( "time" "golang.org/x/tools/internal/telemetry" - "golang.org/x/tools/internal/telemetry/export" "golang.org/x/tools/internal/telemetry/export/ocagent" "golang.org/x/tools/internal/telemetry/tag" ) var ( - exporter export.Exporter + exporter *ocagent.Exporter sent fakeSender start time.Time at time.Time