From a2b9edb84d07d9ebeee1c84e752c8ae9fe024497 Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Tue, 10 Nov 2020 16:57:11 +0100 Subject: Fix java heap dump metadata --- .../hosted/node/admin/maintenance/coredump/CoreCollector.java | 8 +++++--- .../hosted/node/admin/maintenance/coredump/CoreCollectorTest.java | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'node-admin') diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollector.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollector.java index db9460ee07a..8d47abe3c66 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollector.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollector.java @@ -24,11 +24,13 @@ import java.util.regex.Pattern; public class CoreCollector { private static final Logger logger = Logger.getLogger(CoreCollector.class.getName()); - private static final Pattern JAVA_HEAP_DUMP_PATTERN = Pattern.compile("java_pid.*\\.hprof"); + private static final Pattern JAVA_HEAP_DUMP_PATTERN = Pattern.compile("java_pid.*\\.hprof$"); private static final Pattern CORE_GENERATOR_PATH_PATTERN = Pattern.compile("^Core was generated by `(?.*?)'.$"); private static final Pattern EXECFN_PATH_PATTERN = Pattern.compile("^.* execfn: '(?.*?)'"); private static final Pattern FROM_PATH_PATTERN = Pattern.compile("^.* from '(?.*?)'"); static final String GDB_PATH = "/opt/rh/devtoolset-9/root/bin/gdb"; + static final Map JAVA_HEAP_DUMP_METADATA = + Map.of("bin_path", "java", "backtrace", "Heap dump, no backtrace available"); private final ContainerOperations docker; @@ -102,8 +104,8 @@ public class CoreCollector { * @return map of relevant metadata about the core dump */ Map collect(NodeAgentContext context, Path coredumpPath) { - if (JAVA_HEAP_DUMP_PATTERN.matcher(coredumpPath.getFileName().toString()).matches()) - return Map.of("bin_path", "java"); + if (JAVA_HEAP_DUMP_PATTERN.matcher(coredumpPath.getFileName().toString()).find()) + return JAVA_HEAP_DUMP_METADATA; Map data = new HashMap<>(); try { diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java index 9f8f8953424..2827e99c697 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoreCollectorTest.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Map; import static com.yahoo.vespa.hosted.node.admin.maintenance.coredump.CoreCollector.GDB_PATH; +import static com.yahoo.vespa.hosted.node.admin.maintenance.coredump.CoreCollector.JAVA_HEAP_DUMP_METADATA; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; @@ -163,7 +164,7 @@ public class CoreCollectorTest { @Test public void metadata_for_java_heap_dump() { - assertEquals(Map.of("bin_path", "java"), coreCollector.collect(context, Paths.get("java_pid123.hprof"))); + assertEquals(JAVA_HEAP_DUMP_METADATA, coreCollector.collect(context, Paths.get("dump_java_pid123.hprof"))); } private void mockExec(String[] cmd, String output) { -- cgit v1.2.3