-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Extract pdata into a separate Go Module #3104
Comments
FYI @jacobmarble if we do this you can depend on the new module in your https://github.com/influxdata/influxdb-observability/tree/main/otel2influx and avoid unnecessary serialization/deserialization. |
@tigrannajaryan spot on! I would love to depend on pdata instead of the generated protobufs directly, as long as I can also implement a gRPC listener/client (outside of otelcol/otelcol-contrib) with the same package. |
We, at AppDynamics, recently stumbled on this need too and it would greatly help avoid unnecessary serialization/deserialization. And in order to avoid code duplication we decided to convert OTLP > pdata > OTLP when the data cross boundaries but this introduces latencies in processing. |
@tigrannajaryan does this issue block #3323 ? I would like to merge #3323 as-is, then refactor influxdbexporter, influxdbreceiver, and the corresponding Telegraf plugins, in a separate work unit. |
No, it does not. We can refactor later. |
Is this a must-have for GA? Can this be moved to the phase 2 backlog? @tigrannajaryan please advise. |
This is a must-have since it part of the public API used by components. |
@tigrannajaryan can you help me with a proposed full "package" name for this?
Please help me pick a winner. |
@bogdandrutu I incline towards |
We've already got I'm somewhat wary of introducing gRPC client/listeners based on |
pdata and otlp are the same except the internal representation. On the wire they are exactly the same, the reason to have pdata is because we want internally to generate faster more optimal code than what proto generates. So the answer is on the wire will always be OTLP, but internally you have a choice to represent things as generated protobufs or pdata which we aim to make it faster marshaling/unmarshaling |
Remove also the Nil vs Empty tests since in pdata they are equivalent. Signed-off-by: Bogdan Drutu <[email protected]> Updates open-telemetry#3104
Signed-off-by: Bogdan Drutu <[email protected]> Updates open-telemetry#3104
#3399) Signed-off-by: Bogdan Drutu <[email protected]> Updates #3104
Updates #3104 Signed-off-by: Bogdan Drutu <[email protected]>
Updates #3104 Signed-off-by: Bogdan Drutu [email protected]
@jacobmarble @appdashishmehta this is now done, we have https://github.com/open-telemetry/opentelemetry-collector/tree/main/model module with It would be great to validate that this works for your use case before we freeze the 1.0 API as part of the planned GA release coming soon. If you have any feedback please do let us know. |
@tigrannajaryan github.com/influxdata/influxdb-observability now uses github.com/open-telemetry/opentelemetry-collector/model/pdata instead of its own generated protos. The update PR for otelcontribcol is open-telemetry/opentelemetry-collector-contrib#4277 The only trouble I have is that I can't reliably compare two objects from the Additionally, I used package |
Problem Description
pdata is currently part of the Collector core. It makes difficult/impossible to use it in external repositories which need a way to work with OTLP in-memory data which is fast, is stable API and is compatible with Collector codebase and is reusable in the Collector codebase.
Examples of how this creates a problem:
Suggestion
Extract pdata into a separate Go Module. Either keep in this repository or make it a completely new repository. This should also include Gogo protobuf generation (which is internal currently and will remain internal in the new pdata module).
UPDATE (based on @jacobmarble comment below). We need to make sure the new module exports the gRPC server/listener as public symbols so that users of this new module can implement OTLP/gRPC protocol.
Proposed plan
go.opentelemetry.io/collector/model/pdata
but notgo.opentelemetry.io/model/pdata
. Otherwise a new repo is needed or share the go-proto repo.goldendataset
for traces to not depend on protos. #3229fileexporter
.pdata.Traces
.pdata
.The text was updated successfully, but these errors were encountered: