Updated Branches:
  refs/heads/master 34904ff57 -> c729cab62

OOZIE-1691 StackOverflowError in TimestampedMessageParser.parseNextLine() (puru 
via rkanter)


Project: http://git-wip-us.apache.org/repos/asf/oozie/repo
Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/d6ddfba1
Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/d6ddfba1
Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/d6ddfba1

Branch: refs/heads/master
Commit: d6ddfba1838e3fdcd3a2db1c4e9e83b9a72a2f6d
Parents: 34904ff
Author: Robert Kanter <[email protected]>
Authored: Thu Feb 13 10:33:28 2014 -0800
Committer: Robert Kanter <[email protected]>
Committed: Thu Feb 13 10:33:28 2014 -0800

----------------------------------------------------------------------
 .../oozie/util/TimestampedMessageParser.java    |  8 ++--
 .../util/TestTimestampedMessageParser.java      | 39 ++++++++++++++++++++
 release-log.txt                                 |  1 +
 3 files changed, 44 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oozie/blob/d6ddfba1/core/src/main/java/org/apache/oozie/util/TimestampedMessageParser.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/oozie/util/TimestampedMessageParser.java 
b/core/src/main/java/org/apache/oozie/util/TimestampedMessageParser.java
index 92a687b..8a11780 100644
--- a/core/src/main/java/org/apache/oozie/util/TimestampedMessageParser.java
+++ b/core/src/main/java/org/apache/oozie/util/TimestampedMessageParser.java
@@ -133,14 +133,14 @@ public class TimestampedMessageParser {
      * @throws IOException
      */
     protected String parseNextLine() throws IOException {
-        String line = reader.readLine();
-        if (line != null) {
+        String line;
+        while ((line = reader.readLine()) != null) {
             ArrayList<String> logParts = filter.splitLogMessage(line);
             if (logParts != null) {
                 patternMatched = filter.matches(logParts);
             }
-            if (!patternMatched) {
-                line = parseNextLine();
+            if (patternMatched) {
+                return line;
             }
         }
         return line;

http://git-wip-us.apache.org/repos/asf/oozie/blob/d6ddfba1/core/src/test/java/org/apache/oozie/util/TestTimestampedMessageParser.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/oozie/util/TestTimestampedMessageParser.java 
b/core/src/test/java/org/apache/oozie/util/TestTimestampedMessageParser.java
index 55a5284..c2630e7 100644
--- a/core/src/test/java/org/apache/oozie/util/TestTimestampedMessageParser.java
+++ b/core/src/test/java/org/apache/oozie/util/TestTimestampedMessageParser.java
@@ -97,6 +97,45 @@ public class TestTimestampedMessageParser extends XTestCase {
         return file;
     }
 
+    static File prepareFile3(String dir) throws IOException {
+        File file = new File(dir + "/test3.log");
+        FileWriter fw = new FileWriter(file);
+
+        for (int i = 0; i < 10000; i++) {
+            String log = "2009-06-24 02:43:13," + i
+                    + " DEBUG _L1_:323 - USER[oozie] GROUP[-] TOKEN[-] 
APP[example-forkjoinwf] "
+                    + "JOB[14-200904160239--found-C] 
ACTION[14-200904160239--example-C@1] End workflow state change\n";
+
+            fw.write(log);
+        }
+
+        fw.close();
+        return file;
+    }
+
+    public void testNofindLogs() {
+        // Test of OOZIE-1691
+        XLogStreamer.Filter.reset();
+        XLogStreamer.Filter.defineParameter("USER");
+        XLogStreamer.Filter.defineParameter("GROUP");
+        XLogStreamer.Filter.defineParameter("TOKEN");
+        XLogStreamer.Filter.defineParameter("APP");
+        XLogStreamer.Filter.defineParameter("JOB");
+        XLogStreamer.Filter.defineParameter("ACTION");
+        XLogStreamer.Filter xf = new XLogStreamer.Filter();
+        xf.setParameter("JOB", "14-200904160239--no-found-C");
+        xf.setLogLevel("DEBUG|WARN");
+        try {
+            File file = prepareFile3(getTestCaseDir());
+            StringWriter sw = new StringWriter();
+            new TimestampedMessageParser(new BufferedReader(new 
FileReader(file)), xf).processRemaining(sw, 4096);
+            assertTrue(sw.toString().isEmpty());
+        }
+        catch (Exception e) {
+            fail("should not throw Exception");
+        }
+    }
+
     public void testProcessRemainingLog() throws IOException {
         XLogStreamer.Filter.reset();
         XLogStreamer.Filter.defineParameter("USER");

http://git-wip-us.apache.org/repos/asf/oozie/blob/d6ddfba1/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index c5cdf6f..a067414 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -1,5 +1,6 @@
 -- Oozie 4.1.0 release (trunk - unreleased)
 
+OOZIE-1691 StackOverflowError in TimestampedMessageParser.parseNextLine() 
(puru via rkanter)
 OOZIE-1552 Bring Windows shell script functionality and structure in line with 
trunk (omaliuvanchuk via rkanter)
 OOZIE-1608 Update Curator to 2.4.0 when its available to fix security hole 
(rkanter)
 OOZIE-1687 Bundle can still be in RUNNINGWITHERROR status after bundle kill 
(rohini)

Reply via email to