diff -r 6c306d54366d -r a390cbb82d47 src/jdk.jfr/share/classes/jdk/jfr/internal/ShutdownHook.java --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/ShutdownHook.java Sun Jun 24 16:25:47 2018 +0100 +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/ShutdownHook.java Mon Jun 25 02:07:42 2018 +0200 @@ -26,12 +26,10 @@ package jdk.jfr.internal; import java.io.IOException; -import java.nio.file.Paths; import java.security.AccessControlContext; import java.security.AccessController; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; -import java.time.LocalDateTime; import jdk.jfr.RecordingState; @@ -67,9 +65,10 @@ WriteableUserPath dest = recording.getDestination(); if (dest == null) { dest = makeDumpOnExitPath(recording); + recording.setDestination(dest); } if (dest != null) { - recording.stop("Dump on exit", dest); + recording.stop("Dump on exit"); } } catch (Exception e) { Logger.log(LogTag.JFR, LogLevel.DEBUG, () -> "Could not dump recording " + recording.getName() + " on exit."); @@ -78,23 +77,21 @@ private WriteableUserPath makeDumpOnExitPath(PlatformRecording recording) { try { - String pid = JVM.getJVM().getPid(); - String dfText = Repository.REPO_DATE_FORMAT.format(LocalDateTime.now()); - String name = "hotspot-" + "pid-" + pid + "-id-" + recording.getId() + "-" + dfText + ".jfr"; + String name = Utils.makeFilename(recording.getRecording()); AccessControlContext acc = recording.getNoDestinationDumpOnExitAccessControlContext(); return AccessController.doPrivileged(new PrivilegedExceptionAction() { @Override public WriteableUserPath run() throws Exception { - return new WriteableUserPath(Paths.get(".", name)); + return new WriteableUserPath(recording.getDumpOnExitDirectory().toPath().resolve(name)); } }, acc); } catch (PrivilegedActionException e) { Throwable t = e.getCause(); if (t instanceof SecurityException) { - Logger.log(LogTag.JFR, LogLevel.WARN, "Not allowed to create dump path for recording " + recording.getId() + " on exit. " + e.getMessage()); + Logger.log(LogTag.JFR, LogLevel.WARN, "Not allowed to create dump path for recording " + recording.getId() + " on exit."); } if (t instanceof IOException) { - Logger.log(LogTag.JFR, LogLevel.WARN, "Could not dump " + recording.getId() + " on exit. " + e.getMessage()); + Logger.log(LogTag.JFR, LogLevel.WARN, "Could not dump " + recording.getId() + " on exit."); } return null; }