@@ -122,7 +122,7 @@ func runOCAgent() {
122122 commonMetricsSink := multiconsumer .NewMetricsProcessor (metricsExporters )
123123
124124 // Add other receivers here as they are implemented
125- ocReceiverDoneFn , err := runOCReceiver (logger , & agentConfig , commonSpanSink , commonMetricsSink )
125+ ocReceiverDoneFn , err := runOCReceiver (logger , & agentConfig , commonSpanSink , commonMetricsSink , asyncErrorChan )
126126 if err != nil {
127127 log .Fatal (err )
128128 }
@@ -139,15 +139,15 @@ func runOCAgent() {
139139 // If the Zipkin receiver is enabled, then run it
140140 if agentConfig .ZipkinReceiverEnabled () {
141141 zipkinReceiverAddr := agentConfig .ZipkinReceiverAddress ()
142- zipkinReceiverDoneFn , err := runZipkinReceiver (zipkinReceiverAddr , commonSpanSink )
142+ zipkinReceiverDoneFn , err := runZipkinReceiver (zipkinReceiverAddr , commonSpanSink , asyncErrorChan )
143143 if err != nil {
144144 log .Fatal (err )
145145 }
146146 closeFns = append (closeFns , zipkinReceiverDoneFn )
147147 }
148148
149149 if agentConfig .ZipkinScribeReceiverEnabled () {
150- zipkinScribeDoneFn , err := runZipkinScribeReceiver (agentConfig .ZipkinScribeConfig (), commonSpanSink )
150+ zipkinScribeDoneFn , err := runZipkinScribeReceiver (agentConfig .ZipkinScribeConfig (), commonSpanSink , asyncErrorChan )
151151 if err != nil {
152152 log .Fatal (err )
153153 }
@@ -156,7 +156,7 @@ func runOCAgent() {
156156
157157 if agentConfig .JaegerReceiverEnabled () {
158158 collectorHTTPPort , collectorThriftPort := agentConfig .JaegerReceiverPorts ()
159- jaegerDoneFn , err := runJaegerReceiver (collectorThriftPort , collectorHTTPPort , commonSpanSink )
159+ jaegerDoneFn , err := runJaegerReceiver (collectorThriftPort , collectorHTTPPort , commonSpanSink , asyncErrorChan )
160160 if err != nil {
161161 log .Fatal (err )
162162 }
@@ -165,7 +165,7 @@ func runOCAgent() {
165165
166166 // If the Prometheus receiver is enabled, then run it.
167167 if agentConfig .PrometheusReceiverEnabled () {
168- promDoneFn , err := runPrometheusReceiver (viperCfg , commonMetricsSink )
168+ promDoneFn , err := runPrometheusReceiver (viperCfg , commonMetricsSink , asyncErrorChan )
169169 if err != nil {
170170 log .Fatal (err )
171171 }
@@ -214,14 +214,16 @@ func runZPages(port int) func() error {
214214 return srv .Close
215215}
216216
217- func runOCReceiver (logger * zap.Logger , acfg * config.Config , tdp consumer.TraceConsumer , mdp consumer.MetricsConsumer ) (doneFn func () error , err error ) {
217+ func runOCReceiver (logger * zap.Logger , acfg * config.Config , tc consumer.TraceConsumer , mc consumer.MetricsConsumer , asyncErrorChan chan <- error ) (doneFn func () error , err error ) {
218218 tlsCredsOption , hasTLSCreds , err := acfg .OpenCensusReceiverTLSCredentialsServerOption ()
219219 if err != nil {
220220 return nil , fmt .Errorf ("OpenCensus receiver TLS Credentials: %v" , err )
221221 }
222222 addr := acfg .OpenCensusReceiverAddress ()
223223 corsOrigins := acfg .OpenCensusReceiverCorsAllowedOrigins ()
224224 ocr , err := opencensusreceiver .New (addr ,
225+ tc ,
226+ mc ,
225227 tlsCredsOption ,
226228 opencensusreceiver .WithCorsOrigins (corsOrigins ))
227229
@@ -242,19 +244,19 @@ func runOCReceiver(logger *zap.Logger, acfg *config.Config, tdp consumer.TraceCo
242244
243245 switch {
244246 case acfg .CanRunOpenCensusTraceReceiver () && acfg .CanRunOpenCensusMetricsReceiver ():
245- if err := ocr .Start (ctx , tdp , mdp ); err != nil {
247+ if err := ocr .Start (ctx ); err != nil {
246248 return nil , fmt .Errorf ("failed to start Trace and Metrics Receivers: %v" , err )
247249 }
248250 log .Printf ("Running OpenCensus Trace and Metrics receivers as a gRPC service at %q" , addr )
249251
250252 case acfg .CanRunOpenCensusTraceReceiver ():
251- if err := ocr .StartTraceReception (ctx , tdp ); err != nil {
253+ if err := ocr .StartTraceReception (ctx , asyncErrorChan ); err != nil {
252254 return nil , fmt .Errorf ("failed to start TraceReceiver: %v" , err )
253255 }
254256 log .Printf ("Running OpenCensus Trace receiver as a gRPC service at %q" , addr )
255257
256258 case acfg .CanRunOpenCensusMetricsReceiver ():
257- if err := ocr .StartMetricsReception (ctx , mdp ); err != nil {
259+ if err := ocr .StartMetricsReception (ctx , asyncErrorChan ); err != nil {
258260 return nil , fmt .Errorf ("failed to start MetricsReceiver: %v" , err )
259261 }
260262 log .Printf ("Running OpenCensus Metrics receiver as a gRPC service at %q" , addr )
@@ -271,19 +273,20 @@ func runOCReceiver(logger *zap.Logger, acfg *config.Config, tdp consumer.TraceCo
271273 return doneFn , nil
272274}
273275
274- func runJaegerReceiver (collectorThriftPort , collectorHTTPPort int , next consumer.TraceConsumer ) (doneFn func () error , err error ) {
275- jtr , err := jaegerreceiver . New ( context . Background (), & jaegerreceiver.Configuration {
276+ func runJaegerReceiver (collectorThriftPort , collectorHTTPPort int , next consumer.TraceConsumer , asyncErrorChan chan <- error ) (doneFn func () error , err error ) {
277+ config := & jaegerreceiver.Configuration {
276278 CollectorThriftPort : collectorThriftPort ,
277279 CollectorHTTPPort : collectorHTTPPort ,
278280
279281 // TODO: (@odeke-em, @pjanotti) send a change
280282 // to dynamically retrieve the Jaeger Agent's ports
281283 // and not use their defaults of 5778, 6831, 6832
282- })
284+ }
285+ jtr , err := jaegerreceiver .New (context .Background (), config , next )
283286 if err != nil {
284287 return nil , fmt .Errorf ("failed to create new Jaeger receiver: %v" , err )
285288 }
286- if err := jtr .StartTraceReception (context .Background (), next ); err != nil {
289+ if err := jtr .StartTraceReception (context .Background (), asyncErrorChan ); err != nil {
287290 return nil , fmt .Errorf ("failed to start Jaeger receiver: %v" , err )
288291 }
289292 doneFn = func () error {
@@ -293,13 +296,13 @@ func runJaegerReceiver(collectorThriftPort, collectorHTTPPort int, next consumer
293296 return doneFn , nil
294297}
295298
296- func runZipkinReceiver (addr string , next consumer.TraceConsumer ) (doneFn func () error , err error ) {
297- zi , err := zipkinreceiver .New (addr )
299+ func runZipkinReceiver (addr string , next consumer.TraceConsumer , asyncErrorChan chan <- error ) (doneFn func () error , err error ) {
300+ zi , err := zipkinreceiver .New (addr , next )
298301 if err != nil {
299302 return nil , fmt .Errorf ("failed to create the Zipkin receiver: %v" , err )
300303 }
301304
302- if err := zi .StartTraceReception (context .Background (), next ); err != nil {
305+ if err := zi .StartTraceReception (context .Background (), asyncErrorChan ); err != nil {
303306 return nil , fmt .Errorf ("cannot start Zipkin receiver with address %q: %v" , addr , err )
304307 }
305308 doneFn = func () error {
@@ -309,13 +312,13 @@ func runZipkinReceiver(addr string, next consumer.TraceConsumer) (doneFn func()
309312 return doneFn , nil
310313}
311314
312- func runZipkinScribeReceiver (config * config.ScribeReceiverConfig , next consumer.TraceConsumer ) (doneFn func () error , err error ) {
313- zs , err := zipkinscribereceiver .NewReceiver (config .Address , config .Port , config .Category )
315+ func runZipkinScribeReceiver (config * config.ScribeReceiverConfig , next consumer.TraceConsumer , asyncErrorChan chan <- error ) (doneFn func () error , err error ) {
316+ zs , err := zipkinscribereceiver .NewReceiver (config .Address , config .Port , config .Category , next )
314317 if err != nil {
315318 return nil , fmt .Errorf ("failed to create the Zipkin Scribe receiver: %v" , err )
316319 }
317320
318- if err := zs .StartTraceReception (context .Background (), next ); err != nil {
321+ if err := zs .StartTraceReception (context .Background (), asyncErrorChan ); err != nil {
319322 return nil , fmt .Errorf ("cannot start Zipkin Scribe receiver with %v: %v" , config , err )
320323 }
321324 doneFn = func () error {
@@ -325,12 +328,12 @@ func runZipkinScribeReceiver(config *config.ScribeReceiverConfig, next consumer.
325328 return doneFn , nil
326329}
327330
328- func runPrometheusReceiver (v * viper.Viper , next consumer.MetricsConsumer ) (doneFn func () error , err error ) {
329- pmr , err := prometheusreceiver .New (v .Sub ("receivers.prometheus" ))
331+ func runPrometheusReceiver (v * viper.Viper , next consumer.MetricsConsumer , asyncErrorChan chan <- error ) (doneFn func () error , err error ) {
332+ pmr , err := prometheusreceiver .New (v .Sub ("receivers.prometheus" ), next )
330333 if err != nil {
331334 return nil , err
332335 }
333- if err := pmr .StartMetricsReception (context .Background (), next ); err != nil {
336+ if err := pmr .StartMetricsReception (context .Background (), asyncErrorChan ); err != nil {
334337 return nil , err
335338 }
336339 doneFn = func () error {
0 commit comments