diff --git a/receiver/otlpreceiver/internal/logs/otlp.go b/receiver/otlpreceiver/internal/logs/otlp.go index 5f1de089c7b..724a9fc55af 100644 --- a/receiver/otlpreceiver/internal/logs/otlp.go +++ b/receiver/otlpreceiver/internal/logs/otlp.go @@ -38,12 +38,6 @@ func (r *Receiver) Export(ctx context.Context, req plogotlp.ExportRequest) (plog if numSpans == 0 { return plogotlp.NewExportResponse(), nil } - getCode := func(isPermanent bool) codes.Code { - if isPermanent { - return codes.InvalidArgument - } - return codes.Unavailable - } ctx = r.obsrecv.StartLogsOp(ctx) err := r.nextConsumer.ConsumeLogs(ctx, ld) @@ -52,9 +46,11 @@ func (r *Receiver) Export(ctx context.Context, req plogotlp.ExportRequest) (plog if err != nil { s, ok := status.FromError(err) if !ok { - s = status.New(getCode(consumererror.IsPermanent(err)), err.Error()) - } else { - s = status.New(getCode(consumererror.IsPermanent(err)), s.Message()) + code := codes.Unavailable + if consumererror.IsPermanent(err) { + code = codes.InvalidArgument + } + s = status.New(code, err.Error()) } return plogotlp.NewExportResponse(), s.Err() } diff --git a/receiver/otlpreceiver/internal/metrics/otlp.go b/receiver/otlpreceiver/internal/metrics/otlp.go index 581630fa259..49b3d2715b7 100644 --- a/receiver/otlpreceiver/internal/metrics/otlp.go +++ b/receiver/otlpreceiver/internal/metrics/otlp.go @@ -34,12 +34,6 @@ func New(nextConsumer consumer.Metrics, obsrecv *obsreport.Receiver) *Receiver { // Export implements the service Export metrics func. func (r *Receiver) Export(ctx context.Context, req pmetricotlp.ExportRequest) (pmetricotlp.ExportResponse, error) { md := req.Metrics() - getCode := func(isPermanent bool) codes.Code { - if isPermanent { - return codes.InvalidArgument - } - return codes.Unavailable - } dataPointCount := md.DataPointCount() if dataPointCount == 0 { return pmetricotlp.NewExportResponse(), nil @@ -52,9 +46,11 @@ func (r *Receiver) Export(ctx context.Context, req pmetricotlp.ExportRequest) (p if err != nil { s, ok := status.FromError(err) if !ok { - s = status.New(getCode(consumererror.IsPermanent(err)), err.Error()) - } else { - s = status.New(getCode(consumererror.IsPermanent(err)), s.Message()) + code := codes.Unavailable + if consumererror.IsPermanent(err) { + code = codes.InvalidArgument + } + s = status.New(code, err.Error()) } return pmetricotlp.NewExportResponse(), s.Err() } diff --git a/receiver/otlpreceiver/internal/metrics/otlp_test.go b/receiver/otlpreceiver/internal/metrics/otlp_test.go index 1656a08bc5b..c5164e33c9b 100644 --- a/receiver/otlpreceiver/internal/metrics/otlp_test.go +++ b/receiver/otlpreceiver/internal/metrics/otlp_test.go @@ -48,7 +48,7 @@ func TestExport_EmptyRequest(t *testing.T) { require.NotNil(t, resp) } -func TestExport_ErrorConsumer(t *testing.T) { +func TestExport_NonPermanentErrorConsumer(t *testing.T) { md := testdata.GenerateMetrics(1) req := pmetricotlp.NewExportRequestFromMetrics(md) @@ -57,6 +57,7 @@ func TestExport_ErrorConsumer(t *testing.T) { assert.EqualError(t, err, "rpc error: code = Unavailable desc = my error") assert.Equal(t, pmetricotlp.ExportResponse{}, resp) } + func TestExport_PermanentErrorConsumer(t *testing.T) { ld := testdata.GenerateMetrics(1) req := pmetricotlp.NewExportRequestFromMetrics(ld) diff --git a/receiver/otlpreceiver/internal/trace/otlp.go b/receiver/otlpreceiver/internal/trace/otlp.go index 217596e1980..b6dc7f9bfc3 100644 --- a/receiver/otlpreceiver/internal/trace/otlp.go +++ b/receiver/otlpreceiver/internal/trace/otlp.go @@ -34,12 +34,6 @@ func New(nextConsumer consumer.Traces, obsrecv *obsreport.Receiver) *Receiver { // Export implements the service Export traces func. func (r *Receiver) Export(ctx context.Context, req ptraceotlp.ExportRequest) (ptraceotlp.ExportResponse, error) { td := req.Traces() - getCode := func(isPermanent bool) codes.Code { - if isPermanent { - return codes.InvalidArgument - } - return codes.Unavailable - } // We need to ensure that it propagates the receiver name as a tag numSpans := td.SpanCount() if numSpans == 0 { @@ -54,9 +48,11 @@ func (r *Receiver) Export(ctx context.Context, req ptraceotlp.ExportRequest) (pt if err != nil { s, ok := status.FromError(err) if !ok { - s = status.New(getCode(consumererror.IsPermanent(err)), err.Error()) - } else { - s = status.New(getCode(consumererror.IsPermanent(err)), s.Message()) + code := codes.Unavailable + if consumererror.IsPermanent(err) { + code = codes.InvalidArgument + } + s = status.New(code, err.Error()) } return ptraceotlp.NewExportResponse(), s.Err() } diff --git a/receiver/otlpreceiver/internal/trace/otlp_test.go b/receiver/otlpreceiver/internal/trace/otlp_test.go index c7b0807ad3a..a964131d593 100644 --- a/receiver/otlpreceiver/internal/trace/otlp_test.go +++ b/receiver/otlpreceiver/internal/trace/otlp_test.go @@ -46,7 +46,7 @@ func TestExport_EmptyRequest(t *testing.T) { assert.NotNil(t, resp, "The response is missing") } -func TestExport_ErrorConsumer(t *testing.T) { +func TestExport_NonPermanentErrorConsumer(t *testing.T) { td := testdata.GenerateTraces(1) req := ptraceotlp.NewExportRequestFromTraces(td)