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 2016/09/14 14:17:22 UTC

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

Author: thomasm
Date: Wed Sep 14 14:17:22 2016
New Revision: 1760714

URL: http://svn.apache.org/viewvc?rev=1760714&view=rev
Log:
OAK-4521 Oak-run: add profiling and analysis tools (support alternative full thread dump format)

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=1760714&r1=1760713&r2=1760714&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 Wed Sep 14 14:17:22 2016
@@ -31,6 +31,7 @@ import java.io.InputStreamReader;
 import java.io.LineNumberReader;
 import java.io.PrintWriter;
 import java.io.Reader;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.zip.GZIPInputStream;
@@ -153,6 +154,9 @@ public class ThreadDumpCommand implement
                 return 0;
             }
             int fullThreadDumps = 0;
+            String fileModifiedTime = new Timestamp(file.lastModified()).toString();
+            writer.write("file " + file.getAbsolutePath() + "\n");
+            writer.write("lastModified " + fileModifiedTime + "\n");
             if (file.getName().endsWith(".gz")) {
                 System.out.println("Extracting " + file.getAbsolutePath());
                 InputStream fileStream = new FileInputStream(file);
@@ -185,7 +189,7 @@ public class ThreadDumpCommand implement
             }
             if (fullThreadDumps > 0) {
                 count++;
-                System.out.println("    (contains " + fullThreadDumps + " full thread dumps)");
+                System.out.println("    (contains " + fullThreadDumps + " full thread dumps; " + fileModifiedTime + ")");
             }
         } finally {
             if(reader != null) {

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=1760714&r1=1760713&r2=1760714&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 Wed Sep 14 14:17:22 2016
@@ -136,14 +136,25 @@ public class ThreadDumpCleaner {
 
     private static void process(LineNumberReader reader, PrintWriter writer) throws IOException {
         StringBuilder buff = new StringBuilder();
+        int activeThreadCount = 0;
         while (true) {
             String line = reader.readLine();
             if (line == null) {
                 break;
             }
+            if (line.startsWith("Full thread dump") || line.startsWith("Full Java thread dump")) {
+                if (activeThreadCount > 0) {
+                    System.out.println("Active threads: " + activeThreadCount);
+                }
+                activeThreadCount = 0;
+            }
             buff.append(line).append('\n');
             if (line.trim().length() == 0) {
-                writer.print(filter(buff.toString()));
+                String filtered = filter(buff.toString());
+                if (filtered.trim().length() > 10) {
+                    activeThreadCount++;
+                }
+                writer.print(filtered);
                 buff = new StringBuilder();
             }
         }