Gracefully handle wrapped ParsingTimeoutException Parboiled wraps the Pegdown generated ParsingTimeoutException with its own runtime exception type. Catch this and rethrow the timeout for less verbose logging. Change-Id: I3df293fac65c374bc37b076e4f0195936640c937
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/GitilesMarkdown.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/GitilesMarkdown.java index 9683472..4a7df37 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/GitilesMarkdown.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/GitilesMarkdown.java
@@ -14,10 +14,12 @@ package com.google.gitiles.doc; +import com.google.common.base.Throwables; import com.google.gitiles.GitilesView; import org.parboiled.Rule; import org.parboiled.common.Factory; +import org.parboiled.errors.ParserRuntimeException; import org.parboiled.support.StringBuilderVar; import org.parboiled.support.Var; import org.pegdown.Parser; @@ -52,7 +54,12 @@ } try { - return newParser().parseMarkdown(md.toCharArray()); + try { + return newParser().parseMarkdown(md.toCharArray()); + } catch (ParserRuntimeException e) { + Throwables.propagateIfInstanceOf(e.getCause(), ParsingTimeoutException.class); + throw e; + } } catch (ParsingTimeoutException e) { log.error("timeout rendering {}/{} at {}", view.getRepositoryName(),