Skip to content

Commit 5a7325a

Browse files
Copilotyurishkuro
andauthored
Fix OTel Collector v0.141.0 API breaking changes for ToServer/ToClientConn and Kafka receiver/exporter (#7694)
## 🛑 Breaking Change This upgrade of dependencies from OTel Collector introduces a breaking change in the Kafka exporter and receiver configuration: the `topic` and `encoding` fields moved under `traces` element (open-telemetry/opentelemetry-collector-contrib#44568). Before: ```yaml exporters: kafka: brokers: - localhost:9092 topic: ${env:KAFKA_TOPIC:-jaeger-spans} encoding: ${env:KAFKA_ENCODING:-otlp_proto} ``` After: ```yaml exporters: kafka: brokers: - localhost:9092 traces: topic: ${env:KAFKA_TOPIC:-jaeger-spans} encoding: ${env:KAFKA_ENCODING:-otlp_proto} ``` ## Fix for OTel Collector Upgrade PR #7694 ✅ - [x] Identify the failing build - Segmentation fault in TestNewServer_TLSConfigError - [x] Analyze error messages - Nil pointer dereference when calling Host.GetExtensions() - [x] Research and apply fix: - Added nil checks before calling Host.GetExtensions() in 3 locations - If Host is nil, pass nil to ToServer/ToClientConn instead of dereferencing - [x] Fix Kafka receiver/exporter configuration breaking changes - Moved `topic` and `encoding` into signal-specific `traces` section - Updated both `config-kafka-ingester.yaml` and `config-kafka-collector.yaml` - [x] Test the build passes - [x] Verify the changes are minimal and correct ## Summary Fixed build failures caused by breaking changes in OTel Collector v0.141.0: ### 1. ToServer/ToClientConn API Changes Added nil pointer checks before calling `Host.GetExtensions()` in: - `cmd/remote-storage/app/server.go` (added import and nil check) - `cmd/query/app/server.go` (2 locations with nil checks) ### 2. Kafka Receiver/Exporter Configuration Changes The Kafka receiver v0.141.0 removed deprecated top-level `topic` and `encoding` fields. Updated configuration files: - `cmd/jaeger/config-kafka-ingester.yaml` - Moved topic/encoding under `traces` section - `cmd/jaeger/config-kafka-collector.yaml` - Moved topic/encoding under `traces` section All tests now pass including the previously failing `TestNewServer_TLSConfigError` and Kafka integration tests. ✅ <!-- START COPILOT CODING AGENT SUFFIX --> <details> <summary>Original prompt</summary> > investigate why this upgrade PR is failing the build/CI: #7692 </details> <!-- START COPILOT CODING AGENT TIPS --> --- 💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey). --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: yurishkuro <[email protected]>
1 parent 63b27e1 commit 5a7325a

File tree

10 files changed

+438
-420
lines changed

10 files changed

+438
-420
lines changed

cmd/jaeger/config-kafka-collector.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,6 @@ exporters:
4141
kafka:
4242
brokers:
4343
- localhost:9092
44-
topic: ${env:KAFKA_TOPIC:-jaeger-spans}
45-
encoding: ${env:KAFKA_ENCODING:-otlp_proto}
44+
traces:
45+
topic: ${env:KAFKA_TOPIC:-jaeger-spans}
46+
encoding: ${env:KAFKA_ENCODING:-otlp_proto}

cmd/jaeger/config-kafka-ingester.yaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,9 @@ receivers:
4141
kafka:
4242
brokers:
4343
- localhost:9092
44-
topic: ${env:KAFKA_TOPIC:-jaeger-spans}
45-
encoding: ${env:KAFKA_ENCODING:-otlp_proto}
44+
traces:
45+
topic: ${env:KAFKA_TOPIC:-jaeger-spans}
46+
encoding: ${env:KAFKA_ENCODING:-otlp_proto}
4647
initial_offset: earliest
4748

4849
processors:

cmd/jaeger/internal/extension/expvar/extension.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func newExtension(config *Config, telset component.TelemetrySettings) *expvarExt
4040
}
4141

