Skip to content

Commit cbc443c

Browse files
committed
Revert "[query] Use OTEL's helpers for grpc server (jaegertracing#6055)"
This reverts commit c96790a.
1 parent 2c731e9 commit cbc443c

File tree

11 files changed

+71
-175
lines changed

11 files changed

+71
-175
lines changed

cmd/all-in-one/main.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,7 @@ by default uses only in-memory database.`,
133133
if err != nil {
134134
logger.Fatal("Failed to initialize collector", zap.Error(err))
135135
}
136-
defaultOpts := queryApp.DefaultQueryOptions()
137-
qOpts, err := defaultOpts.InitFromViper(v, logger)
136+
qOpts, err := new(queryApp.QueryOptions).InitFromViper(v, logger)
138137
if err != nil {
139138
logger.Fatal("Failed to configure query service", zap.Error(err))
140139
}
@@ -221,11 +220,11 @@ func startQuery(
221220
spanReader = storageMetrics.NewReadMetricsDecorator(spanReader, telset.Metrics)
222221
qs := querysvc.NewQueryService(spanReader, depReader, *queryOpts)
223222

224-
server, err := queryApp.NewServer(context.Background(), qs, metricsQueryService, qOpts, tm, telset)
223+
server, err := queryApp.NewServer(qs, metricsQueryService, qOpts, tm, telset)
225224
if err != nil {
226225
svc.Logger.Fatal("Could not create jaeger-query", zap.Error(err))
227226
}
228-
if err := server.Start(context.Background()); err != nil {
227+
if err := server.Start(); err != nil {
229228
svc.Logger.Fatal("Could not start jaeger-query", zap.Error(err))
230229
}
231230

cmd/jaeger/internal/extension/jaegerquery/factory.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@ import (
77
"context"
88

99
"go.opentelemetry.io/collector/component"
10+
"go.opentelemetry.io/collector/config/configgrpc"
11+
"go.opentelemetry.io/collector/config/confighttp"
12+
"go.opentelemetry.io/collector/config/confignet"
1013
"go.opentelemetry.io/collector/extension"
1114

1215
"github.com/jaegertracing/jaeger/cmd/query/app"
16+
"github.com/jaegertracing/jaeger/ports"
1317
)
1418

1519
// componentType is the name of this extension in configuration.
@@ -24,7 +28,17 @@ func NewFactory() extension.Factory {
2428

2529
func createDefaultConfig() component.Config {
2630
return &Config{
27-
QueryOptions: app.DefaultQueryOptions(),
31+
QueryOptions: app.QueryOptions{
32+
HTTP: confighttp.ServerConfig{
33+
Endpoint: ports.PortToHostPort(ports.QueryHTTP),
34+
},
35+
GRPC: configgrpc.ServerConfig{
36+
NetAddr: confignet.AddrConfig{
37+
Endpoint: ports.PortToHostPort(ports.QueryGRPC),
38+
Transport: confignet.TransportTypeTCP,
39+
},
40+
},
41+
},
2842
}
2943
}
3044

cmd/jaeger/internal/extension/jaegerquery/server.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func (*server) Dependencies() []component.ID {
5151
return []component.ID{jaegerstorage.ID}
5252
}
5353

54-
func (s *server) Start(ctx context.Context, host component.Host) error {
54+
func (s *server) Start(_ context.Context, host component.Host) error {
5555
mf := otelmetrics.NewFactory(s.telset.MeterProvider)
5656
baseFactory := mf.Namespace(metrics.NSOptions{Name: "jaeger"})
5757
queryMetricsFactory := baseFactory.Namespace(metrics.NSOptions{Name: "query"})
@@ -100,11 +100,11 @@ func (s *server) Start(ctx context.Context, host component.Host) error {
100100
ReportStatus: func(event *componentstatus.Event) {
101101
componentstatus.ReportStatus(host, event)
102102
},
103-
Host: host,
104103
}
105104

105+
// TODO contextcheck linter complains about next line that context is not passed. It is not wrong.
106+
//nolint
106107
s.server, err = queryApp.NewServer(
107-
ctx,
108108
// TODO propagate healthcheck updates up to the collector's runtime
109109
qs,
110110
mqs,
@@ -116,7 +116,7 @@ func (s *server) Start(ctx context.Context, host component.Host) error {
116116
return fmt.Errorf("could not create jaeger-query: %w", err)
117117
}
118118

119-
if err := s.server.Start(ctx); err != nil {
119+
if err := s.server.Start(); err != nil {
120120
return fmt.Errorf("could not start jaeger-query: %w", err)
121121
}
122122

cmd/jaeger/internal/extension/jaegerquery/server_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515
"github.com/stretchr/testify/require"
1616
"go.opentelemetry.io/collector/component"
1717
"go.opentelemetry.io/collector/component/componenttest"
18-
"go.opentelemetry.io/collector/config/confignet"
1918
"go.opentelemetry.io/collector/config/configtelemetry"
2019
"go.opentelemetry.io/otel/metric"
2120
noopmetric "go.opentelemetry.io/otel/metric/noop"
@@ -212,7 +211,6 @@ func TestServerStart(t *testing.T) {
212211
}
213212
tt.config.HTTP.Endpoint = ":0"
214213
tt.config.GRPC.NetAddr.Endpoint = ":0"
215-
tt.config.GRPC.NetAddr.Transport = confignet.TransportTypeTCP
216214
server := newServer(tt.config, telemetrySettings)
217215
err := server.Start(context.Background(), host)
218216
if tt.expectedErr == "" {

cmd/query/app/flags.go

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818
"github.com/spf13/viper"
1919
"go.opentelemetry.io/collector/config/configgrpc"
2020
"go.opentelemetry.io/collector/config/confighttp"
21-
"go.opentelemetry.io/collector/config/confignet"
2221
"go.opentelemetry.io/collector/config/configopaque"
2322
"go.uber.org/zap"
2423

@@ -101,11 +100,6 @@ func AddFlags(flagSet *flag.FlagSet) {
101100
func (qOpts *QueryOptions) InitFromViper(v *viper.Viper, logger *zap.Logger) (*QueryOptions, error) {
102101
qOpts.HTTP.Endpoint = v.GetString(queryHTTPHostPort)
103102
qOpts.GRPC.NetAddr.Endpoint = v.GetString(queryGRPCHostPort)
104-
// TODO: drop support for same host ports
105-
// https://github.com/jaegertracing/jaeger/issues/6117
106-
if qOpts.HTTP.Endpoint == qOpts.GRPC.NetAddr.Endpoint {
107-
logger.Warn("using the same port for gRPC and HTTP is deprecated; please use dedicated ports instead; support for shared ports will be removed in Feb 2025")
108-
}
109103
tlsGrpc, err := tlsGRPCFlagsConfig.InitFromViper(v)
110104
if err != nil {
111105
return qOpts, fmt.Errorf("failed to process gRPC TLS options: %w", err)
@@ -175,17 +169,3 @@ func mapHTTPHeaderToOTELHeaders(h http.Header) map[string]configopaque.String {
175169

176170
return otelHeaders
177171
}
178-
179-
func DefaultQueryOptions() QueryOptions {
180-
return QueryOptions{
181-
HTTP: confighttp.ServerConfig{
182-
Endpoint: ports.PortToHostPort(ports.QueryHTTP),
183-
},
184-
GRPC: configgrpc.ServerConfig{
185-
NetAddr: confignet.AddrConfig{
186-
Endpoint: ports.PortToHostPort(ports.QueryGRPC),
187-
Transport: confignet.TransportTypeTCP,
188-
},
189-
},
190-
}
191-
}

cmd/query/app/flags_test.go

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515
"go.uber.org/zap"
1616

1717
"github.com/jaegertracing/jaeger/pkg/config"
18-
"github.com/jaegertracing/jaeger/pkg/testutils"
1918
"github.com/jaegertracing/jaeger/ports"
2019
"github.com/jaegertracing/jaeger/storage/mocks"
2120
spanstore_mocks "github.com/jaegertracing/jaeger/storage/spanstore/mocks"
@@ -184,27 +183,3 @@ func TestQueryOptions_FailedTLSFlags(t *testing.T) {
184183
})
185184
}
186185
}
187-
188-
func TestQueryOptions_SamePortsLogsWarning(t *testing.T) {
189-
logger, logBuf := testutils.NewLogger()
190-
v, command := config.Viperize(AddFlags)
191-
command.ParseFlags([]string{
192-
"--query.http-server.host-port=127.0.0.1:8081",
193-
"--query.grpc-server.host-port=127.0.0.1:8081",
194-
})
195-
_, err := new(QueryOptions).InitFromViper(v, logger)
196-
require.NoError(t, err)
197-
198-
require.Contains(
199-
t,
200-
logBuf.String(),
201-
"using the same port for gRPC and HTTP is deprecated",
202-
)
203-
}
204-
205-
func TestDefaultQueryOptions(t *testing.T) {
206-
qo := DefaultQueryOptions()
207-
require.Equal(t, ":16686", qo.HTTP.Endpoint)
208-
require.Equal(t, ":16685", qo.GRPC.NetAddr.Endpoint)
209-
require.EqualValues(t, "tcp", qo.GRPC.NetAddr.Transport)
210-
}

cmd/query/app/server.go

Lines changed: 12 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,7 @@ import (
1616

1717
"github.com/gorilla/handlers"
1818
"github.com/soheilhy/cmux"
19-
"go.opentelemetry.io/collector/component"
2019
"go.opentelemetry.io/collector/component/componentstatus"
21-
"go.opentelemetry.io/collector/config/configgrpc"
22-
"go.opentelemetry.io/collector/config/configtelemetry"
23-
"go.opentelemetry.io/otel/metric"
24-
"go.opentelemetry.io/otel/metric/noop"
2520
"go.uber.org/zap"
2621
"go.uber.org/zap/zapcore"
2722
"google.golang.org/grpc"
@@ -59,9 +54,7 @@ type Server struct {
5954
}
6055

6156
// NewServer creates and initializes Server
62-
func NewServer(
63-
ctx context.Context,
64-
querySvc *querysvc.QueryService,
57+
func NewServer(querySvc *querysvc.QueryService,
6558
metricsQuerySvc querysvc.MetricsQueryService,
6659
options *QueryOptions,
6760
tm *tenancy.Manager,
@@ -81,18 +74,12 @@ func NewServer(
8174
return nil, errors.New("server with TLS enabled can not use same host ports for gRPC and HTTP. Use dedicated HTTP and gRPC host ports instead")
8275
}
8376

84-
var grpcServer *grpc.Server
85-
if separatePorts {
86-
grpcServer, err = createGRPCServerLegacy(ctx, options, tm)
87-
} else {
88-
grpcServer, err = createGRPCServerOTEL(ctx, options, tm, telset)
89-
}
77+
grpcServer, err := createGRPCServer(querySvc, metricsQuerySvc, options, tm, telset)
9078
if err != nil {
9179
return nil, err
9280
}
93-
registerGRPCHandlers(grpcServer, querySvc, metricsQuerySvc, telset)
9481

95-
httpServer, err := createHTTPServer(ctx, querySvc, metricsQuerySvc, options, tm, telset)
82+
httpServer, err := createHTTPServer(querySvc, metricsQuerySvc, options, tm, telset)
9683
if err != nil {
9784
return nil, err
9885
}
@@ -107,15 +94,11 @@ func NewServer(
10794
}, nil
10895
}
10996

110-
func createGRPCServerLegacy(
111-
ctx context.Context,
112-
options *QueryOptions,
113-
tm *tenancy.Manager,
114-
) (*grpc.Server, error) {
97+
func createGRPCServer(querySvc *querysvc.QueryService, metricsQuerySvc querysvc.MetricsQueryService, options *QueryOptions, tm *tenancy.Manager, telset telemetery.Setting) (*grpc.Server, error) {
11598
var grpcOpts []grpc.ServerOption
11699

117100
if options.GRPC.TLSSetting != nil {
118-
tlsCfg, err := options.GRPC.TLSSetting.LoadTLSConfig(ctx)
101+
tlsCfg, err := options.GRPC.TLSSetting.LoadTLSConfig(context.Background())
119102
if err != nil {
120103
return nil, err
121104
}
@@ -125,24 +108,15 @@ func createGRPCServerLegacy(
125108
grpcOpts = append(grpcOpts, grpc.Creds(creds))
126109
}
127110
if tm.Enabled {
128-
//nolint:contextcheck
129111
grpcOpts = append(grpcOpts,
130112
grpc.StreamInterceptor(tenancy.NewGuardingStreamInterceptor(tm)),
131113
grpc.UnaryInterceptor(tenancy.NewGuardingUnaryInterceptor(tm)),
132114
)
133115
}
134116

135117
server := grpc.NewServer(grpcOpts...)
136-
return server, nil
137-
}
138-
139-
func registerGRPCHandlers(
140-
server *grpc.Server,
141-
querySvc *querysvc.QueryService,
142-
metricsQuerySvc querysvc.MetricsQueryService,
143-
telset telemetery.Setting,
144-
) {
145118
reflection.Register(server)
119+
146120
handler := NewGRPCHandler(querySvc, metricsQuerySvc, GRPCHandlerOptions{
147121
Logger: telset.Logger,
148122
})
@@ -157,33 +131,7 @@ func registerGRPCHandlers(
157131
healthServer.SetServingStatus("jaeger.api_v3.QueryService", grpc_health_v1.HealthCheckResponse_SERVING)
158132

159133
grpc_health_v1.RegisterHealthServer(server, healthServer)
160-
}
161-
162-
func createGRPCServerOTEL(
163-
ctx context.Context,
164-
options *QueryOptions,
165-
tm *tenancy.Manager,
166-
telset telemetery.Setting,
167-
) (*grpc.Server, error) {
168-
var grpcOpts []configgrpc.ToServerOption
169-
if tm.Enabled {
170-
//nolint:contextcheck
171-
grpcOpts = append(grpcOpts,
172-
configgrpc.WithGrpcServerOption(grpc.StreamInterceptor(tenancy.NewGuardingStreamInterceptor(tm))),
173-
configgrpc.WithGrpcServerOption(grpc.UnaryInterceptor(tenancy.NewGuardingUnaryInterceptor(tm))),
174-
)
175-
}
176-
return options.GRPC.ToServer(
177-
ctx,
178-
telset.Host,
179-
component.TelemetrySettings{
180-
Logger: telset.Logger,
181-
TracerProvider: telset.TracerProvider,
182-
LeveledMeterProvider: func(_ configtelemetry.Level) metric.MeterProvider {
183-
return noop.NewMeterProvider()
184-
},
185-
},
186-
grpcOpts...)
134+
return server, nil
187135
}
188136

189137
type httpServer struct {
@@ -194,7 +142,6 @@ type httpServer struct {
194142
var _ io.Closer = (*httpServer)(nil)
195143

196144
func createHTTPServer(
197-
ctx context.Context,
198145
querySvc *querysvc.QueryService,
199146
metricsQuerySvc querysvc.MetricsQueryService,
200147
queryOpts *QueryOptions,
@@ -242,7 +189,7 @@ func createHTTPServer(
242189
}
243190

244191
if queryOpts.HTTP.TLSSetting != nil {
245-
tlsCfg, err := queryOpts.HTTP.TLSSetting.LoadTLSConfig(ctx) // This checks if the certificates are correctly provided
192+
tlsCfg, err := queryOpts.HTTP.TLSSetting.LoadTLSConfig(context.Background()) // This checks if the certificates are correctly provided
246193
if err != nil {
247194
return nil, err
248195
}
@@ -262,10 +209,10 @@ func (hS httpServer) Close() error {
262209
}
263210

264211
// initListener initialises listeners of the server
265-
func (s *Server) initListener(ctx context.Context) (cmux.CMux, error) {
212+
func (s *Server) initListener() (cmux.CMux, error) {
266213
if s.separatePorts { // use separate ports and listeners each for gRPC and HTTP requests
267214
var err error
268-
s.grpcConn, err = s.queryOptions.GRPC.NetAddr.Listen(ctx)
215+
s.grpcConn, err = net.Listen("tcp", s.queryOptions.GRPC.NetAddr.Endpoint)
269216
if err != nil {
270217
return nil, err
271218
}
@@ -313,8 +260,8 @@ func (s *Server) initListener(ctx context.Context) (cmux.CMux, error) {
313260
}
314261

315262
// Start http, GRPC and cmux servers concurrently
316-
func (s *Server) Start(ctx context.Context) error {
317-
cmuxServer, err := s.initListener(ctx)
263+
func (s *Server) Start() error {
264+
cmuxServer, err := s.initListener()
318265
if err != nil {
319266
return fmt.Errorf("query server failed to initialize listener: %w", err)
320267
}

0 commit comments

Comments
 (0)