Skip to content

Commit 1765a6d

Browse files
committed
Move start of span to enqueue
1 parent cfdfd23 commit 1765a6d

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

exporter/exporterhelper/internal/obs_queue.go

+9
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
"go.opentelemetry.io/otel/attribute"
1010
"go.opentelemetry.io/otel/metric"
11+
"go.opentelemetry.io/otel/trace"
1112

1213
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/metadata"
1314
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/request"
@@ -21,6 +22,7 @@ type obsQueue[T request.Request] struct {
2122
tb *metadata.TelemetryBuilder
2223
metricAttr metric.MeasurementOption
2324
enqueueFailedInst metric.Int64Counter
25+
tracer trace.Tracer
2426
}
2527

2628
func newObsQueue[T request.Request](set exporterqueue.Settings, delegate exporterqueue.Queue[T]) (exporterqueue.Queue[T], error) {
@@ -47,10 +49,13 @@ func newObsQueue[T request.Request](set exporterqueue.Settings, delegate exporte
4749
return nil, err
4850
}
4951

52+
tracer := metadata.Tracer(set.ExporterSettings.TelemetrySettings)
53+
5054
or := &obsQueue[T]{
5155
Queue: delegate,
5256
tb: tb,
5357
metricAttr: metric.WithAttributeSet(attribute.NewSet(exporterAttr)),
58+
tracer: tracer,
5459
}
5560

5661
switch set.Signal {
@@ -74,7 +79,11 @@ func (or *obsQueue[T]) Offer(ctx context.Context, req T) error {
7479
// Have to read the number of items before sending the request since the request can
7580
// be modified by the downstream components like the batcher.
7681
numItems := req.ItemsCount()
82+
83+
ctx, _ = or.tracer.Start(ctx, "exporter/enqueue")
7784
err := or.Queue.Offer(ctx, req)
85+
trace.SpanFromContext(ctx).End()
86+
7887
// No metrics recorded for profiles, remove enqueueFailedInst check with nil when profiles metrics available.
7988
if err != nil && or.enqueueFailedInst != nil {
8089
or.enqueueFailedInst.Add(ctx, int64(numItems), or.metricAttr)

exporter/exporterhelper/internal/queue_sender.go

-8
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@ import (
77
"context"
88
"errors"
99

10-
"go.opentelemetry.io/otel/trace"
1110
"go.uber.org/zap"
1211

1312
"go.opentelemetry.io/collector/component"
1413
"go.opentelemetry.io/collector/exporter/exporterbatcher"
1514
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/batcher"
16-
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/metadata"
1715
"go.opentelemetry.io/collector/exporter/exporterhelper/internal/request"
1816
"go.opentelemetry.io/collector/exporter/exporterqueue"
1917
"go.opentelemetry.io/collector/featuregate"
@@ -125,13 +123,7 @@ func NewQueueSender(
125123
// Have to read the number of items before sending the request since the request can
126124
// be modified by the downstream components like the batcher.
127125
itemsCount := req.ItemsCount()
128-
129-
// TODO: move start of span to enqueue instead to dequeue.
130-
// Figure out how to preserve span context across persistent storage.
131-
ctx, _ = metadata.Tracer(qSet.ExporterSettings.TelemetrySettings).Start(ctx, "exporter/enqueue")
132126
err := next.Send(ctx, req)
133-
trace.SpanFromContext(ctx).End()
134-
135127
if err != nil {
136128
qSet.ExporterSettings.Logger.Error("Exporting failed. Dropping data."+exportFailureMessage,
137129
zap.Error(err), zap.Int("dropped_items", itemsCount))

0 commit comments

Comments
 (0)