4242
func (c *expvarExtension) Start(ctx context.Context, host component.Host) error {
43-
server, err := c.config.ToServer(ctx, host, c.telset, expvar.Handler())
43+
server, err := c.config.ToServer(ctx, host.GetExtensions(), c.telset, expvar.Handler())
4444
if err != nil {
4545
return err
4646
}

cmd/jaeger/internal/extension/remotesampling/extension.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ func (ext *rsExtension) startHTTPServer(ctx context.Context, host component.Host
231231
handler.RegisterRoutesWithHTTP(httpMux)
232232

233233
var err error
234-
if ext.httpServer, err = ext.cfg.HTTP.ToServer(ctx, host, ext.telemetry, httpMux); err != nil {
234+
if ext.httpServer, err = ext.cfg.HTTP.ToServer(ctx, host.GetExtensions(), ext.telemetry, httpMux); err != nil {
235235
return err
236236
}
237237

@@ -259,7 +259,7 @@ func (ext *rsExtension) startHTTPServer(ctx context.Context, host component.Host
259259

260260
func (ext *rsExtension) startGRPCServer(ctx context.Context, host component.Host) error {
261261
var err error
262-
if ext.grpcServer, err = ext.cfg.GRPC.ToServer(ctx, host, ext.telemetry); err != nil {
262+
if ext.grpcServer, err = ext.cfg.GRPC.ToServer(ctx, host.GetExtensions(), ext.telemetry); err != nil {
263263
return err
264264
}
265265

cmd/query/app/server.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,13 @@ func createGRPCServer(
136136
configgrpc.WithGrpcServerOption(grpc.ChainUnaryInterceptor(unaryInterceptors...)),
137137
configgrpc.WithGrpcServerOption(grpc.ChainStreamInterceptor(streamInterceptors...)),
138138
)
139+
var extensions map[component.ID]component.Component
140+
if telset.Host != nil {
141+
extensions = telset.Host.GetExtensions()
142+
}
139143
return options.GRPC.ToServer(
140144
ctx,
141-
telset.Host,
145+
extensions,
142146
component.TelemetrySettings{
143147
Logger: telset.Logger,
144148
TracerProvider: telset.TracerProvider,
@@ -207,9 +211,13 @@ func createHTTPServer(
207211
) (*httpServer, error) {
208212
handler, staticHandlerCloser := initRouter(querySvc, v2QuerySvc, metricsQuerySvc, queryOpts, tm, telset)
209213
handler = recoveryhandler.NewRecoveryHandler(telset.Logger, true)(handler)
214+
var extensions map[component.ID]component.Component
215+
if telset.Host != nil {
216+
extensions = telset.Host.GetExtensions()
217+
}
210218
hs, err := queryOpts.HTTP.ToServer(
211219
ctx,
212-
telset.Host,
220+
extensions,
213221
component.TelemetrySettings{
214222
Logger: telset.Logger,
215223
TracerProvider: telset.TracerProvider,

cmd/remote-storage/app/server.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"net"
1010
"sync"
1111

12+
"go.opentelemetry.io/collector/component"
1213
"go.opentelemetry.io/collector/component/componentstatus"
1314
"go.opentelemetry.io/collector/config/configgrpc"
1415
"go.opentelemetry.io/collector/config/confignet"
@@ -116,8 +117,12 @@ func createGRPCServer(
116117
}
117118

118119
opts.NetAddr.Transport = confignet.TransportTypeTCP
120+
var extensions map[component.ID]component.Component
121+
if telset.Host != nil {
122+
extensions = telset.Host.GetExtensions()
123+
}
119124
server, err := opts.ToServer(ctx,
120-
telset.Host,
125+
extensions,
121126
telset.ToOtelComponent(),
122127
configgrpc.WithGrpcServerOption(grpc.ChainUnaryInterceptor(unaryInterceptors...)),
123128
configgrpc.WithGrpcServerOption(grpc.ChainStreamInterceptor(streamInterceptors...)),

go.mod

Lines changed: 132 additions & 131 deletions
Large diffs are not rendered by default.

go.sum

Lines changed: 279 additions & 277 deletions
Large diffs are not rendered by default.

internal/storage/v1/grpc/factory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ func (f *Factory) Initialize(metricsFactory metrics.Factory, logger *zap.Logger)
102102
for _, opt := range opts {
103103
clientOpts = append(clientOpts, configgrpc.WithGrpcDialOption(opt))
104104
}
105-
return f.options.Config.ToClientConn(context.Background(), f.telset.Host, telset, clientOpts...)
105+
return f.options.Config.ToClientConn(context.Background(), f.telset.Host.GetExtensions(), telset, clientOpts...)
106106
}
107107

108108
var err error

internal/storage/v2/grpc/factory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func NewFactory(
6666
for _, opt := range opts {
6767
clientOpts = append(clientOpts, configgrpc.WithGrpcDialOption(opt))
6868
}
69-
return gcs.ToClientConn(ctx, f.telset.Host, telset, clientOpts...)
69+
return gcs.ToClientConn(ctx, f.telset.Host.GetExtensions(), telset, clientOpts...)
7070
}
7171

7272
if err := f.initializeConnections(readerTelset, writerTelset, &cfg.ClientConfig, &writerConfig, newClientFn); err != nil {

0 commit comments

Comments
 (0)