@@ -97,7 +97,7 @@ func (r *otlpReceiver) startGRPCServer(cfg *configgrpc.GRPCServerSettings, host
97
97
return err
98
98
}
99
99
go func () {
100
- if errGrpc := r .serverGRPC .Serve (gln ); errGrpc != nil {
100
+ if errGrpc := r .serverGRPC .Serve (gln ); errGrpc != nil && errGrpc != grpc . ErrServerStopped {
101
101
host .ReportFatalError (errGrpc )
102
102
}
103
103
}()
@@ -112,14 +112,32 @@ func (r *otlpReceiver) startHTTPServer(cfg *confighttp.HTTPServerSettings, host
112
112
return err
113
113
}
114
114
go func () {
115
- if errHTTP := r .serverHTTP .Serve (hln ); errHTTP != nil {
115
+ if errHTTP := r .serverHTTP .Serve (hln ); errHTTP != nil && errHTTP != http . ErrServerClosed {
116
116
host .ReportFatalError (errHTTP )
117
117
}
118
118
}()
119
119
return nil
120
120
}
121
121
122
- func (r * otlpReceiver ) startProtocolServers (host component.Host ) error {
122
+ func (r * otlpReceiver ) startProtocolServers (ctx context.Context , host component.Host ) error {
123
+ if r .traceReceiver != nil {
124
+ if err := r .registerTraceServers (ctx ); err != nil {
125
+ return err
126
+ }
127
+ }
128
+
129
+ if r .metricsReceiver != nil {
130
+ if err := r .registerMetricsServers (ctx ); err != nil {
131
+ return err
132
+ }
133
+ }
134
+
135
+ if r .logReceiver != nil {
136
+ if err := r .registerLogsServers (ctx ); err != nil {
137
+ return err
138
+ }
139
+ }
140
+
123
141
var err error
124
142
if r .cfg .GRPC != nil {
125
143
err = r .startGRPCServer (r .cfg .GRPC , host )
@@ -155,14 +173,14 @@ func (r *otlpReceiver) startProtocolServers(host component.Host) error {
155
173
156
174
// Start runs the trace receiver on the gRPC server. Currently
157
175
// it also enables the metrics receiver too.
158
- func (r * otlpReceiver ) Start (_ context.Context , host component.Host ) error {
176
+ func (r * otlpReceiver ) Start (ctx context.Context , host component.Host ) error {
159
177
if r .traceReceiver == nil && r .metricsReceiver == nil && r .logReceiver == nil {
160
178
return errors .New ("cannot start receiver: no consumers were specified" )
161
179
}
162
180
163
181
var err error
164
182
r .startServerOnce .Do (func () {
165
- err = r .startProtocolServers (host )
183
+ err = r .startProtocolServers (ctx , host )
166
184
})
167
185
return err
168
186
}
@@ -184,11 +202,15 @@ func (r *otlpReceiver) Shutdown(ctx context.Context) error {
184
202
return err
185
203
}
186
204
187
- func (r * otlpReceiver ) registerTraceConsumer (ctx context. Context , tc consumer.TracesConsumer ) error {
205
+ func (r * otlpReceiver ) registerTraceConsumer (tc consumer.TracesConsumer ) error {
188
206
if tc == nil {
189
207
return componenterror .ErrNilNextConsumer
190
208
}
191
209
r .traceReceiver = trace .New (r .cfg .Name (), tc )
210
+ return nil
211
+ }
212
+
213
+ func (r * otlpReceiver ) registerTraceServers (ctx context.Context ) error {
192
214
if r .serverGRPC != nil {
193
215
collectortrace .RegisterTraceServiceServer (r .serverGRPC , r .traceReceiver )
194
216
}
@@ -203,11 +225,15 @@ func (r *otlpReceiver) registerTraceConsumer(ctx context.Context, tc consumer.Tr
203
225
return nil
204
226
}
205
227
206
- func (r * otlpReceiver ) registerMetricsConsumer (ctx context. Context , mc consumer.MetricsConsumer ) error {
228
+ func (r * otlpReceiver ) registerMetricsConsumer (mc consumer.MetricsConsumer ) error {
207
229
if mc == nil {
208
230
return componenterror .ErrNilNextConsumer
209
231
}
210
232
r .metricsReceiver = metrics .New (r .cfg .Name (), mc )
233
+ return nil
234
+ }
235
+
236
+ func (r * otlpReceiver ) registerMetricsServers (ctx context.Context ) error {
211
237
if r .serverGRPC != nil {
212
238
collectormetrics .RegisterMetricsServiceServer (r .serverGRPC , r .metricsReceiver )
213
239
}
@@ -217,11 +243,15 @@ func (r *otlpReceiver) registerMetricsConsumer(ctx context.Context, mc consumer.
217
243
return nil
218
244
}
219
245
220
- func (r * otlpReceiver ) registerLogsConsumer (ctx context. Context , tc consumer.LogsConsumer ) error {
221
- if tc == nil {
246
+ func (r * otlpReceiver ) registerLogsConsumer (lc consumer.LogsConsumer ) error {
247
+ if lc == nil {
222
248
return componenterror .ErrNilNextConsumer
223
249
}
224
- r .logReceiver = logs .New (r .cfg .Name (), tc )
250
+ r .logReceiver = logs .New (r .cfg .Name (), lc )
251
+ return nil
252
+ }
253
+
254
+ func (r * otlpReceiver ) registerLogsServers (ctx context.Context ) error {
225
255
if r .serverGRPC != nil {
226
256
collectorlog .RegisterLogsServiceServer (r .serverGRPC , r .logReceiver )
227
257
}
0 commit comments