RFR: 8334492: DiagnosticCommands (jcmd) should accept %p in output filenames and substitute PID

Sonia Zaldana Calles szaldana at openjdk.org
Wed Jul 17 13:52:05 UTC 2024


Hi all, 

This PR addresses [8334492](https://bugs.openjdk.org/browse/JDK-8334492) enabling jcmd diagnostic commands that issue an output file to accept the `%p` pattern in the file name and substitute it for the PID. 

This PR addresses the following diagnostic commands: 
- [x] Compiler.perfmap 
- [x] GC.heap_dump
- [x] System.dump_map
- [x] Thread.dump_to_file
- [x] VM.cds

Note that some jcmd diagnostic commands already enable this functionality (`JFR.configure, JFR.dump, JFR.start and JFR.stop`). 

I propose opening a separate issue to track updating the man page similarly to how it’s done for the JFR diagnostic commands. For example, 


filename         (Optional) Name of the file to which the flight recording data is
                   written when the recording is stopped. If no filename is given, a
                   filename is generated from the PID and the current date and is
                   placed in the directory where the process was started. The
                   filename may also be a directory in which case, the filename is
                   generated from the PID and the current date in the specified
                   directory. (STRING, no default value)

                   Note: If a filename is given, '%p' in the filename will be
                   replaced by the PID, and '%t' will be replaced by the time in
                   'yyyy_MM_dd_HH_mm_ss' format.


Unfortunately, per [8276265](https://bugs.openjdk.org/browse/JDK-8276265), sources for the jcmd manpage remain in Oracle internal repos so this PR can’t address that. 

Testing: 

- [x] Added test case passes. 
- [x] Modified existing VM.cds tests to also check for `%p` filenames. 

Looking forward to your comments and addressing any diagnostic commands I might have missed (if any). 

Cheers, 
Sonia

-------------

Commit messages:
 - 8334492: DiagnosticCommands (jcmd) should accept %p in output filenames and substitute PID

Changes: https://git.openjdk.org/jdk/pull/20198/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=20198&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8334492
  Stats: 130 lines in 5 files changed: 116 ins; 0 del; 14 mod
  Patch: https://git.openjdk.org/jdk/pull/20198.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/20198/head:pull/20198

PR: https://git.openjdk.org/jdk/pull/20198


More information about the serviceability-dev mailing list