RFR: 8325532: serviceability/dcmd/compiler/PerfMapTest.java leaves created files in the /tmp dir.
Serguei Spitsyn
sspitsyn at openjdk.org
Sat Mar 2 01:43:55 UTC 2024
On Sat, 2 Mar 2024 00:44:02 GMT, Chris Plummer <cjplummer at openjdk.org> wrote:
>> test/hotspot/jtreg/serviceability/dcmd/compiler/PerfMapTest.java line 103:
>>
>>> 101: } while(Files.exists(path));
>>> 102: run(new JMXExecutor(), "Compiler.perfmap " + path.toString(), path);
>>> 103: }
>>
>> Q1: It is not clear why the file is not deleted in this case. Do I miss anything?
>> Q2: Can we use `Files.deleteIfExists(path)` in the `finally block` of the `run()` method instead?
>>
>>
>> public void run(CommandExecutor executor, String cmd, Path path) {
>> try {
>> <body of run() method>
>> } finally {
>> Files.deleteIfExists(path);
>> }
>> }
>>
>> One more approach is to wrap `run()` call into the `runHelper()` method:
>>
>> public void runHelper(CommandExecutor executor, String cmd, Path path) {
>> try {
>> run(executor, cmd, path);
>> } finally {
>> Files.deleteIfExists(path);
>> }
>> }
>
>> Q2: Can we use Files.deleteIfExists(path) in the finally block of the run() method instead?
>
> I don't think that changes anything. If run() throws an exception and then Files.deleteIfExists() throws an exception from the finally block, the original exception is lost.
>
>> One more approach is to wrap run() call into the runHelper() method:
>
> Same issue with potentially losing the original exception.
Two variants:
public void runHelper(CommandExecutor executor, String cmd, Path path) {
try {
run(executor, cmd, path);
} catch (Throwable t) {
t.printStackTrace(System.out);
throw t;
} finally {
Files.deleteIfExists(path);
}
}
or
public void runHelper(CommandExecutor executor, String cmd, Path path) {
try {
run(executor, cmd, path);
} finally {
try {
Files.deleteIfExists(path);
} catch (Throwable t) {
<print message about exception thrown from deleteIfExists>
t.printStackTrace(System.out);
}
}
}
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/17992#discussion_r1509803616
More information about the serviceability-dev
mailing list