Repository navigation
Conversation
This was referenced Oct 14, 2026
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-converter
branch
from
October 14, 2026 15:34
c8393db to
09993b3
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-converter
branch
from
October 14, 2026 16:04
09993b3 to
5fb5676
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-converter
branch
from
October 14, 2026 21:47
5fb5676 to
900b31a
Compare
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 21:57
5f9a4f9 to
7c38d31
Compare
jbachorik
force-pushed
the
jb/otlp-profile-converter
branch
from
October 14, 2026 21:57
900b31a to
7c38d31
Compare
2 of 5 tasks
jbachorik
force-pushed
the
jb/otlp-profile-converter
branch
from
October 14, 2026 22:23
c9eaa35 to
af5329d
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-converter
branch
from
October 14, 2026 22:31
af5329d to
a8eced5
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-converter
branch
from
October 14, 2026 22:38
a8eced5 to
c5b6483
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-converter
branch
from
October 14, 2026 22:44
c5b6483 to
d4e3a66
Compare
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 22:45
60154aa to
b981f76
Compare
jbachorik
force-pushed
the
jb/otlp-profile-converter
branch
from
October 14, 2026 22:45
d4e3a66 to
7efca57
Compare
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 22:50
b981f76 to
69f3438
Compare
jbachorik
force-pushed
the
jb/otlp-profile-converter
branch
from
October 14, 2026 22:50
7efca57 to
6d01747
Compare
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 22:51
69f3438 to
e366b70
Compare
jbachorik
force-pushed
the
jb/otlp-profile-converter
branch
from
October 14, 2026 22:51
6d01747 to
e235a1c
Compare
… validation New profiling-otel module: converts JFR recordings to OTLP Profiles protobufs — string/function/location/stack/link dictionary tables, hand-rolled protobuf encoder, jdk.* and jdk.CPUTimeSample event handling, deduplicating resource attributes. Ships a standalone CLI (convert-jfr.sh), JMH benchmark suite, profcheck-based validation harness with pinned OTLP proto schemas and an OTel collector testcontainer round-trip, plus module docs (ARCHITECTURE, BENCHMARKS, CLI, INTEGRATION_PLAN, PROFCHECK_INTEGRATION) and the Dockerfile.profcheck image. Moves jafar to 0.26.2 (the version the converter is built against) and reworks the agent shadow jar bundling: the jafar-tools fat jar bundles an incomplete copy of the jafar-parser classes that breaks the GraalVM native-image builder, so the agent bundles jafar-parser (via profiling-otel) and only the io.jafar.tools classes from the fat jar instead. Also claims CODEOWNERS for the profcheck Dockerfile.
jbachorik
force-pushed
the
jb/otlp-profile-recording-data
branch
from
October 14, 2026 22:55
e366b70 to
2f76dd4
Compare
jbachorik
force-pushed
the
jb/otlp-profile-converter
branch
from
October 14, 2026 22:55
e235a1c to
2684827
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 the
dd-java-agent/agent-profiling/profiling-otelmodule. It converts JFR recordings to OTLP Profiles protobufs (OTLP/P).OtlpProtoFields).jdk.ExecutionSample,jdk.NativeMethodSample,jdk.JavaMonitorEnter,jdk.JavaMonitorWait,jdk.ObjectAllocationSample,MethodSample, andjdk.CPUTimeSampleto OTLP CPU samples.JfrToOtlpConverterCLI,convert-jfr.sh).OtlpProfileValidatorwith profcheck, pinned OTLP proto schemas, and an OTel collector test container. Includesdocker/Dockerfile.profcheck.io.btrace:jafarto 0.26.2 and reworks the agent shadow jar bundling for jafar.Motivation
The agent records JVM profiles as JFR recordings. An OTLP backend reads profiles only in the OTLP Profiles format. The agent must convert JFR to OTLP/P before it sends. This PR is that converter, as one module with no changes to existing code.
The jafar changes belong to this PR, because this module needs them. The converter reads JFR files through the jafar parser API (
io.jafar.parser.api). Its tests write synthetic JFR recordings throughorg.openjdk.jmc:flightrecorder.writer. The version catalog gains thejafar-parserandjmc-flightrecorder-writeraliases for these two artifacts.jafar-toolsis a fat jar that bundles an incomplete copy of the jafar-parser classes. The agent only needs theio.jafar.toolsclasses, andprofiling-scrubberis their only consumer. The bundled parser classes carry no proper type metadata, and the GraalVM native-image builder fails on them. The new bundling drops the fat jar. The agent bundlesjafar-parserthroughprofiling-otel, and only theio.jafar.toolsclasses from the fat jar.The module also carries a CLI, benchmarks, and a validation harness:
Additional Notes
Part of a 5-PR stack. Each PR bases on the previous one.
profiling-otel, plus jafar 0.26.2Contributor Checklist
type:and (comp:orinst:) labels in addition to any other useful labelsJira ticket: [PROJ-IDENT]