Repository navigation
Add OpenTelemetry tracing support to SolaceIO - #40187
singhmrinal02 wants to merge 4 commits into
Conversation
|
I'm pretty new to open source and this is one of my first contributions, so I might have missed something or done something wrong. If you find anything that needs to be changed, please let me know. I'd really like to learn from the review, and if you have any tips on how I can improve and contribute better in the future, I'd really appreciate it. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #40187 +/- ##
============================================
- Coverage 59.59% 58.55% -1.05%
+ Complexity 17598 13628 -3970
============================================
Files 3050 2577 -473
Lines 293086 269350 -23736
Branches 13816 11079 -2737
============================================
- Hits 174679 157710 -16969
+ Misses 111287 105710 -5577
+ Partials 7120 5930 -1190
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Checks are failing. Will not request review until checks are succeeding. If you'd like to override that behavior, comment |
|
Assigning reviewers: R: @kennknowles for label java. Note: If you would like to opt out of this review, comment Available commands:
The PR bot will only process comments in the main thread (not review comments). |
|
@singhmrinal02 thanks for picking this up! Goal of this FR is to enable open telemetry propagation - check similar implementation in Kafka and PubSub. You've done some good work with configuring IO, missing part in read is extracting headers and creating a span, missing part in writer is taking a context and injecting it into headers. |
| } | ||
|
|
||
| public Read<T> withEnableOpenTelemetryTracing() { | ||
| configurationBuilder.setEnableOpenTelemetryTracing(true); |
There was a problem hiding this comment.
Add check.
This feature will only work if TypeDescriptor.of(Solace.Record.class) , ParDo after UnboundedSource need to access headers, which are available in Solace.Record.
There was a problem hiding this comment.
Thanks for reviewing and for the guidance! I’ll check again and work on the missing parts.
|
R: @stankiewicz |
|
Stopping reviewer notifications for this pull request: review requested by someone other than the bot, ceding control. If you'd like to restart, comment |
|
The implementation is incomplete - In its current state, the PR introduces a configuration toggle (withEnableOpenTelemetryTracing()) and passes it down to UnboundedSolaceReader, but no actual tracing instrumentation is performed. The reader merely logs a debug message (LOG.debug(...)), without creating OpenTelemetry spans, propagating W3C trace context, or supporting write pipelines. key flaws:
Changes requested:
A dedicated DoFn (e.g., OpenTelemetryHeaderConsumer) applied in SolaceIO.Read.expand(). Extraction of W3C trace context from
Align the implementation with the pattern used in with KafkaIO.
|
|
@singhmrinal02 let me know if you want to continue working on this. |
|
I’d also like to work on this issue. I’m a bit busy until the 9th, though, so I might not be able to start right away. If that’s too much of a delay and someone else can take it up sooner, it’s totally fine to assign it to them. Also, thanks a lot for guiding me and reviewing my previous work. I really appreciate all the feedback! |
|
@singhmrinal02 I've created PR #40187. I appreciate your work, thanks for that. The main challenge is time here, as I have users waiting for this capability and next cut is early next week, I can't wait any longer. I feel, if we have more time, you would be able to finish that. |
|
Should this be closed @stankiewicz ? |
Addresses #40175.
Summary
This PR adds OpenTelemetry tracing support to SolaceIO.
I added an option to enable tracing for SolaceIO reads and passed this option through the source and reader. I also updated the related tests and kept tracing disabled by default.
Testing
I tested the changes locally and the build completed successfully.