-
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
Upgrade Storage Backends to V2 Storage API #6458
Comments
…o v1 (#6485) ## Which problem is this PR solving? - Resolves #6480 ## Description of the changes - This PR implements a reverse adapter (`SpanReader`) that wraps a native v2 storage interface (`tracestore.Reader`) and downgrades it to implement the v1 storage interface (`spanstore.Reader`). - The reverse adapter was integrated with the v1 query service. This code path will only get executed once we start upgrading the existing storage implementations to implement the new `tracestore.Reader` interface as a part of #6458 ## How was this change tested? - CI - Added new 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`: `npm run lint` and `npm run test` --------- Signed-off-by: Mahad Zaryab <mahadzaryab1@gmail.com>
Hello @mahadzaryab1. I am Devaansh Kumar and I am interested in applying for this project under LFX'25. I have some experience with open source earlier as I had participated in GSoC'24 under Kubernetes. I have a few questions:
Thank you |
…o v1 (jaegertracing#6485) ## Which problem is this PR solving? - Resolves jaegertracing#6480 ## Description of the changes - This PR implements a reverse adapter (`SpanReader`) that wraps a native v2 storage interface (`tracestore.Reader`) and downgrades it to implement the v1 storage interface (`spanstore.Reader`). - The reverse adapter was integrated with the v1 query service. This code path will only get executed once we start upgrading the existing storage implementations to implement the new `tracestore.Reader` interface as a part of jaegertracing#6458 ## How was this change tested? - CI - Added new 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`: `npm run lint` and `npm run test` --------- Signed-off-by: Mahad Zaryab <mahadzaryab1@gmail.com> Signed-off-by: adityachopra29 <adityachopra2912@gmail.com>
@yurishkuro I had one more question. Do you expect to move the above storages completely to v2 or have both v1 and v2 present side-by-side and give the user choice on which API version to use? |
Move completely. We're about to upgrade the write pipeline to use v2 storage API anyway, so we won't need v1 API in the future. |
This is a project proposed as part of LFX Mentorship term #6470.
Background
Jaeger is an open-source, distributed tracing platform designed to monitor and troubleshoot microservices-based systems. A critical component of Jaeger is its storage backends, where traces captured by Jaeger are persisted for querying.
Currently, Jaeger uses a v1 Storage API, which operates on a data model specific to Jaeger. Each storage backend implements this API, requiring transformations between Jaeger's proprietary model and the OpenTelemetry Protocol (OTLP) data model, which is now the industry standard.
As part of #5079, Jaeger has introduced the more efficient v2 Storage API, which natively supports the OpenTelemetry data model (OTLP), allows batching of writes and streaming of resultes. This effort is part of a broader alignment with the OpenTelemetry Collector framework, tracked under #4843.
Objective
Upgrade Jaeger storage backends to natively implement the v2 Storage API.
The chosen storage backend should be upgraded to fully implement the v2 Storage API in place. For a rough idea of how to upgrade from the v1 model to the OTLP data model, take a look at the PRs in the following issues that do a similar upgrade for other components of Jaeger:
Desired Outcomes
Upgrade Memory and Elasticsearch backends
We prioritize these two backends as they are the mostly frequently used with Jaeger and upgrading them paves a path for upgrading other backends.
Testing
Bonus: Upgrade Other Backends
If time permits, upgrade Badger and Cassandra storage backends.
Risks / Open Questions
The text was updated successfully, but these errors were encountered: