Skip to content

Commit 6e144e8

Browse files
authored
Set wait for ready in Jaeger gRPC exporter (#899)
* Make wait for ready configurable in gRPC exporters Signed-off-by: Pavol Loffay <ploffay@redhat.com> * Fix Signed-off-by: Pavol Loffay <ploffay@redhat.com>
1 parent 2de5464 commit 6e144e8

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

config/configgrpc/configgrpc.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ type GRPCSettings struct {
5656
// The keepalive parameters for client gRPC. See grpc.WithKeepaliveParams
5757
// (https://godoc.org/google.golang.org/grpc#WithKeepaliveParams).
5858
KeepaliveParameters *KeepaliveConfig `mapstructure:"keepalive"`
59+
60+
// WaitForReady parameter configures client to wait for ready state before sending data.
61+
// (https://github.com/grpc/grpc/blob/master/doc/wait-for-ready.md)
62+
WaitForReady bool `mapstructure:"wait_for_ready"`
5963
}
6064

6165
// KeepaliveConfig exposes the keepalive.ClientParameters to be used by the exporter.

exporter/jaegerexporter/exporter.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,9 @@ func New(config *Config) (component.TraceExporter, error) {
4646

4747
collectorServiceClient := jaegerproto.NewCollectorServiceClient(client)
4848
s := &protoGRPCSender{
49-
client: collectorServiceClient,
50-
metadata: metadata.New(config.GRPCSettings.Headers),
49+
client: collectorServiceClient,
50+
metadata: metadata.New(config.GRPCSettings.Headers),
51+
waitForReady: config.WaitForReady,
5152
}
5253

5354
exp, err := exporterhelper.NewTraceExporter(config, s.pushTraceData)
@@ -58,8 +59,9 @@ func New(config *Config) (component.TraceExporter, error) {
5859
// protoGRPCSender forwards spans encoded in the jaeger proto
5960
// format, to a grpc server.
6061
type protoGRPCSender struct {
61-
client jaegerproto.CollectorServiceClient
62-
metadata metadata.MD
62+
client jaegerproto.CollectorServiceClient
63+
metadata metadata.MD
64+
waitForReady bool
6365
}
6466

6567
func (s *protoGRPCSender) pushTraceData(
@@ -80,7 +82,7 @@ func (s *protoGRPCSender) pushTraceData(
8082
for _, batch := range batches {
8183
_, err = s.client.PostSpans(
8284
ctx,
83-
&jaegerproto.PostSpansRequest{Batch: *batch})
85+
&jaegerproto.PostSpansRequest{Batch: *batch}, grpc.WaitForReady(s.waitForReady))
8486
if err != nil {
8587
return td.SpanCount() - sentSpans, err
8688
}

exporter/otlpexporter/exporter.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,14 +211,14 @@ func (e *exporterImp) exportRequest(ctx context.Context, perform func(ctx contex
211211

212212
func (e *exporterImp) exportTrace(ctx context.Context, request *otlptracecol.ExportTraceServiceRequest) error {
213213
return e.exportRequest(ctx, func(ctx context.Context) error {
214-
_, err := e.traceExporter.Export(ctx, request)
214+
_, err := e.traceExporter.Export(ctx, request, grpc.WaitForReady(e.config.WaitForReady))
215215
return err
216216
})
217217
}
218218

219219
func (e *exporterImp) exportMetrics(ctx context.Context, request *otlpmetriccol.ExportMetricsServiceRequest) error {
220220
return e.exportRequest(ctx, func(ctx context.Context) error {
221-
_, err := e.metricExporter.Export(ctx, request)
221+
_, err := e.metricExporter.Export(ctx, request, grpc.WaitForReady(e.config.WaitForReady))
222222
return err
223223
})
224224
}

0 commit comments

Comments
 (0)