Skip to content
This repository was archived by the owner on Nov 7, 2022. It is now read-only.

Commit a7fc1c1

Browse files
committed
exporter/exporterparser/all: update SpanData translator
Update the OpenCensus Proto TraceData to OpenCensus-Go SpanData translator by: * Name from: "exportSpans" to "ocProtoSpansToOCSpanDataInstrumented" to make it more intuitive but also declare its intentions and add a reminder that we should get vendors to start using OpenCensus Proto * Added tracing for each export with a span that'll record the errors and number of spans
1 parent 73e5642 commit a7fc1c1

8 files changed

Lines changed: 44 additions & 12 deletions

File tree

exporter/exporterparser/aws_xray.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ func (axe *awsXRayExporter) ExportSpans(ctx context.Context, td data.TraceData)
172172
if err != nil {
173173
return err
174174
}
175-
return exportSpans(ctx, "aws-xray", exp, td)
175+
return ocProtoSpansToOCSpanDataInstrumented(ctx, "aws-xray", exp, td)
176176
}
177177

178178
func (axe *awsXRayExporter) getOrMakeExporterByServiceName(serviceName string) (*xray.Exporter, error) {

exporter/exporterparser/datadog.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,5 +90,5 @@ func (dde *datadogExporter) ExportSpans(ctx context.Context, td data.TraceData)
9090
// TODO: Examine the Datadog exporter to see
9191
// if trace.ExportSpan was constraining and if perhaps the
9292
// upload can use the context and information from the Node.
93-
return exportSpans(ctx, "datadog", dde.exporter, td)
93+
return ocProtoSpansToOCSpanDataInstrumented(ctx, "datadog", dde.exporter, td)
9494
}

exporter/exporterparser/exparser.go

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,32 @@ import (
3232
tracetranslator "github.com/census-instrumentation/opencensus-service/translator/trace"
3333
)
3434

35-
func exportSpans(ctx context.Context, exporterName string, te trace.Exporter, td data.TraceData) error {
35+
// ocProtoSpansToOCSpanDataInstrumented converts
36+
// OpenCensus Proto TraceData to OpenCensus-Go SpanData.
37+
// The "Instrumented" suffix serves to document that this
38+
// function is traced but also has stats for self-observability.
39+
//
40+
// This is a bootstrapping mechanism for us to re-use as many of
41+
// the OpenCensus-Go trace.SpanData exporters which were written
42+
// by various vendors and contributors. Eventually the goal is to
43+
// get those exporters converted to directly receive
44+
// OpenCensus Proto TraceData.
45+
func ocProtoSpansToOCSpanDataInstrumented(ctx context.Context, exporterName string, te trace.Exporter, td data.TraceData) (aerr error) {
46+
ctx, span := trace.StartSpan(ctx,
47+
"opencensus.service.exporter."+exporterName+".ExportTrace",
48+
trace.WithSampler(trace.NeverSample()))
49+
50+
span.Annotate([]trace.Attribute{
51+
trace.Int64Attribute("n_spans", int64(len(td.Spans))),
52+
}, "")
53+
54+
defer func() {
55+
if aerr != nil {
56+
span.SetStatus(trace.Status{Code: trace.StatusCodeInternal, Message: aerr.Error()})
57+
}
58+
span.End()
59+
}()
60+
3661
var errs []error
3762
var goodSpans []*tracepb.Span
3863
for _, span := range td.Spans {
@@ -45,9 +70,5 @@ func exportSpans(ctx context.Context, exporterName string, te trace.Exporter, td
4570
}
4671
}
4772

48-
// And finally record metrics on the number of exported spans.
49-
nSpansCounter := internal.NewExportedSpansRecorder(exporterName)
50-
nSpansCounter(ctx, td.Node, goodSpans)
51-
5273
return internal.CombineErrors(errs)
5374
}

exporter/exporterparser/honeycomb.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,5 @@ type honeycombExporter struct {
6363
}
6464

6565
func (hce *honeycombExporter) ExportSpans(ctx context.Context, td data.TraceData) error {
66-
return exportSpans(ctx, "honeycomb", hce.exporter, td)
66+
return ocProtoSpansToOCSpanDataInstrumented(ctx, "honeycomb", hce.exporter, td)
6767
}

exporter/exporterparser/jaeger.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,5 @@ func (je *jaegerExporter) ExportSpans(ctx context.Context, td data.TraceData) er
7575
// TODO: Examine "contrib.go.opencensus.io/exporter/jaeger" to see
7676
// if trace.ExportSpan was constraining and if perhaps the Jaeger
7777
// upload can use the context and information from the Node.
78-
return exportSpans(ctx, "jaeger", je.exporter, td)
78+
return ocProtoSpansToOCSpanDataInstrumented(ctx, "jaeger", je.exporter, td)
7979
}

exporter/exporterparser/kafka.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,5 @@ func KafkaExportersFromViper(v *viper.Viper) (tes []exporter.TraceExporter, mes
6969
}
7070

7171
func (kde *kafkaExporter) ExportSpans(ctx context.Context, td data.TraceData) error {
72-
return exportSpans(ctx, "kafka", kde.exporter, td)
72+
return ocProtoSpansToOCSpanDataInstrumented(ctx, "kafka", kde.exporter, td)
7373
}

exporter/exporterparser/stackdriver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ func (sde *stackdriverExporter) ExportSpans(ctx context.Context, td data.TraceDa
105105
// TODO: Examine "contrib.go.opencensus.io/exporter/stackdriver" to see
106106
// if trace.ExportSpan was constraining and if perhaps the Stackdriver
107107
// upload can use the context and information from the Node.
108-
return exportSpans(ctx, "stackdriver", sde.exporter, td)
108+
return ocProtoSpansToOCSpanDataInstrumented(ctx, "stackdriver", sde.exporter, td)
109109
}
110110

111111
var _ exporter.MetricsExporter = (*stackdriverExporter)(nil)

exporter/exporterparser/zipkin.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,18 @@ func (ze *zipkinExporter) stop() error {
192192
return ze.reporter.Close()
193193
}
194194

195-
func (ze *zipkinExporter) ExportSpans(ctx context.Context, td data.TraceData) error {
195+
func (ze *zipkinExporter) ExportSpans(ctx context.Context, td data.TraceData) (zerr error) {
196+
ctx, span := trace.StartSpan(ctx,
197+
"opencensus.service.exporter.zipkin.ExportTrace",
198+
trace.WithSampler(trace.NeverSample()))
199+
200+
defer func() {
201+
if zerr != nil {
202+
span.SetStatus(trace.Status{Code: trace.StatusCodeInternal, Message: zerr.Error()})
203+
}
204+
span.End()
205+
}()
206+
196207
goodSpans := make([]*tracepb.Span, 0, len(td.Spans))
197208
for _, span := range td.Spans {
198209
sd, err := tracetranslator.ProtoSpanToOCSpanData(span)

0 commit comments

Comments
 (0)