Closed amarziali closed 1 month ago
Baseline | Candidate | |
---|---|---|
baseline_or_candidate | baseline | candidate |
git_branch | master | andrea.marziali/reactor-rebirth |
git_commit_date | 1728548937 | 1728570335 |
git_commit_sha | 70c9598d61 | c367127391 |
release_version | 1.41.0-SNAPSHOT~70c9598d61 | 1.41.0-SNAPSHOT~c367127391 |
Found 0 performance improvements and 0 performance regressions! Performance is the same for 54 metrics, 9 unstable metrics.
Baseline | Candidate | |
---|---|---|
baseline_or_candidate | baseline | candidate |
end_time | 2024-10-10T14:45:14 | 2024-10-10T14:52:09 |
git_branch | master | andrea.marziali/reactor-rebirth |
git_commit_date | 1728548937 | 1728570335 |
git_commit_sha | 70c9598d61 | c367127391 |
release_version | 1.41.0-SNAPSHOT~70c9598d61 | 1.41.0-SNAPSHOT~c367127391 |
start_time | 2024-10-10T14:45:01 | 2024-10-10T14:51:56 |
Found 0 performance improvements and 0 performance regressions! Performance is the same for 12 metrics, 16 unstable metrics.
Baseline | Candidate | |
---|---|---|
baseline_or_candidate | baseline | candidate |
git_branch | master | andrea.marziali/reactor-rebirth |
git_commit_date | 1728548937 | 1728570335 |
git_commit_sha | 70c9598d61 | c367127391 |
release_version | 1.41.0-SNAPSHOT~70c9598d61 | 1.41.0-SNAPSHOT~c367127391 |
Found 0 performance improvements and 0 performance regressions! Performance is the same for 11 metrics, 1 unstable metrics.
What Does This Do
This PR aims definitely addressing context propagation for reactivestreams
Publisher
andSubscriber
. It addresses also patterns (Mono
,Flux
,Processor
) provided by project reactor.The old advices we had were either not always applied (
TerminalSubscriberInstrumentation
) either not applied by default (ReactorHooks
). In particularTerminalSubscriberInstrumentation
was only applied when the Mono or Flux was peeking elements (i.e. methodsdoOnXXXX
orlog
). Also it had no effects on propagation. The propagation was only handled by ourjava_concurrent
advices that was missing use cases like subscription on unhandled thread pools or work queues.This PR also unify the way traced methods finish spans when the return type is a Producer. We had two different extensions:
Considering this use case
In that case there it may happen that
ReactiveStreamsAsyncResultSupportExtension
is used (since Mono implements Publisher). This one was wrapping the publisher in an internal types causing class casts when bytebuddy replaces the return type since our wrapped type cannot be casted back to MonoGenerally speaking this PR avoid rewrapping Publisher and Subscriber in order to save a lot of object allocations (but transforms more types).
Motivation
Additional Notes
Contributor Checklist
type:
and (comp:
orinst:
) labels in addition to any usefull labelsclose
,fix
or any linking keywords when referencing an issue.Use
solves
instead, and assign the PR milestone to the issueJira ticket: AIDM-331