Repository navigation
Conversation
This was referenced Oct 14, 2026
jbachorik
force-pushed
the
jb/otlp-profile-exporter
branch
from
October 14, 2026 15:34
b0a1f0c to
7a58fb1
Compare
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 15:34
d4cc2e2 to
3279bdf
Compare
jbachorik
force-pushed
the
jb/otlp-profile-exporter
branch
from
October 14, 2026 16:04
7a58fb1 to
31cd858
Compare
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 16:04
3279bdf to
318c6c6
Compare
jbachorik
force-pushed
the
jb/otlp-profile-exporter
branch
from
October 14, 2026 21:47
31cd858 to
252a892
Compare
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 21:47
318c6c6 to
5f9a4f9
Compare
jbachorik
force-pushed
the
jb/otlp-profile-exporter
branch
from
October 14, 2026 21:57
252a892 to
7c38d31
Compare
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 21:57
5f9a4f9 to
7c38d31
Compare
2 of 5 tasks
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 22:23
32bf8d2 to
07c532b
Compare
jbachorik
force-pushed
the
jb/otlp-profile-exporter
branch
from
October 14, 2026 22:31
bfc7a00 to
86dfa6b
Compare
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 22:31
07c532b to
ee2a515
Compare
jbachorik
force-pushed
the
jb/otlp-profile-exporter
branch
from
October 14, 2026 22:38
86dfa6b to
ca32ced
Compare
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 22:38
ee2a515 to
eb9c523
Compare
jbachorik
force-pushed
the
jb/otlp-profile-exporter
branch
from
October 14, 2026 22:44
ca32ced to
d1c356d
Compare
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 22:44
eb9c523 to
60154aa
Compare
jbachorik
force-pushed
the
jb/otlp-profile-exporter
branch
from
October 14, 2026 22:45
d1c356d to
f36694b
Compare
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
3 times, most recently
from
October 14, 2026 22:51
69f3438 to
e366b70
Compare
RecordingData gains explicit retain/release semantics so multiple consumers (recording streaming and the OTLP uploader) can share a recording without one side closing it prematurely. Implemented across the OpenJDK, OracleJDK and ddprof controller backends.
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 22:55
e366b70 to
2f76dd4
Compare
This branch has not been deployed
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.
What Does This Do
Adds retain and release reference counting to
RecordingData.RecordingDatagainsretain()andrelease()next toclose(). The recording stream stays open until the last consumer releases its reference.RecordingDataRefCountingTestcovers the behavior.Motivation
The profiling controller hands a
RecordingDatato a listener, andclose()ends the recording. One consumer model exists today. The OTLP profiles uploader needs a second consumer of the same recording. It must read the JFR data and send it as OTLP/P while the streaming path still reads it.With the current API the two consumers conflict. The first
close()can end the recording while the uploader still reads it. The upload then sends an incomplete profile. The uploader can also hold the recording open after both consumers finish. The recording then leaks, and its file grows.Retain and release reference counting solves both cases. Each consumer holds a reference. The recording closes only after the last consumer releases its reference.
This PR changes only the
RecordingDatacontract and its backend implementations. The uploader that uses it comes in a later PR of the stack.Additional Notes
Part of a 5-PR stack. Each PR bases on the previous one.
profiling-otel, plus jafar 0.26.2 (feat(profiling): Add JFR to OTLP/P converter with CLI, benchmarks and validation #12870)Contributor Checklist
type:and (comp:orinst:) labels in addition to any other useful labelsJira ticket: [PROJ-IDENT]