Author: thomasm
Date: Fri Sep 13 07:07:02 2019
New Revision: 1866878

URL: http://svn.apache.org/viewvc?rev=1866878&view=rev
Log:
OAK-4521 Oak-run: add profiling and analysis tools (support jcmd Thread.print 
and newer Java versions)

Modified:
    
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/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=1866878&r1=1866877&r2=1866878&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
 Fri Sep 13 07:07:02 2019
@@ -33,6 +33,14 @@ import java.util.regex.Pattern;
 public class ThreadDumpCleaner {
 
     private static final String[] PATTERN_ARRAY = {
+        "Threads class SMR info:(?s).*?\n\n",
+        
+        "JNI global refs.*\n\n",
+
+        "\"Reference Handler\"(?s).*?\n\n",
+
+        "\"C1 CompilerThread(?s).*?\n\n",
+
         "\"Concurrent Mark-Sweep GC Thread\".*\n",
 
         "\"Exception Catcher Thread\".*\n",
@@ -70,6 +78,9 @@ public class ThreadDumpCleaner {
                 "at sun.nio.ch.EPollArrayWrapper.epollWait(?s).*?\n\n",
 
         "\".*?\".*?\n   java.lang.Thread.State:.*\n\t" +
+                "at sun.nio.ch.EPoll.wait(?s).*?\n\n",
+
+        "\".*?\".*?\n   java.lang.Thread.State:.*\n\t" +
                 "at java.lang.Object.wait(?s).*?\n\n",
 
         "\".*?\".*?\n   java.lang.Thread.State:.*\n\t" +
@@ -176,10 +187,17 @@ public class ThreadDumpCleaner {
         if (slash < 0) {
             return line;
         }
-        int at = line.indexOf("at ");
-        if (at < 0 || at > atChar) {
+        int start = line.indexOf("at ");
+        if (start < 0 || start > atChar) {
             return line;
         }
+        start += 2;
+        // at java.lang.Object.wait([email protected]/Native Method) ->
+        // at java.lang.Object.wait(Native Method) ->
+        int open = line.indexOf('(');
+        if (open > start && open < atChar) {
+            start = open + 1;
+        }
 
         // String moduleName = line.substring(at + 3, slash);
         // module names seen so far:
@@ -190,7 +208,7 @@ public class ThreadDumpCleaner {
         // platform/[email protected]
 
         // removing the module name
-        line = line.substring(0, at + 2) + line.substring(slash + 1);
+        line = line.substring(0, start) + line.substring(slash + 1);
         return line;
     }
 


Reply via email to