Author: thomasm
Date: Tue Jan 16 10:55:15 2018
New Revision: 1821228

URL: http://svn.apache.org/viewvc?rev=1821228&view=rev
Log:
OAK-4521 Oak-run: add profiling and analysis tools

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/ThreadDumpThreadNames.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=1821228&r1=1821227&r2=1821228&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 Jan 16 10:55:15 2018
@@ -178,8 +178,13 @@ public class ThreadDumpCommand implement
             if (file.getName().endsWith(".gz")) {
                 System.out.println("Extracting " + file.getAbsolutePath());
                 InputStream fileStream = new FileInputStream(file);
-                InputStream gzipStream = new GZIPInputStream(fileStream);
-                reader = new InputStreamReader(gzipStream);
+                try {
+                    InputStream gzipStream = new GZIPInputStream(fileStream);
+                    reader = new InputStreamReader(gzipStream);
+                } catch (EOFException e) {
+                    fileStream.close();
+                    return 0;
+                }
             } else {
                 System.out.println("Reading " + file.getAbsolutePath());
                 reader = new FileReader(file);

Modified: 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpThreadNames.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpThreadNames.java?rev=1821228&r1=1821227&r2=1821228&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpThreadNames.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/threadDump/ThreadDumpThreadNames.java
 Tue Jan 16 10:55:15 2018
@@ -24,6 +24,7 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.io.LineNumberReader;
 import java.io.PrintWriter;
+import java.sql.Timestamp;
 
 /**
  * A tool that converts a file with date/time and thread dumps into a list of
@@ -79,9 +80,29 @@ public class ThreadDumpThreadNames {
             }
             if (line.startsWith("\"")) {
                 line = line.substring(0, line.lastIndexOf('\"') + 1);
+                line = appendTimestamp(line);
                 writer.write(dateAndTime + " " + line + "\n");
             }
         }
     }
 
+    private static String appendTimestamp(String line) {
+        int start = line.indexOf("[");
+        if (start < 0) {
+            return line;
+        }
+        int end = line.indexOf("]", start);
+        if (end < 0) {
+            return line;
+        }
+        String millis = line.substring(start + 1, end);
+        try {
+            long m = Long.parseLong(millis);
+            String t = new Timestamp(m).toString();
+            return line + ": " + t;
+        } catch (NumberFormatException e) {
+            return line;
+        }
+    }
+
 }


Reply via email to