RFR: 8370715: JFR: Races are possible when dumping recordings
Robert Toyonaga
duke at openjdk.org
Fri Nov 21 22:35:47 UTC 2025
#### Summary
This PR changes the JFR snapshot dumping code so that multiple JFR recordings (potentially from different processes) racing to write the same dump destination won't mix their data.
#### Problem
The dump destination file is created and/or wiped when a recording is started, but not wiped again before actually copying over the chunks during a dump. So in the window of time between creating/wiping and dumping chunks, another recording could write to the same dump destination and have it's chunks added to the snapshot. This can happen with either a single JVM or multiple JVMs that are racing.
#### Proposed fix
This PR ensures that any data previously written to the dump destination is wiped before the new recording's data is written. File locking is also done while chunks are being written.
Testing:
- new test `jdk/jdk/jfr/api/recording/dump/TestDumpOverwrite.java`
- Tier 1
-------------
Commit messages:
- small changes to transferChunks and add test
Changes: https://git.openjdk.org/jdk/pull/28460/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28460&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8370715
Stats: 87 lines in 2 files changed: 86 ins; 0 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/28460.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/28460/head:pull/28460
PR: https://git.openjdk.org/jdk/pull/28460
More information about the hotspot-jfr-dev
mailing list