@@ -29,6 +29,7 @@ import (
2929 "google.golang.org/grpc/metadata"
3030
3131 "go.opentelemetry.io/collector/component"
32+ "go.opentelemetry.io/collector/config/configgrpc"
3233 "go.opentelemetry.io/collector/consumer"
3334 "go.opentelemetry.io/collector/consumer/consumererror"
3435 "go.opentelemetry.io/collector/consumer/pdata"
@@ -40,24 +41,7 @@ import (
4041// The exporter name is the name to be used in the observability of the exporter.
4142// The collectorEndpoint should be of the form "hostname:14250" (a gRPC target).
4243func newTracesExporter (cfg * Config , logger * zap.Logger ) (component.TracesExporter , error ) {
43- opts , err := cfg .GRPCClientSettings .ToDialOptions ()
44- if err != nil {
45- return nil , err
46- }
47-
48- conn , err := grpc .Dial (cfg .GRPCClientSettings .Endpoint , opts ... )
49- if err != nil {
50- return nil , err
51- }
52-
53- collectorServiceClient := jaegerproto .NewCollectorServiceClient (conn )
54- s := newProtoGRPCSender (logger ,
55- cfg .ID ().String (),
56- collectorServiceClient ,
57- metadata .New (cfg .GRPCClientSettings .Headers ),
58- cfg .WaitForReady ,
59- conn ,
60- )
44+ s := newProtoGRPCSender (cfg , logger )
6145 return exporterhelper .NewTracesExporter (
6246 cfg , logger , s .pushTraceData ,
6347 exporterhelper .WithCapabilities (consumer.Capabilities {MutatesData : false }),
@@ -82,23 +66,21 @@ type protoGRPCSender struct {
8266 connStateReporterInterval time.Duration
8367 stateChangeCallbacks []func (connectivity.State )
8468
85- stopCh chan struct {}
86- stopped bool
87- stopLock sync.Mutex
69+ stopCh chan struct {}
70+ stopped bool
71+ stopLock sync.Mutex
72+ clientSettings * configgrpc.GRPCClientSettings
8873}
8974
90- func newProtoGRPCSender (logger * zap. Logger , name string , cl jaegerproto. CollectorServiceClient , md metadata. MD , waitForReady bool , conn stateReporter ) * protoGRPCSender {
75+ func newProtoGRPCSender (cfg * Config , logger * zap. Logger ) * protoGRPCSender {
9176 s := & protoGRPCSender {
92- name : name ,
93- logger : logger ,
94- client : cl ,
95- metadata : md ,
96- waitForReady : waitForReady ,
97-
98- conn : conn ,
77+ name : cfg .ID ().String (),
78+ logger : logger ,
79+ metadata : metadata .New (cfg .GRPCClientSettings .Headers ),
80+ waitForReady : cfg .WaitForReady ,
9981 connStateReporterInterval : time .Second ,
100-
101- stopCh : make ( chan struct {}) ,
82+ stopCh : make ( chan struct {}),
83+ clientSettings : & cfg . GRPCClientSettings ,
10284 }
10385 s .AddStateChangeCallback (s .onStateChange )
10486 return s
@@ -144,7 +126,23 @@ func (s *protoGRPCSender) shutdown(context.Context) error {
144126 return nil
145127}
146128
147- func (s * protoGRPCSender ) start (context.Context , component.Host ) error {
129+ func (s * protoGRPCSender ) start (_ context.Context , host component.Host ) error {
130+ if s .clientSettings == nil {
131+ return fmt .Errorf ("client settings not found" )
132+ }
133+ opts , err := s .clientSettings .ToDialOptions ()
134+ if err != nil {
135+ return err
136+ }
137+
138+ conn , err := grpc .Dial (s .clientSettings .Endpoint , opts ... )
139+ if err != nil {
140+ return err
141+ }
142+
143+ s .client = jaegerproto .NewCollectorServiceClient (conn )
144+ s .conn = conn
145+
148146 go s .startConnectionStatusReporter ()
149147 return nil
150148}
0 commit comments