Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Sending traces with compression from OTel collector to OTel traces source in a pipeline results in 500 error #3670

Closed
oeyh opened this issue Nov 15, 2023 · 1 comment
Labels
bug Something isn't working untriaged

Comments

@oeyh
Copy link
Collaborator

oeyh commented Nov 15, 2023

Describe the bug
Sending traces with compression from OTel collector to OTel traces source in a pipeline results in 500 error.

To Reproduce
Steps to reproduce the behavior:

  1. Change otel-collector-config.yaml in jaeger-hotrod example to use otlphttp exporter:
receivers:
  jaeger:
    protocols:
      grpc:

exporters:
  otlphttp:
    traces_endpoint: http://data-prepper:21890/v1/traces
#    compression: none
    tls:
      insecure: false
      insecure_skip_verify: true
  logging:

service:
  pipelines:
    traces:
      receivers: [jaeger]
      exporters: [logging, otlphttp]

and change the corresponding OTel trace source config in trace_analytics_no_ssl_2x.yml to:

entry-pipeline:
  delay: "100"
  source:
    otel_trace_source:
      path: "/v1/traces"
      ssl: false
      unframed_requests: true
... ...
  1. Run the example
  2. With compression: none option (compression disabled), everything works as expected; without compression: none option, we can see error messages in OTel collector like this:
2023-11-15T17:33:54.261Z	info	exporterhelper/queued_retry.go:426	Exporting failed. Will retry the request after interval.	{"kind": "exporter", "data_type": "traces", "name": "otlphttp", "error": "error exporting items, request to http://data-prepper:21890/v1/traces responded with HTTP Status Code 500", "interval": "42.666367768s"}

With the recent improvement in logging (#3658), we can now see exception in Data Prepper logs as well:

2023-11-15T17:34:51,616 [armeria-common-worker-epoll-3-8] ERROR org.opensearch.dataprepper.GrpcRequestExceptionHandler - Unexpected exception handling gRPC request
io.grpc.StatusRuntimeException: INTERNAL: Invalid protobuf byte sequence
......
Caused by: com.google.protobuf.InvalidProtocolBufferException$InvalidWireTypeException: Protocol message tag had invalid wire type.

Expected behavior
Otel sources should work with compressed data from OTel collector

Screenshots
If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

  • OS: [e.g. Ubuntu 20.04 LTS]
  • Version [e.g. 22]

Additional context
This might be a regression. We had compression supported through #2702

@oeyh
Copy link
Collaborator Author

oeyh commented Nov 15, 2023

My mistake. Didn't realize that there's a compression option on the source config. After setting that option, the example is working with compression enabled on the collector.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working untriaged
Projects
Archived in project
Development

No branches or pull requests

1 participant