Tracing: fix flaky test and add scope checks before closing #8934
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.
Follow up for #8713 and #8911.
Fixes flaky
CurrentSpanTest.testContextDoesNotLeak
test.I was able to repro failures locally and with this change, they are no longer reproducible (tried on 1000 iterations).
There are several problems:
ExchangeAsyncProcessingStartedEvent
is fired once and only if a span was created previouslyAs a result, we're closing scopes multiple times and from the wrong threads. Changing these on Camel side, AFAIK would be quite difficult.
Unfortunately, OTel scope closing works differently than I thought - open-telemetry/opentelemetry-java#5055. If called multiple times and on a different thread than the scope was started, it restores the wrong context on the other thread.
While the solution on OTel side is evaluated, I suggest guarding scope closing with thread check and making it idempotent.
This PR also adds logging in case there is more flakiness.