diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-09-30 16:24:59 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-09-30 16:24:59 +0200 |
commit | 680041d187399715301b4428d681b63afdb20957 (patch) | |
tree | 3a1050c526f7e40567678f55a799e3c2ed408114 /container-disc | |
parent | 84735c5c71ce231f8e05a3f6931d4290275b85c0 (diff) |
Add config id to heap dump for faster identification.
Diffstat (limited to 'container-disc')
-rw-r--r-- | container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java | 10 | ||||
-rw-r--r-- | container-disc/src/test/java/com/yahoo/container/jdisc/ConfiguredApplicationTest.java | 13 |
2 files changed, 22 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( diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/ConfiguredApplicationTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/ConfiguredApplicationTest.java new file mode 100644 index 00000000000..9cac99eef04 --- /dev/null +++ b/container-disc/src/test/java/com/yahoo/container/jdisc/ConfiguredApplicationTest.java @@ -0,0 +1,13 @@ +package com.yahoo.container.jdisc; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class ConfiguredApplicationTest { + @Test + public void testConfigId2FileName() { + assertEquals("admin.metrics.2088223-v6-1.ostk.bm2.prod.ne1.yahoo.com", ConfiguredApplication.santizeFileName("admin/metrics/2088223-v6-1.ostk.bm2.prod.ne1.yahoo.com")); + assertEquals("admin.standalone.cluster-controllers.1", ConfiguredApplication.santizeFileName("admin/standalone/cluster-controllers/1 ")); + } +} |