@@ -25,6 +25,7 @@ import (
2525 "google.golang.org/grpc/metadata"
2626
2727 "github.com/open-telemetry/opentelemetry-collector-contrib/internal/otelarrow/compression/zstd"
28+ "github.com/open-telemetry/opentelemetry-collector-contrib/internal/otelarrow/netstats"
2829)
2930
3031var (
@@ -40,6 +41,7 @@ type metadataExporter struct {
4041
4142 metadataKeys []string
4243 exporters sync.Map
44+ netReporter * netstats.NetworkReporter
4345
4446 userAgent string
4547
@@ -53,6 +55,10 @@ var _ exp = (*metadataExporter)(nil)
5355
5456func newMetadataExporter (cfg component.Config , set exporter.Settings , streamClientFactory streamClientFactory ) (exp , error ) {
5557 oCfg := cfg .(* Config )
58+ netReporter , err := netstats .NewExporterNetworkReporter (set )
59+ if err != nil {
60+ return nil , err
61+ }
5662 userAgent := fmt .Sprintf ("%s/%s (%s/%s)" ,
5763 set .BuildInfo .Description , set .BuildInfo .Version , runtime .GOOS , runtime .GOARCH )
5864
@@ -69,13 +75,15 @@ func newMetadataExporter(cfg component.Config, set exporter.Settings, streamClie
6975 }
7076 sort .Strings (mks )
7177 if len (mks ) == 0 {
72- return newExporter (cfg , set , streamClientFactory , userAgent )
78+ return newExporter (cfg , set , streamClientFactory , userAgent , netReporter )
7379 }
7480 return & metadataExporter {
7581 config : oCfg ,
7682 settings : set ,
7783 scf : streamClientFactory ,
7884 metadataKeys : mks ,
85+ userAgent : userAgent ,
86+ netReporter : netReporter ,
7987 }, nil
8088}
8189
@@ -135,19 +143,19 @@ func (e *metadataExporter) pushLogs(ctx context.Context, ld plog.Logs) error {
135143}
136144
137145func (e * metadataExporter ) getOrCreateExporter (ctx context.Context , s attribute.Set , md metadata.MD ) (exp , error ) {
138- v , ok := e .exporters .Load (s )
139- if ok {
140- return v .(exp ), nil
141- }
142-
143146 e .lock .Lock ()
144147 defer e .lock .Unlock ()
145148
146149 if e .config .MetadataCardinalityLimit != 0 && e .size >= int (e .config .MetadataCardinalityLimit ) {
147150 return nil , errTooManyExporters
148151 }
149152
150- newExp , err := newExporter (e .config , e .settings , e .scf , e .userAgent )
153+ v , ok := e .exporters .Load (s )
154+ if ok {
155+ return v .(exp ), nil
156+ }
157+
158+ newExp , err := newExporter (e .config , e .settings , e .scf , e .userAgent , e .netReporter )
151159 if err != nil {
152160 return nil , fmt .Errorf ("failed to create exporter: %w" , err )
153161 }
@@ -164,6 +172,7 @@ func (e *metadataExporter) getOrCreateExporter(ctx context.Context, s attribute.
164172 e .exporters .Delete (s )
165173 return nil , fmt .Errorf ("failed to start exporter: %w" , err )
166174 }
175+
167176 e .size ++
168177 }
169178
0 commit comments