aboutsummaryrefslogtreecommitdiffstats
path: root/container-disc/src/main/java/com/yahoo/container
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-09-30 16:24:59 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-09-30 16:24:59 +0200
commit680041d187399715301b4428d681b63afdb20957 (patch)
tree3a1050c526f7e40567678f55a799e3c2ed408114 /container-disc/src/main/java/com/yahoo/container
parent84735c5c71ce231f8e05a3f6931d4290275b85c0 (diff)
Add config id to heap dump for faster identification.
Diffstat (limited to 'container-disc/src/main/java/com/yahoo/container')
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java b/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java
index a84d2521b8b..e4700bef29d 100644
--- a/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java
+++ b/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java
@@ -68,6 +68,7 @@ public final class ConfiguredApplication implements Application {
private static final Logger log = Logger.getLogger(ConfiguredApplication.class.getName());
private static final Set<ClientProvider> startedClients = Collections.newSetFromMap(new WeakHashMap<>());
+ static final String SANITIZE_FILENAME = "[/,;]";
private static final Set<ServerProvider> startedServers = Collections.newSetFromMap(new IdentityHashMap<>());
private final SubscriberFactory subscriberFactory;
@@ -407,6 +408,12 @@ public final class ConfiguredApplication implements Application {
}
}
+ static String santizeFileName(String s) {
+ return s.trim()
+ .replace('\\', '.')
+ .replaceAll(SANITIZE_FILENAME, ".");
+ }
+
// Workaround for ApplicationLoader.stop not being able to shutdown
private void startShutdownDeadlineExecutor() {
shutdownDeadlineExecutor = new ScheduledThreadPoolExecutor(1, new DaemonThreadFactory("Shutdown deadline timer"));
@@ -414,7 +421,8 @@ public final class ConfiguredApplication implements Application {
long delayMillis = (long)(shudownTimeoutS.get() * 1000.0);
shutdownDeadlineExecutor.schedule(() -> {
if (dumpHeapOnShutdownTimeout.get()) {
- String heapDumpName = Defaults.getDefaults().underVespaHome("var/crash/java_pid.") + ProcessHandle.current().pid() + ".hprof";
+ String saneConfigId = configId.replaceAll(SANITIZE_FILENAME, "_");
+ String heapDumpName = Defaults.getDefaults().underVespaHome("var/crash/java_pid.") + santizeFileName(saneConfigId) + "." + ProcessHandle.current().pid() + ".hprof";
com.yahoo.protect.Process.dumpHeap(heapDumpName, true);
}
com.yahoo.protect.Process.logAndDie(