Skip to content

Commit 80805d2

Browse files
authored
Bump opentelemetry-collector to v0.14.0 (#2617)
* bump opentelemetry-collector to v0.14.0 Signed-off-by: Pavel Kositsyn <kositsyn.pa@phystech.edu> * initialize traceid and spanid explicitly Signed-off-by: Pavel Kositsyn <kositsyn.pa@phystech.edu> * fix comments and empty parent span check Signed-off-by: Pavel Kositsyn <kositsyn.pa@phystech.edu> * fasten convert traceID/spanID Signed-off-by: Pavel Kositsyn <kositsyn.pa@phystech.edu> * fix convertTraceID + fix tests Signed-off-by: Pavel Kositsyn <kositsyn.pa@phystech.edu>
1 parent 44a6d37 commit 80805d2

File tree

29 files changed

+138
-111
lines changed

29 files changed

+138
-111
lines changed

cmd/opentelemetry/app/exporter/badgerexporter/factory.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -89,19 +89,19 @@ func (f Factory) CreateDefaultConfig() configmodels.Exporter {
8989
}
9090
}
9191

92-
// CreateTraceExporter creates Jaeger Cassandra trace exporter.
92+
// CreateTracesExporter creates Jaeger Cassandra trace exporter.
9393
// This function implements OTEL component.ExporterFactory interface.
94-
func (f Factory) CreateTraceExporter(
94+
func (f Factory) CreateTracesExporter(
9595
_ context.Context,
9696
params component.ExporterCreateParams,
9797
cfg configmodels.Exporter,
98-
) (component.TraceExporter, error) {
98+
) (component.TracesExporter, error) {
9999
config := cfg.(*Config)
100100
factory, err := f.createStorageFactory(params, config)
101101
if err != nil {
102102
return nil, err
103103
}
104-
return exporter.NewSpanWriterExporter(cfg, factory,
104+
return exporter.NewSpanWriterExporter(cfg, params, factory,
105105
exporterhelper.WithTimeout(config.TimeoutSettings),
106106
exporterhelper.WithQueue(config.QueueSettings),
107107
exporterhelper.WithRetry(config.RetrySettings))

cmd/opentelemetry/app/exporter/badgerexporter/factory_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func TestCreateTraceExporter(t *testing.T) {
3737
factory := NewFactory(func() *badger.Options {
3838
return opts
3939
})
40-
exporter, err := factory.CreateTraceExporter(context.Background(), component.ExporterCreateParams{Logger: zap.NewNop()}, factory.CreateDefaultConfig())
40+
exporter, err := factory.CreateTracesExporter(context.Background(), component.ExporterCreateParams{Logger: zap.NewNop()}, factory.CreateDefaultConfig())
4141
require.NoError(t, err)
4242
assert.NotNil(t, exporter)
4343
}

cmd/opentelemetry/app/exporter/cassandraexporter/exporter.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ import (
2424
)
2525

2626
// new creates Cassandra exporter/storage
27-
func new(config *Config, params component.ExporterCreateParams) (component.TraceExporter, error) {
27+
func new(config *Config, params component.ExporterCreateParams) (component.TracesExporter, error) {
2828
f := cassandra.NewFactory()
2929
f.InitFromOptions(&config.Options)
3030

3131
err := f.Initialize(metrics.NullFactory, params.Logger)
3232
if err != nil {
3333
return nil, err
3434
}
35-
return exporter.NewSpanWriterExporter(config, f,
35+
return exporter.NewSpanWriterExporter(config, params, f,
3636
exporterhelper.WithTimeout(config.TimeoutSettings),
3737
exporterhelper.WithQueue(config.QueueSettings),
3838
exporterhelper.WithRetry(config.RetrySettings))

cmd/opentelemetry/app/exporter/cassandraexporter/factory.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,13 @@ func (f Factory) CreateDefaultConfig() configmodels.Exporter {
7171
}
7272
}
7373

74-
// CreateTraceExporter creates Jaeger Cassandra trace exporter.
74+
// CreateTracesExporter creates Jaeger Cassandra trace exporter.
7575
// This function implements OTEL component.ExporterFactory interface.
76-
func (f Factory) CreateTraceExporter(
76+
func (f Factory) CreateTracesExporter(
7777
_ context.Context,
7878
params component.ExporterCreateParams,
7979
cfg configmodels.Exporter,
80-
) (component.TraceExporter, error) {
80+
) (component.TracesExporter, error) {
8181
config := cfg.(*Config)
8282
return new(config, params)
8383
}

cmd/opentelemetry/app/exporter/cassandraexporter/factory_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func TestCreateTraceExporter(t *testing.T) {
3737
factory := Factory{OptionsFactory: func() *cassandra.Options {
3838
return opts
3939
}}
40-
exporter, err := factory.CreateTraceExporter(context.Background(), component.ExporterCreateParams{}, factory.CreateDefaultConfig())
40+
exporter, err := factory.CreateTracesExporter(context.Background(), component.ExporterCreateParams{}, factory.CreateDefaultConfig())
4141
require.Nil(t, exporter)
4242
assert.Contains(t, err.Error(), "gocql: unable to create session")
4343
}

cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator.go

+9-12
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package esmodeltranslator
1616

1717
import (
18+
"encoding/hex"
1819
"errors"
1920
"fmt"
2021
"strconv"
@@ -167,7 +168,7 @@ func toTime(nano pdata.TimestampUnixNano) time.Time {
167168
}
168169

169170
func references(links pdata.SpanLinkSlice, parentSpanID pdata.SpanID, traceID dbmodel.TraceID) ([]dbmodel.Reference, error) {
170-
parentSpanIDSet := len(parentSpanID.Bytes()) != 0
171+
parentSpanIDSet := parentSpanID.IsValid()
171172
if !parentSpanIDSet && links.Len() == 0 {
172173
return emptyReferenceList, nil
173174
}
@@ -222,24 +223,20 @@ func references(links pdata.SpanLinkSlice, parentSpanID pdata.SpanID, traceID db
222223
}
223224

224225
func convertSpanID(spanID pdata.SpanID) (dbmodel.SpanID, error) {
225-
spanIDInt, err := tracetranslator.BytesToUInt64SpanID(spanID.Bytes())
226-
if err != nil {
227-
return "", err
228-
}
229-
if spanIDInt == 0 {
226+
if !spanID.IsValid() {
230227
return "", errZeroSpanID
231228
}
232-
return dbmodel.SpanID(fmt.Sprintf("%016x", spanIDInt)), nil
229+
src := spanID.Bytes()
230+
dst := make([]byte, hex.EncodedLen(len(src)))
231+
hex.Encode(dst, src[:])
232+
return dbmodel.SpanID(dst), nil
233233
}
234234

235235
func convertTraceID(traceID pdata.TraceID) (dbmodel.TraceID, error) {
236-
high, low, err := tracetranslator.BytesToUInt64TraceID(traceID.Bytes())
237-
if err != nil {
238-
return "", err
239-
}
240-
if low == 0 && high == 0 {
236+
if !traceID.IsValid() {
241237
return "", errZeroTraceID
242238
}
239+
high, low := tracetranslator.BytesToUInt64TraceID(traceID.Bytes())
243240
return dbmodel.TraceID(traceIDToString(high, low)), nil
244241
}
245242

cmd/opentelemetry/app/exporter/elasticsearchexporter/esmodeltranslator/modeltranslator_test.go

+22-24
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
package esmodeltranslator
1616

1717
import (
18-
"encoding/binary"
1918
"fmt"
2019
"testing"
2120
"time"
@@ -30,8 +29,9 @@ import (
3029
)
3130

3231
var (
33-
traceID = pdata.NewTraceID([]byte("0123456789abcdef"))
34-
spanID = pdata.NewSpanID([]byte("01234567"))
32+
traceID = pdata.NewTraceID([16]byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
33+
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F})
34+
spanID = pdata.NewSpanID([8]byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07})
3535
)
3636

3737
func TestAttributeToKeyValue(t *testing.T) {
@@ -129,7 +129,9 @@ func TestConvertSpan(t *testing.T) {
129129
span.Links().Resize(1)
130130
span.Links().At(0).InitEmpty()
131131
span.Links().At(0).SetSpanID(spanID)
132-
span.Links().At(0).SetTraceID(traceID)
132+
traceIDZeroHigh := pdata.NewTraceID([16]byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
133+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07})
134+
span.Links().At(0).SetTraceID(traceIDZeroHigh)
133135

134136
c := &Translator{
135137
tagKeysAsFields: map[string]bool{"toTagMap": true},
@@ -143,15 +145,15 @@ func TestConvertSpan(t *testing.T) {
143145
Resource: resource,
144146
InstrumentationLibrary: traces.ResourceSpans().At(0).InstrumentationLibrarySpans().At(0).InstrumentationLibrary(),
145147
DBSpan: &dbmodel.Span{
146-
TraceID: "30313233343536373839616263646566",
147-
SpanID: "3031323334353637",
148+
TraceID: "000102030405060708090a0b0c0d0e0f",
149+
SpanID: "0001020304050607",
148150
StartTime: 1000,
149151
Duration: 1000,
150152
OperationName: "root",
151153
StartTimeMillis: 1,
152154
Tags: []dbmodel.KeyValue{
153155
{Key: "span.kind", Type: dbmodel.StringType, Value: "client"},
154-
{Key: "status.code", Type: dbmodel.StringType, Value: "STATUS_CODE_CANCELLED"},
156+
{Key: "status.code", Type: dbmodel.StringType, Value: "STATUS_CODE_OK"},
155157
{Key: "error", Type: dbmodel.BoolType, Value: "true"},
156158
{Key: "status.message", Type: dbmodel.StringType, Value: "messagetext"},
157159
{Key: "foo", Type: dbmodel.BoolType, Value: "true"},
@@ -163,8 +165,8 @@ func TestConvertSpan(t *testing.T) {
163165
{Key: "event", Value: "eventName", Type: dbmodel.StringType},
164166
{Key: "foo", Value: "bar", Type: dbmodel.StringType}}, Timestamp: 500}},
165167
References: []dbmodel.Reference{
166-
{SpanID: "3031323334353637", TraceID: "30313233343536373839616263646566", RefType: dbmodel.ChildOf},
167-
{SpanID: "3031323334353637", TraceID: "30313233343536373839616263646566", RefType: dbmodel.FollowsFrom}},
168+
{SpanID: "0001020304050607", TraceID: "000102030405060708090a0b0c0d0e0f", RefType: dbmodel.ChildOf},
169+
{SpanID: "0001020304050607", TraceID: "0001020304050607", RefType: dbmodel.FollowsFrom}},
168170
Process: dbmodel.Process{
169171
ServiceName: "myservice",
170172
Tags: []dbmodel.KeyValue{{Key: "num", Value: "16.66", Type: dbmodel.Float64Type}},
@@ -173,6 +175,12 @@ func TestConvertSpan(t *testing.T) {
173175
}, spansData[0])
174176
}
175177

178+
func BenchmarkConvertSpanID(b *testing.B) {
179+
for i := 0; i < b.N; i++ {
180+
_, _ = convertSpanID(spanID)
181+
}
182+
}
183+
176184
func TestSpanEmptyRef(t *testing.T) {
177185
traces := traces("myservice")
178186
span := addSpan(traces, "root", traceID, spanID)
@@ -190,8 +198,8 @@ func TestSpanEmptyRef(t *testing.T) {
190198
Resource: traces.ResourceSpans().At(0).Resource(),
191199
InstrumentationLibrary: traces.ResourceSpans().At(0).InstrumentationLibrarySpans().At(0).InstrumentationLibrary(),
192200
DBSpan: &dbmodel.Span{
193-
TraceID: "30313233343536373839616263646566",
194-
SpanID: "3031323334353637",
201+
TraceID: "000102030405060708090a0b0c0d0e0f",
202+
SpanID: "0001020304050607",
195203
StartTime: 1000,
196204
Duration: 1000,
197205
OperationName: "root",
@@ -215,26 +223,16 @@ func TestEmpty(t *testing.T) {
215223
}
216224

217225
func TestErrorIDs(t *testing.T) {
218-
zero64Bytes := make([]byte, 16)
219-
binary.LittleEndian.PutUint64(zero64Bytes, 0)
220-
binary.LittleEndian.PutUint64(zero64Bytes, 0)
226+
var zero64Bytes [16]byte
227+
var zero32Bytes [8]byte
221228
tests := []struct {
222229
spanID pdata.SpanID
223230
traceID pdata.TraceID
224231
err string
225232
}{
226-
{
227-
traceID: pdata.NewTraceID([]byte("invalid-%")),
228-
err: "TraceID does not have 16 bytes",
229-
},
230-
{
231-
traceID: traceID,
232-
spanID: pdata.NewSpanID([]byte("invalid-%")),
233-
err: "SpanID does not have 8 bytes",
234-
},
235233
{
236234
traceID: traceID,
237-
spanID: pdata.NewSpanID(zero64Bytes[:8]),
235+
spanID: pdata.NewSpanID(zero32Bytes),
238236
err: errZeroSpanID.Error(),
239237
},
240238
{

cmd/opentelemetry/app/exporter/elasticsearchexporter/exporter.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import (
2424
)
2525

2626
// newExporter creates Elasticsearch exporter/storage.
27-
func newExporter(ctx context.Context, config *Config, params component.ExporterCreateParams) (component.TraceExporter, error) {
27+
func newExporter(ctx context.Context, config *Config, params component.ExporterCreateParams) (component.TracesExporter, error) {
2828
esCfg := config.GetPrimary()
2929
w, err := newEsSpanWriter(*esCfg, params.Logger, false, config.Name())
3030
if err != nil {
@@ -38,6 +38,7 @@ func newExporter(ctx context.Context, config *Config, params component.ExporterC
3838
}
3939
return exporterhelper.NewTraceExporter(
4040
config,
41+
params.Logger,
4142
w.WriteTraces,
4243
exporterhelper.WithTimeout(config.TimeoutSettings),
4344
exporterhelper.WithQueue(config.QueueSettings),

cmd/opentelemetry/app/exporter/elasticsearchexporter/factory.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,13 @@ func (f Factory) CreateDefaultConfig() configmodels.Exporter {
7272
}
7373
}
7474

75-
// CreateTraceExporter creates Jaeger Elasticsearch trace exporter.
75+
// CreateTracesExporter creates Jaeger Elasticsearch trace exporter.
7676
// This function implements OTEL component.ExporterFactory interface.
77-
func (Factory) CreateTraceExporter(
77+
func (Factory) CreateTracesExporter(
7878
ctx context.Context,
7979
params component.ExporterCreateParams,
8080
cfg configmodels.Exporter,
81-
) (component.TraceExporter, error) {
81+
) (component.TracesExporter, error) {
8282
esCfg, ok := cfg.(*Config)
8383
if !ok {
8484
return nil, fmt.Errorf("could not cast configuration to %s", TypeStr)

cmd/opentelemetry/app/exporter/elasticsearchexporter/factory_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,14 @@ func TestCreateTraceExporter(t *testing.T) {
4040
}}
4141
config := factory.CreateDefaultConfig().(*Config)
4242
config.Primary.Servers = []string{"http://foobardoesnotexists.test"}
43-
exporter, err := factory.CreateTraceExporter(context.Background(), component.ExporterCreateParams{Logger: zap.NewNop()}, config)
43+
exporter, err := factory.CreateTracesExporter(context.Background(), component.ExporterCreateParams{Logger: zap.NewNop()}, config)
4444
require.Nil(t, exporter)
4545
assert.Contains(t, err.Error(), "no such host")
4646
}
4747

4848
func TestCreateTraceExporter_nilConfig(t *testing.T) {
4949
factory := &Factory{}
50-
exporter, err := factory.CreateTraceExporter(context.Background(), component.ExporterCreateParams{}, nil)
50+
exporter, err := factory.CreateTracesExporter(context.Background(), component.ExporterCreateParams{}, nil)
5151
require.Nil(t, exporter)
5252
assert.Contains(t, err.Error(), "could not cast configuration to jaeger_elasticsearch")
5353
}

cmd/opentelemetry/app/exporter/elasticsearchexporter/spanstore.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ const (
4646
serviceIndexBaseName = "jaeger-service"
4747
spanTypeName = "span"
4848
serviceTypeName = "service"
49-
indexDateFormat = "2006-01-02" // date format for index e.g. 2020-01-20
5049
)
5150

5251
// esSpanWriter holds components required for ES span writer
@@ -245,7 +244,7 @@ func bulkItemsToTraces(bulkItems []bulkItem) pdata.Traces {
245244
rss := traces.ResourceSpans().At(i)
246245
if !spanData.Resource.IsNil() {
247246
rss.Resource().InitEmpty()
248-
rss.Resource().Attributes().InitFromAttributeMap(spanData.Resource.Attributes())
247+
spanData.Resource.Attributes().CopyTo(rss.Resource().Attributes())
249248
}
250249
rss.InstrumentationLibrarySpans().Resize(1)
251250
ispans := rss.InstrumentationLibrarySpans().At(0)

cmd/opentelemetry/app/exporter/grpcpluginexporter/exporter.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ import (
2424
)
2525

2626
// new creates gRPC exporter/storage.
27-
func new(config *Config, params component.ExporterCreateParams) (component.TraceExporter, error) {
27+
func new(config *Config, params component.ExporterCreateParams) (component.TracesExporter, error) {
2828
factory := storageGrpc.NewFactory()
2929
factory.InitFromOptions(config.Options)
3030
err := factory.Initialize(metrics.NullFactory, params.Logger)
3131
if err != nil {
3232
return nil, err
3333
}
34-
return storageOtelExporter.NewSpanWriterExporter(&config.ExporterSettings, factory,
34+
return storageOtelExporter.NewSpanWriterExporter(&config.ExporterSettings, params, factory,
3535
exporterhelper.WithTimeout(config.TimeoutSettings),
3636
exporterhelper.WithQueue(config.QueueSettings),
3737
exporterhelper.WithRetry(config.RetrySettings))

cmd/opentelemetry/app/exporter/grpcpluginexporter/factory.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,13 @@ func (f Factory) CreateDefaultConfig() configmodels.Exporter {
6565
}
6666
}
6767

68-
// CreateTraceExporter creates Jaeger gRPC trace exporter.
68+
// CreateTracesExporter creates Jaeger gRPC trace exporter.
6969
// This function implements OTEL component.ExporterFactory interface.
70-
func (f Factory) CreateTraceExporter(
70+
func (f Factory) CreateTracesExporter(
7171
_ context.Context,
7272
params component.ExporterCreateParams,
7373
cfg configmodels.Exporter,
74-
) (component.TraceExporter, error) {
74+
) (component.TracesExporter, error) {
7575
grpcCfg := cfg.(*Config)
7676
return new(grpcCfg, params)
7777
}

cmd/opentelemetry/app/exporter/grpcpluginexporter/factory_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func TestCreateTraceExporter(t *testing.T) {
3636
factory := &Factory{OptionsFactory: func() *storageGrpc.Options {
3737
return opts
3838
}}
39-
exporter, err := factory.CreateTraceExporter(context.Background(), component.ExporterCreateParams{}, factory.CreateDefaultConfig())
39+
exporter, err := factory.CreateTracesExporter(context.Background(), component.ExporterCreateParams{}, factory.CreateDefaultConfig())
4040
require.Nil(t, exporter)
4141
assert.Contains(t, err.Error(), "error attempting to connect to plugin rpc client: fork/exec : no such file or directory")
4242
}

cmd/opentelemetry/app/exporter/jaegerexporter/jaeger_exporter.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,14 @@ func (f Factory) CreateDefaultConfig() configmodels.Exporter {
5858
return cfg
5959
}
6060

61-
// CreateTraceExporter creates Jaeger trace exporter.
61+
// CreateTracesExporter creates Jaeger trace exporter.
6262
// This function implements OTEL component.ExporterFactory interface.
63-
func (f Factory) CreateTraceExporter(
63+
func (f Factory) CreateTracesExporter(
6464
ctx context.Context,
6565
params component.ExporterCreateParams,
6666
cfg configmodels.Exporter,
67-
) (component.TraceExporter, error) {
68-
return f.Wrapped.CreateTraceExporter(ctx, params, cfg)
67+
) (component.TracesExporter, error) {
68+
return f.Wrapped.CreateTracesExporter(ctx, params, cfg)
6969
}
7070

7171
// CreateMetricsExporter creates a metrics exporter based on provided config.

cmd/opentelemetry/app/exporter/jaegerexporter/jaeger_exporter_test.go

-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ func TestDefaultValueFromViper(t *testing.T) {
6464
cfg := f.CreateDefaultConfig().(*jaegerexporter.Config)
6565

6666
qs := exporterhelper.CreateDefaultQueueSettings()
67-
qs.Enabled = false
6867
assert.Equal(t, &jaegerexporter.Config{
6968
ExporterSettings: configmodels.ExporterSettings{
7069
TypeVal: "jaeger",

cmd/opentelemetry/app/exporter/kafkaexporter/kafka_exporter.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,14 @@ func (f Factory) CreateDefaultConfig() configmodels.Exporter {
9797
return cfg
9898
}
9999

100-
// CreateTraceExporter creates Jaeger trace exporter.
100+
// CreateTracesExporter creates Jaeger trace exporter.
101101
// This function implements OTEL component.ExporterFactory interface.
102-
func (f Factory) CreateTraceExporter(
102+
func (f Factory) CreateTracesExporter(
103103
ctx context.Context,
104104
params component.ExporterCreateParams,
105105
cfg configmodels.Exporter,
106-
) (component.TraceExporter, error) {
107-
return f.Wrapped.CreateTraceExporter(ctx, params, cfg)
106+
) (component.TracesExporter, error) {
107+
return f.Wrapped.CreateTracesExporter(ctx, params, cfg)
108108
}
109109

110110
// CreateMetricsExporter creates a metrics exporter based on provided config.

0 commit comments

Comments
 (0)