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

[otlp-exporter-base] refactor exporters to use a pluggable transport layer #4116

Open
pichlermarc opened this issue Sep 4, 2023 · 8 comments

Comments

@pichlermarc
Copy link
Member

pichlermarc commented Sep 4, 2023

Is your feature request related to a problem? Please describe.

Currently, transport, configuration (options and environment variables) as well as serialization code are all mixed together in the OTLP exporters, making it increasingly hard to modify and test them. Further, a significant amount of logic and tests are duplicated across multiple OTLP exporters.

Describe the solution you'd like

This issue tracks refactoring the OTLP exporters so that the transport code is a pluggable component that takes a subset of the configuration passed to the exporter. This way we

  • can test the behavior of the transport layer individually of the rest of the exporter
  • in the future - may also allow users to pass their hand-rolled transport to the exporter
    • This is useful if the transport implementations provided by this repo are insufficient. One example would be providing polyfills for features that are not supported on browsers that have reached their EOL.

This transport component should not directly access any environment variables mixed in with other code as is currently done in the exporter. Determining its configuration should happen before instantiation; a finished configuration object should be passed to it.

Out of scope for this issue:

  • Refactoring configuration code beyond what is necessary for the pluggable transport layer
  • Refactoring serialization code beyond what is necessary for the pluggable transport layer
  • Refactoring non-OTLP exporters to use this pluggable transport layer

Additional context

@pichlermarc
Copy link
Member Author

I'm working on this; I'm starting with otlp/http protobuf exporters first.

Copy link

github-actions bot commented Dec 4, 2023

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 14 days.

Copy link

github-actions bot commented Feb 5, 2024

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 14 days.

@github-actions github-actions bot added the stale label Feb 5, 2024
@pichlermarc
Copy link
Member Author

This is in progress #4151 does change the gRPC exporters, a draft for http is available in #4415.

@pichlermarc pichlermarc removed the stale label Feb 5, 2024
@pichlermarc
Copy link
Member Author

pichlermarc commented Feb 13, 2024

This is work in progress. Here's a list of things that need to be done:

Copy link

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 14 days.

Copy link

github-actions bot commented Jul 1, 2024

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 14 days.

@pichlermarc
Copy link
Member Author

This issue ended up with a super-large scope. The essential parts of this are complete, but we have not exposed most of it to the end-user. I'm considering spinning off an issue that tracks this explicitly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant