Skip to content

Commit 0d5bd34

Browse files
XSAMMrAlias
andauthored
Remove service name as a parameter of Sarama instrumentation (#221)
* Remove service name as a parameter of Sarama instrumentation * Replace `WithTracer` with `WithTracerProvider` * Update CHANGELOG * Fix CHANGELOG & comments Co-authored-by: Tyler Yahn <[email protected]>
1 parent 1df6921 commit 0d5bd34

File tree

11 files changed

+85
-97
lines changed

11 files changed

+85
-97
lines changed

CHANGELOG.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
1414

1515
### Changed
1616

17-
- Switch to use common top-level module `SemVersion()` when creating versioned tracer in `bradfitz/gomemcache`.
17+
- Remove service name as a parameter of Sarama instrumentation. (#221)
18+
- Replace `WithTracer` with `WithTracerProvider` in Sarama instrumentation. (#221)
19+
- Switch to use common top-level module `SemVersion()` when creating versioned tracer in `bradfitz/gomemcache`. (#226)
1820

1921
### Fixed
2022

21-
- Update dependabot configuration to include newly added `bradfitz/gomemcache` package.
23+
- Update dependabot configuration to include newly added `bradfitz/gomemcache` package. (#226)
2224

2325
## [0.10.1] - 2020-08-13
2426

instrumentation/github.com/Shopify/sarama/consumer.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ func (pc *partitionConsumer) Messages() <-chan *sarama.ConsumerMessage {
3131

3232
// WrapPartitionConsumer wraps a sarama.PartitionConsumer causing each received
3333
// message to be traced.
34-
func WrapPartitionConsumer(serviceName string, pc sarama.PartitionConsumer, opts ...Option) sarama.PartitionConsumer {
35-
cfg := newConfig(serviceName, opts...)
34+
func WrapPartitionConsumer(pc sarama.PartitionConsumer, opts ...Option) sarama.PartitionConsumer {
35+
cfg := newConfig(opts...)
3636

3737
dispatcher := newConsumerMessagesDispatcherWrapper(pc, cfg)
3838
go dispatcher.Run()
@@ -46,8 +46,7 @@ func WrapPartitionConsumer(serviceName string, pc sarama.PartitionConsumer, opts
4646
type consumer struct {
4747
sarama.Consumer
4848

49-
serviceName string
50-
opts []Option
49+
opts []Option
5150
}
5251

5352
// ConsumePartition invokes Consumer.ConsumePartition and wraps the resulting
@@ -57,15 +56,14 @@ func (c *consumer) ConsumePartition(topic string, partition int32, offset int64)
5756
if err != nil {
5857
return nil, err
5958
}
60-
return WrapPartitionConsumer(c.serviceName, pc, c.opts...), nil
59+
return WrapPartitionConsumer(pc, c.opts...), nil
6160
}
6261

6362
// WrapConsumer wraps a sarama.Consumer wrapping any PartitionConsumer created
6463
// via Consumer.ConsumePartition.
65-
func WrapConsumer(serviceName string, c sarama.Consumer, opts ...Option) sarama.Consumer {
64+
func WrapConsumer(c sarama.Consumer, opts ...Option) sarama.Consumer {
6665
return &consumer{
67-
Consumer: c,
68-
serviceName: serviceName,
69-
opts: opts,
66+
Consumer: c,
67+
opts: opts,
7068
}
7169
}

instrumentation/github.com/Shopify/sarama/consumer_group.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ func (h *consumerGroupHandler) ConsumeClaim(session sarama.ConsumerGroupSession,
4040

4141
// WrapConsumerGroupHandler wraps a sarama.ConsumerGroupHandler causing each received
4242
// message to be traced.
43-
func WrapConsumerGroupHandler(serviceName string, handler sarama.ConsumerGroupHandler, opts ...Option) sarama.ConsumerGroupHandler {
44-
cfg := newConfig(serviceName, opts...)
43+
func WrapConsumerGroupHandler(handler sarama.ConsumerGroupHandler, opts ...Option) sarama.ConsumerGroupHandler {
44+
cfg := newConfig(opts...)
4545

4646
return &consumerGroupHandler{
4747
ConsumerGroupHandler: handler,

instrumentation/github.com/Shopify/sarama/consumer_test.go

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,16 @@ import (
3434
)
3535

3636
const (
37-
serviceName = "test-service-name"
38-
topic = "test-topic"
37+
topic = "test-topic"
3938
)
4039

4140
var (
4241
propagators = global.Propagators()
4342
)
4443

4544
func TestWrapPartitionConsumer(t *testing.T) {
46-
// Mock tracer
47-
mt := mocktracer.NewTracer("kafka")
45+
// Mock provider
46+
provider, mt := newProviderAndTracer()
4847

4948
// Mock partition consumer controller
5049
consumer := mocks.NewConsumer(t, sarama.NewConfig())
@@ -54,21 +53,21 @@ func TestWrapPartitionConsumer(t *testing.T) {
5453
partitionConsumer, err := consumer.ConsumePartition(topic, 0, 0)
5554
require.NoError(t, err)
5655

57-
partitionConsumer = WrapPartitionConsumer(serviceName, partitionConsumer, WithTracer(mt))
56+
partitionConsumer = WrapPartitionConsumer(partitionConsumer, WithTraceProvider(provider))
5857

5958
consumeAndCheck(t, mt, mockPartitionConsumer, partitionConsumer)
6059
}
6160

6261
func TestWrapConsumer(t *testing.T) {
63-
// Mock tracer
64-
mt := mocktracer.NewTracer("kafka")
62+
// Mock provider
63+
provider, mt := newProviderAndTracer()
6564

6665
// Mock partition consumer controller
6766
mockConsumer := mocks.NewConsumer(t, sarama.NewConfig())
6867
mockPartitionConsumer := mockConsumer.ExpectConsumePartition(topic, 0, 0)
6968

7069
// Wrap consumer
71-
consumer := WrapConsumer(serviceName, mockConsumer, WithTracer(mt))
70+
consumer := WrapConsumer(mockConsumer, WithTraceProvider(provider))
7271

7372
// Create partition consumer
7473
partitionConsumer, err := consumer.ConsumePartition(topic, 0, 0)
@@ -107,7 +106,6 @@ func consumeAndCheck(t *testing.T, mt *mocktracer.Tracer, mockPartitionConsumer
107106
}{
108107
{
109108
kvList: []kv.KeyValue{
110-
standard.ServiceNameKey.String(serviceName),
111109
standard.MessagingSystemKey.String("kafka"),
112110
standard.MessagingDestinationKindKeyTopic,
113111
standard.MessagingDestinationKey.String("test-topic"),
@@ -121,7 +119,6 @@ func consumeAndCheck(t *testing.T, mt *mocktracer.Tracer, mockPartitionConsumer
121119
},
122120
{
123121
kvList: []kv.KeyValue{
124-
standard.ServiceNameKey.String(serviceName),
125122
standard.MessagingSystemKey.String("kafka"),
126123
standard.MessagingDestinationKindKeyTopic,
127124
standard.MessagingDestinationKey.String("test-topic"),
@@ -159,7 +156,7 @@ func TestConsumerConsumePartitionWithError(t *testing.T) {
159156
mockConsumer := mocks.NewConsumer(t, sarama.NewConfig())
160157
mockConsumer.ExpectConsumePartition(topic, 0, 0)
161158

162-
consumer := WrapConsumer(serviceName, mockConsumer)
159+
consumer := WrapConsumer(mockConsumer)
163160
_, err := consumer.ConsumePartition(topic, 0, 0)
164161
assert.NoError(t, err)
165162
// Consume twice
@@ -168,12 +165,12 @@ func TestConsumerConsumePartitionWithError(t *testing.T) {
168165
}
169166

170167
func BenchmarkWrapPartitionConsumer(b *testing.B) {
171-
// Mock tracer
172-
mt := mocktracer.NewTracer("kafka")
168+
// Mock provider
169+
provider, _ := newProviderAndTracer()
173170

174171
mockPartitionConsumer, partitionConsumer := createMockPartitionConsumer(b)
175172

176-
partitionConsumer = WrapPartitionConsumer(serviceName, partitionConsumer, WithTracer(mt))
173+
partitionConsumer = WrapPartitionConsumer(partitionConsumer, WithTraceProvider(provider))
177174
message := sarama.ConsumerMessage{Key: []byte("foo")}
178175

179176
b.ReportAllocs()

instrumentation/github.com/Shopify/sarama/dispatcher.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ func (w *consumerMessagesDispatcherWrapper) Run() {
6161

6262
// Create a span.
6363
attrs := []kv.KeyValue{
64-
standard.ServiceNameKey.String(w.cfg.ServiceName),
6564
standard.MessagingSystemKey.String("kafka"),
6665
standard.MessagingDestinationKindKeyTopic,
6766
standard.MessagingDestinationKey.String(msg.Topic),

instrumentation/github.com/Shopify/sarama/example/consumer/consumer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func main() {
5757
func startConsumerGroup(brokerList []string) {
5858
consumerGroupHandler := Consumer{}
5959
// Wrap instrumentation
60-
handler := saramatrace.WrapConsumerGroupHandler("example-consumer", &consumerGroupHandler)
60+
handler := saramatrace.WrapConsumerGroupHandler(&consumerGroupHandler)
6161

6262
config := sarama.NewConfig()
6363
config.Version = sarama.V2_5_0_0

instrumentation/github.com/Shopify/sarama/example/producer/producer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func newAccessLogProducer(brokerList []string) sarama.AsyncProducer {
9090
}
9191

9292
// Wrap instrumentation
93-
producer = saramatrace.WrapAsyncProducer("example-producer", config, producer)
93+
producer = saramatrace.WrapAsyncProducer(config, producer)
9494

9595
// We will log to STDOUT if we're not able to produce messages.
9696
go func() {

instrumentation/github.com/Shopify/sarama/option.go

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,33 +28,35 @@ const (
2828
)
2929

3030
type config struct {
31-
ServiceName string
32-
Tracer trace.Tracer
33-
Propagators otelpropagation.Propagators
31+
TraceProvider trace.Provider
32+
Propagators otelpropagation.Propagators
33+
34+
Tracer trace.Tracer
3435
}
3536

3637
// newConfig returns a config with all Options set.
37-
func newConfig(serviceName string, opts ...Option) config {
38-
cfg := config{Propagators: global.Propagators(), ServiceName: serviceName}
38+
func newConfig(opts ...Option) config {
39+
cfg := config{
40+
Propagators: global.Propagators(),
41+
TraceProvider: global.TraceProvider(),
42+
}
3943
for _, opt := range opts {
4044
opt(&cfg)
4145
}
42-
if cfg.Tracer == nil {
43-
cfg.Tracer = global.Tracer(defaultTracerName)
44-
}
46+
47+
cfg.Tracer = cfg.TraceProvider.Tracer(defaultTracerName)
48+
4549
return cfg
4650
}
4751

4852
// Option specifies instrumentation configuration options.
4953
type Option func(*config)
5054

51-
// WithTracer specifies a tracer to use for creating spans. If none is
52-
// specified, a tracer named
53-
// "go.opentelemetry.io/contrib/instrumentation/github.com/Shopify/sarama"
54-
// from the global provider is used.
55-
func WithTracer(tracer trace.Tracer) Option {
55+
// WithTraceProvider specifies a trace provider to use for creating a tracer for spans.
56+
// If none is specified, the global provider is used.
57+
func WithTraceProvider(provider trace.Provider) Option {
5658
return func(cfg *config) {
57-
cfg.Tracer = tracer
59+
cfg.TraceProvider = provider
5860
}
5961
}
6062

instrumentation/github.com/Shopify/sarama/option_test.go

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -24,49 +24,37 @@ import (
2424

2525
func TestNewConfig(t *testing.T) {
2626
testCases := []struct {
27-
name string
28-
serviceName string
29-
opts []Option
30-
expected config
27+
name string
28+
opts []Option
29+
expected config
3130
}{
3231
{
33-
name: "set service name",
34-
serviceName: serviceName,
35-
expected: config{
36-
ServiceName: serviceName,
37-
Tracer: global.Tracer(defaultTracerName),
38-
Propagators: global.Propagators(),
39-
},
40-
},
41-
{
42-
name: "with tracer",
43-
serviceName: serviceName,
32+
name: "with provider",
4433
opts: []Option{
45-
WithTracer(global.Tracer("new")),
34+
WithTraceProvider(global.TraceProvider()),
4635
},
4736
expected: config{
48-
ServiceName: serviceName,
49-
Tracer: global.Tracer("new"),
50-
Propagators: global.Propagators(),
37+
TraceProvider: global.TraceProvider(),
38+
Tracer: global.TraceProvider().Tracer(defaultTracerName),
39+
Propagators: global.Propagators(),
5140
},
5241
},
5342
{
54-
name: "with propagators",
55-
serviceName: serviceName,
43+
name: "with propagators",
5644
opts: []Option{
5745
WithPropagators(nil),
5846
},
5947
expected: config{
60-
ServiceName: serviceName,
61-
Tracer: global.Tracer(defaultTracerName),
62-
Propagators: nil,
48+
TraceProvider: global.TraceProvider(),
49+
Tracer: global.TraceProvider().Tracer(defaultTracerName),
50+
Propagators: nil,
6351
},
6452
},
6553
}
6654

6755
for _, tc := range testCases {
6856
t.Run(tc.name, func(t *testing.T) {
69-
result := newConfig(tc.serviceName, tc.opts...)
57+
result := newConfig(tc.opts...)
7058
assert.Equal(t, tc.expected, result)
7159
})
7260
}

instrumentation/github.com/Shopify/sarama/producer.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ func (p *syncProducer) SendMessages(msgs []*sarama.ProducerMessage) error {
5858

5959
// WrapSyncProducer wraps a sarama.SyncProducer so that all produced messages
6060
// are traced.
61-
func WrapSyncProducer(serviceName string, saramaConfig *sarama.Config, producer sarama.SyncProducer, opts ...Option) sarama.SyncProducer {
62-
cfg := newConfig(serviceName, opts...)
61+
func WrapSyncProducer(saramaConfig *sarama.Config, producer sarama.SyncProducer, opts ...Option) sarama.SyncProducer {
62+
cfg := newConfig(opts...)
6363
if saramaConfig == nil {
6464
saramaConfig = sarama.NewConfig()
6565
}
@@ -131,8 +131,8 @@ type producerMessageContext struct {
131131
//
132132
// If `Return.Successes` is false, there is no way to know partition and offset of
133133
// the message.
134-
func WrapAsyncProducer(serviceName string, saramaConfig *sarama.Config, p sarama.AsyncProducer, opts ...Option) sarama.AsyncProducer {
135-
cfg := newConfig(serviceName, opts...)
134+
func WrapAsyncProducer(saramaConfig *sarama.Config, p sarama.AsyncProducer, opts ...Option) sarama.AsyncProducer {
135+
cfg := newConfig(opts...)
136136
if saramaConfig == nil {
137137
saramaConfig = sarama.NewConfig()
138138
}
@@ -234,7 +234,6 @@ func startProducerSpan(cfg config, version sarama.KafkaVersion, msg *sarama.Prod
234234

235235
// Create a span.
236236
attrs := []kv.KeyValue{
237-
standard.ServiceNameKey.String(cfg.ServiceName),
238237
standard.MessagingSystemKey.String("kafka"),
239238
standard.MessagingDestinationKindKeyTopic,
240239
standard.MessagingDestinationKey.String(msg.Topic),

0 commit comments

Comments
 (0)