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