You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by th...@apache.org on 2019/02/05 15:16:32 UTC

svn commit: r1853009 - in /jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak: run/ThreadDumpCommand.java threadDump/ThreadDumpCleaner.java

Author: thomasm
Date: Tue Feb  5 15:16:32 2019
New Revision: 1853009

URL: http://svn.apache.org/viewvc?rev=1853009&view=rev
Log:
OAK-4521 Oak-run: add profiling and analysis tools (support for module names; sort files by name)

Modified:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ThreadDumpCommand.java
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpCleaner.java

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ThreadDumpCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ThreadDumpCommand.java?rev=1853009&r1=1853008&r2=1853009&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ThreadDumpCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/ThreadDumpCommand.java Tue Feb  5 15:16:32 2019
@@ -33,6 +33,8 @@ import java.io.PrintWriter;
 import java.io.Reader;
 import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
 import java.util.List;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.ZipException;
@@ -158,6 +160,12 @@ public class ThreadDumpCommand implement
         int count = 0;
         File[] list = file.listFiles();
         if (list != null) {
+            Arrays.sort(list, new Comparator<File>() {
+                @Override
+                public int compare(File o1, File o2) {
+                    return o1.getName().compareTo(o2.getName());
+                }
+            });
             for(File f : list) {
                 count += processFileOrDirectory(f, writer);
             }

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpCleaner.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpCleaner.java?rev=1853009&r1=1853008&r2=1853009&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpCleaner.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpCleaner.java Tue Feb  5 15:16:32 2019
@@ -148,6 +148,7 @@ public class ThreadDumpCleaner {
                 }
                 activeThreadCount = 0;
             }
+            line = removeModuleName(line);
             buff.append(line).append('\n');
             if (line.trim().length() == 0) {
                 String filtered = filter(buff.toString());
@@ -161,6 +162,38 @@ public class ThreadDumpCleaner {
         writer.println(filter(buff.toString()));
     }
 
+    private static String removeModuleName(String line) {
+        // remove the module name, for example in:
+        // at java.base@11.0.1/sun.nio.ch.ServerSocketChannelImpl.accept
+        // at java.management@11.0.1/sun.management.
+        // at platform/java.scripting@11.0.1/javax.script.SimpleBindings
+
+        int atChar = line.indexOf('@');
+        if (atChar < 0) {
+            return line;
+        }
+        int slash = line.indexOf('/', atChar);
+        if (slash < 0) {
+            return line;
+        }
+        int at = line.indexOf("at ");
+        if (at < 0 || at > atChar) {
+            return line;
+        }
+
+        // String moduleName = line.substring(at + 3, slash);
+        // module names seen so far:
+        // java.base@11.0.1
+        // java.desktop@11.0.1
+        // java.management@11.0.1
+        // java.xml@11.0.1
+        // platform/java.scripting@11.0.1
+
+        // removing the module name
+        line = line.substring(0, at + 2) + line.substring(slash + 1);
+        return line;
+    }
+
     private static String filter(String s) {
         for (Pattern p : PATTERNS) {
             s = p.matcher(s).replaceAll("");