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();
}
}