-
Notifications
You must be signed in to change notification settings - Fork 2.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
Implement Storage API v2 that operates on OTLP batches #5079
Comments
## Which problem is this PR solving? - Part of #5079 - Avoid triple marshaling due to our use of internally generated OTLP proto types, which prevents us from directly using the output of jaeger->otlp conversion from collector contrib. ## Description of the changes - 🛑 breaking: the JSON format is changed to match [OTLP-JSON][otlp-json], specifically - the trace & span IDs are returned as hex-encoded strings, not base64 as required by Proto-JSON - enums are returned as integers, not strings - Use Proposal 1 from open-telemetry/opentelemetry-collector#9233 (comment) - API-V3 proto is already declared to use official OTLP types; remove the overrides to our internally generated OTLP proto types - Replace `SpansResponseChunk` with official `otlp.TracesData`, but override it internally to use a custom type - Depends on jaegertracing/jaeger-idl#103 ## How was this change tested? - Unit tests [otlp-json]: https://github.com/open-telemetry/opentelemetry-proto/blob/main/docs/specification.md#json-protobuf-encoding --------- Signed-off-by: Yuri Shkuro <[email protected]>
Can I take this issue ? |
you can try - this is a design issue |
@yurishkuro For the read path implementation, do we just want to expand the v2 adapter to implement |
Not quite, please see the Google doc. |
…reader (#6221) ## Which problem is this PR solving? - Towards #5079 ## Description of the changes - This PR implements the v2 `spanstore.Reader` interface in the factory adapter through the `TraceReader`, which is currently just a wrapper around the v1 `spanstore.Reader`. The `TraceReader` provides a function `GetV1Reader` that exposes the underlying v1 reader which will be used in #6170. ## How was this change tested? - Added unit tests for new functions ## Checklist - [x] I have read https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md - [x] I have signed all commits - [x] I have added unit tests for the new functionality - [x] I have run lint and test steps successfully - for `jaeger`: `make lint test` - for `jaeger-ui`: `yarn lint` and `yarn test` --------- Signed-off-by: Mahad Zaryab <[email protected]>
## Which problem is this PR solving? - Towards #5079 ## Description of the changes - Implemented the read path for the v2 storage interface. This path currently just wraps a v1 span reader and exposes a static method to access the v1 reader. - Change the jaeger query extension to initialize a v2 storage factory and obtain the v1 span reader from it. - This will unblock the development of more efficient v2 storage implementations, like ClickHouse. ## How was this change tested? - Added unit tests for new functionality ## Checklist - [x] I have read https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md - [x] I have signed all commits - [x] I have added unit tests for the new functionality - [x] I have run lint and test steps successfully - for `jaeger`: `make lint test` - for `jaeger-ui`: `yarn lint` and `yarn test` --------- Signed-off-by: Mahad Zaryab <[email protected]> Signed-off-by: Mahad Zaryab <[email protected]> Signed-off-by: Yuri Shkuro <[email protected]> Signed-off-by: Yuri Shkuro <[email protected]> Co-authored-by: Yuri Shkuro <[email protected]> Co-authored-by: Yuri Shkuro <[email protected]>
@yurishkuro Here are the remaining usages of
Do you have any thoughts on how we should proceed with the above? |
Good question. We might be missing an abstraction layer. Let's think about what it means to define a Basically, we have two options:
I think to avoid breaking 2.x config compatibility we should stick with option 1 and maybe in the future we can pull the roles apart similar to how |
@yurishkuro Got it - so does this mean that our |
yes, I think so |
## Which problem is this PR solving? - Towards #5079 ## Description of the changes - This PR creates a new factory in the `depstore` package for the DependencyReader and exposes a `CreateDependencyReader` function in the `factoryadapter` - This PR also changes some interface return types to structs because some structs implement multiple interfaces. - The new factory was integrated into the query service and the callsites were changed to use the v2 factory instead of the v1 factory to initialize the dependency reader. ## How was this change tested? - CI / Unit Tests ## Checklist - [x] I have read https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md - [x] I have signed all commits - [x] I have added unit tests for the new functionality - [x] I have run lint and test steps successfully - for `jaeger`: `make lint test` - for `jaeger-ui`: `yarn lint` and `yarn test` --------- Signed-off-by: Mahad Zaryab <[email protected]> Signed-off-by: Mahad Zaryab <[email protected]>
…ry adapter (#6325) ## Which problem is this PR solving? - Towards #5079 ## Description of the changes - This PR implements `GetServices` and `GetOperations` in the v2 `factoryadapter` ## How was this change tested? - Added unit tests ## Checklist - [x] I have read https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md - [x] I have signed all commits - [x] I have added unit tests for the new functionality - [x] I have run lint and test steps successfully - for `jaeger`: `make lint test` - for `jaeger-ui`: `yarn lint` and `yarn test` --------- Signed-off-by: Mahad Zaryab <[email protected]>
## Which problem is this PR solving? - Towards #5079 ## Description of the changes - This PR implements `FindTraceIDs` in the v2 factory adapter ## How was this change tested? - Added unit tests ## Checklist - [x] I have read https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md - [x] I have signed all commits - [x] I have added unit tests for the new functionality - [x] I have run lint and test steps successfully - for `jaeger`: `make lint test` - for `jaeger-ui`: `yarn lint` and `yarn test` --------- Signed-off-by: Mahad Zaryab <[email protected]>
## Which problem is this PR solving? - Towards #5079 ## Description of the changes - This PR implements `FindTraces` in the v2 factory adapter ## How was this change tested? - Added unit tests ## Checklist - [x] I have read https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md - [x] I have signed all commits - [x] I have added unit tests for the new functionality - [x] I have run lint and test steps successfully - for `jaeger`: `make lint test` - for `jaeger-ui`: `yarn lint` and `yarn test` --------- Signed-off-by: Mahad Zaryab <[email protected]>
## Which problem is this PR solving? - Towards #5079 ## Description of the changes - This PR implements `GetTrace` in the v2 factory adapter ## How was this change tested? - Added unit tests ## Checklist - [x] I have read https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md - [x] I have signed all commits - [x] I have added unit tests for the new functionality - [x] I have run lint and test steps successfully - for `jaeger`: `make lint test` - for `jaeger-ui`: `yarn lint` and `yarn test` --------- Signed-off-by: Mahad Zaryab <[email protected]>
Summary
In OTEL-based Jaeger-v2 we don't want to force OTLP trace data to go through unnecessary transformation into Jaeger's current data model. We want to define a V2 version of the storage API so that the OTLP data can be passed through the receiver-exporter pipeline without additional conversions, for better efficiency.
Problem
More discussion in the doc https://docs.google.com/document/d/1s4_6VgAS7qAVp6iEm5KYvpiGw3h2Ja5T5HpKo29iv00/edit#heading=h.hlhu8pegwdcj
Progress
jaegerstorage
extension to expose Storage V2 API [v2] Add v1 factory converter to v2 storage factory #5497storageexporter
to use V2 API exclusively [v2] Add v1 factory converter to v2 storage factory #5497jaegerstorage.GetStorageFactory
once not usedThe text was updated successfully, but these errors were encountered: