Skip to content

Commit 65e3620

Browse files
Ian Cottrellianthehat
Ian Cottrell
authored andcommitted
internal/telemetry: add the ability to flush telemetry data
Change-Id: I5de33edc352a5202fdf9e38538a224dd6adafedb Reviewed-on: https://go-review.googlesource.com/c/tools/+/190799 Run-TryBot: Ian Cottrell <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Rebecca Stambler <[email protected]> Reviewed-by: Emmanuel Odeke <[email protected]>
1 parent fa80cb5 commit 65e3620

File tree

8 files changed

+26
-3
lines changed

8 files changed

+26
-3
lines changed

internal/lsp/debug/rpc.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ type rpcCodeBucket struct {
9393
func (r *rpcs) StartSpan(ctx context.Context, span *telemetry.Span) {}
9494
func (r *rpcs) FinishSpan(ctx context.Context, span *telemetry.Span) {}
9595
func (r *rpcs) Log(ctx context.Context, event telemetry.Event) {}
96+
func (r *rpcs) Flush() {}
97+
9698
func (r *rpcs) Metric(ctx context.Context, data telemetry.MetricData) {
9799
for i, group := range data.Groups() {
98100
set := &r.Inbound

internal/lsp/debug/trace.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ func (t *traces) Log(ctx context.Context, event telemetry.Event) {}
134134

135135
func (t *traces) Metric(ctx context.Context, data telemetry.MetricData) {}
136136

137+
func (t *traces) Flush() {}
138+
137139
func (t *traces) getData(req *http.Request) interface{} {
138140
if len(t.sets) == 0 {
139141
return nil

internal/lsp/protocol/context.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,11 @@ func WithClient(ctx context.Context, client Client) context.Context {
2727
// context.
2828
type logExporter struct{}
2929

30-
func (logExporter) StartSpan(context.Context, *telemetry.Span) {}
31-
func (logExporter) FinishSpan(context.Context, *telemetry.Span) {}
30+
func (logExporter) StartSpan(context.Context, *telemetry.Span) {}
31+
func (logExporter) FinishSpan(context.Context, *telemetry.Span) {}
32+
func (logExporter) Metric(context.Context, telemetry.MetricData) {}
33+
func (logExporter) Flush() {}
34+
3235
func (logExporter) Log(ctx context.Context, event telemetry.Event) {
3336
client, ok := ctx.Value(clientKey).(Client)
3437
if !ok {
@@ -40,4 +43,3 @@ func (logExporter) Log(ctx context.Context, event telemetry.Event) {
4043
}
4144
go client.LogMessage(xcontext.Detach(ctx), msg)
4245
}
43-
func (logExporter) Metric(context.Context, telemetry.MetricData) {}

internal/telemetry/export/export.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ type Exporter interface {
2626
Log(context.Context, telemetry.Event)
2727

2828
Metric(context.Context, telemetry.MetricData)
29+
30+
Flush()
2931
}
3032

3133
var (
@@ -90,3 +92,9 @@ func Metric(ctx context.Context, data telemetry.MetricData) {
9092
defer exporterMu.Unlock()
9193
exporter.Metric(ctx, data)
9294
}
95+
96+
func Flush() {
97+
exporterMu.Lock()
98+
defer exporterMu.Unlock()
99+
exporter.Flush()
100+
}

internal/telemetry/export/log.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,4 @@ func (w *logWriter) Log(ctx context.Context, event telemetry.Event) {
3535
fmt.Fprintf(w.writer, "%v\n", event)
3636
}
3737
func (w *logWriter) Metric(context.Context, telemetry.MetricData) {}
38+
func (w *logWriter) Flush() {}

internal/telemetry/export/multi.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,8 @@ func (m multi) Metric(ctx context.Context, data telemetry.MetricData) {
4848
o.Metric(ctx, data)
4949
}
5050
}
51+
func (m multi) Flush() {
52+
for _, o := range m {
53+
o.Flush()
54+
}
55+
}

internal/telemetry/export/null.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ func (null) StartSpan(context.Context, *telemetry.Span) {}
2121
func (null) FinishSpan(context.Context, *telemetry.Span) {}
2222
func (null) Log(context.Context, telemetry.Event) {}
2323
func (null) Metric(context.Context, telemetry.MetricData) {}
24+
func (null) Flush() {}

internal/telemetry/export/prometheus/prometheus.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ type Exporter struct {
2828
func (e *Exporter) StartSpan(ctx context.Context, span *telemetry.Span) {}
2929
func (e *Exporter) FinishSpan(ctx context.Context, span *telemetry.Span) {}
3030
func (e *Exporter) Log(ctx context.Context, event telemetry.Event) {}
31+
func (e *Exporter) Flush() {}
32+
3133
func (e *Exporter) Metric(ctx context.Context, data telemetry.MetricData) {
3234
e.mu.Lock()
3335
defer e.mu.Unlock()

0 commit comments

Comments
 (0)