[ https://issues.apache.org/jira/browse/OOZIE-1691?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13899789#comment-13899789 ]
Robert Kanter commented on OOZIE-1691: -------------------------------------- The fix itself looks good; I'm glad it was so minimal :) For the test {code:java} 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"; {code} should be {code:java} 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"; {code} (I added a {{\n}} at the end). Otherwise, all of those log messages end up on one line; and the test passes even without the fix! > StackOverflowError in TimestampedMessageParser.parseNextLine() > -------------------------------------------------------------- > > Key: OOZIE-1691 > URL: https://issues.apache.org/jira/browse/OOZIE-1691 > Project: Oozie > Issue Type: Bug > Reporter: purshotam shah > Assignee: purshotam shah > Attachments: OOZIE-1691.patch > > > Below function will throws StackOverflowError if no matching line is found > for a few consecutive lines. > This will be a common scenario in HA where bundle/coord/WF got executed in > other host. For log aggregation we have to search logs in all host and may > lead to StackOverflowError. > {code:java} > protected String parseNextLine() throws IOException { > String line = reader.readLine(); > if (line != null) { > ArrayList<String> logParts = filter.splitLogMessage(line); > if (logParts != null) { > patternMatched = filter.matches(logParts); > } > if (!patternMatched) { > line = parseNextLine(); > } > } > return line; > } > {code} > Exception > Caused by: java.lang.StackOverflowError > at java.util.regex.Pattern$GroupTail.match(Pattern.java:4615) > at java.util.regex.Pattern$Curly.match0(Pattern.java:4170) > ........................................... > at > java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3715) > at > java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3715) > at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556) > at java.util.regex.Matcher.match(Matcher.java:1221) > at java.util.regex.Matcher.matches(Matcher.java:559) > at > org.apache.oozie.util.XLogStreamer$Filter.splitLogMessage(XLogStreamer.java:138) > at > org.apache.oozie.util.TimestampedMessageParser.parseNextLine(TimestampedMessageParser.java:138) > at > org.apache.oozie.util.TimestampedMessageParser.parseNextLine(TimestampedMessageParser.java:143) > at > org.apache.oozie.util.TimestampedMessageParser.parseNextLine(TimestampedMessageParser.java:143) > at > org.apache.oozie.util.TimestampedMessageParser.parseNextLine(TimestampedMessageParser.java:143) -- This message was sent by Atlassian JIRA (v6.1.5#6160)