Out with blkin, in with OpenTelemetry#67902
Draft
Conversation
Signed-off-by: Omri Zeneva <ozeneva@redhat.com> Signed-off-by: Adam Emerson <aemerson@redhat.com>
We create a static default span context for funcitons that do not have trace info, but must pass it forward. so with this object we won't create and copy the context each time Signed-off-by: Omri Zeneva <ozeneva@redhat.com> Signed-off-by: Adam Emerson <aemerson@redhat.com>
Signed-off-by: Adam Emerson <aemerson@redhat.com>
Signed-off-by: Omri Zeneva <ozeneva@redhat.com> Signed-off-by: Adam Emerson <aemerson@redhat.com>
this commit replaces the blkin param from api methods by opentelemetry span context Signed-off-by: Omri Zeneva <ozeneva@redhat.com> Co-authored-by: Adam Emerson <aemerson@redhat.com> Signed-off-by: Adam Emerson <aemerson@redhat.com>
instead of blkin trace info that passes with messages, we replace it with o-tel trace info we must support backward compatibility so we need to keep decode the old trace info, but new messages will have o-tel trace, so version increase is mandatory Signed-off-by: Omri Zeneva <ozeneva@redhat.com> Signed-off-by: Adam Emerson <aemerson@redhat.com>
since we removed the blkin submodule, we can't use it in file/bluestore also Signed-off-by: Omri Zeneva <ozeneva@redhat.com> Signed-off-by: Adam Emerson <aemerson@redhat.com>
This commit removes the blkin submodule and references to it. The only part remaining is the dummy `blkin_trace_info` data structure and its coded, now moved into `Message.cc`. Signed-off-by: Adam Emerson <aemerson@redhat.com>
When start_read_op() is called without a valid OpRequestRef (e.g., from RMWPipeline::try_state_to_reads at line 726), the otel_trace was not being initialized, leading to potential null pointer issues. Changes: - Initialize otel_trace in ReadOp constructor using noop_span_ctx when op is null, ensuring trace is always valid - Add fallback trace creation in start_read_op() when _op is null - Add comment noting that passing the original op through would be a better long-term solution - Fix MOSDECSubOpWrite header version check (3 instead of 4) for decode_otel_trace compatibility - Add necessary tracer.h includes to ECCommonL.h - End the OpRequest span when the operation completes This ensures OpenTelemetry tracing works correctly for all EC read operations, including those initiated without an associated client operation request. Signed-off-by: John Agombar <agombar@uk.ibm.com>
…ementation - Add const qualifiers to jspan methods: AddEvent(), UpdateName(), IsRecording() - Add missing End() method to jspan class - Add default and parameterized constructors to Tracer struct These changes ensure the no-op tracing implementation maintains API consistency with the actual Jaeger tracing implementation when tracing is disabled. Signed-off-by: John Agombar <agombar@uk.ibm.com>
- Use thrift::libthrift target instead of plain thrift for system thrift (thrift >= 0.17) to properly reference the CMake imported target - Add libarrow_bundled_dependencies.a to byproducts and link libraries when using bundled thrift (thrift < 0.17) This ensures proper linking of Arrow's bundled thrift dependencies and uses the correct CMake target for system thrift installations. This change is required to build ceph if WITH_JAEGER is false. Signed-off-by: John Agombar <agombar@uk.ibm.com>
…ders Check if a real tracer provider is already configured before initializing a new one. This prevents libraries (neorados, librbd when used as a library) from overwriting the tracer provider set up by daemons (OSD, RGW, etc.). The change detects if the current provider is the default no-op provider. If it is, we initialize a new Jaeger exporter as before. If a real provider already exists, we reuse it instead of replacing it. This allows daemons to properly initialize tracing while libraries can safely call init() without disrupting the daemon's tracing configuration. Signed-off-by: John Agombar <agombar@uk.ibm.com>
Config Diff Tool Output+ added: rbd_otel_trace_all (rbd.yaml.in)
- removed: osdc_blkin_trace_all (global.yaml.in)
- removed: osd_blkin_trace_all (global.yaml.in)
- removed: rbd_blkin_trace_all (rbd.yaml.in)
The above configuration changes are found in the PR. Please update the relevant release documentation if necessary. |
14 tasks
Contributor
Author
|
I have addressed the comment in #59365 apart from the ones about multiple tracers hence this is still a WIP. |
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Remove all uses of the blkin library, replacing them with OpenTelemetry and preserving traces.
This PR is a partial reworking of #59365.
Contribution Guidelines
To sign and title your commits, please refer to Submitting Patches to Ceph.
If you are submitting a fix for a stable branch (e.g. "quincy"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.
When filling out the below checklist, you may click boxes directly in the GitHub web UI. When entering or editing the entire PR message in the GitHub web UI editor, you may also select a checklist item by adding an
xbetween the brackets:[x]. Spaces and capitalization matter when checking off items this way.Checklist
Show available Jenkins commands
jenkins test classic perfJenkins Job | Jenkins Job Definitionjenkins test crimson perfJenkins Job | Jenkins Job Definitionjenkins test signedJenkins Job | Jenkins Job Definitionjenkins test make checkJenkins Job | Jenkins Job Definitionjenkins test make check arm64Jenkins Job | Jenkins Job Definitionjenkins test submodulesJenkins Job | Jenkins Job Definitionjenkins test dashboardJenkins Job | Jenkins Job Definitionjenkins test dashboard cephadmJenkins Job | Jenkins Job Definitionjenkins test apiJenkins Job | Jenkins Job Definitionjenkins test docsReadTheDocs | Github Workflow Definitionjenkins test ceph-volume allJenkins Jobs | Jenkins Jobs Definitionjenkins test windowsJenkins Job | Jenkins Job Definitionjenkins test rook e2eJenkins Job | Jenkins Job DefinitionYou must only issue one Jenkins command per-comment. Jenkins does not understand
comments with more than one command.