diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/errors/TaskLogProcessor.java ql/src/java/org/apache/hadoop/hive/ql/exec/errors/TaskLogProcessor.java index 5a5dd12..c5862d0 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/errors/TaskLogProcessor.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/errors/TaskLogProcessor.java @@ -31,6 +31,7 @@ import java.util.Map.Entry; import java.util.regex.Pattern; import org.apache.hadoop.hive.conf.HiveConf; +import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.mapred.JobConf; /** @@ -201,7 +202,8 @@ public class TaskLogProcessor { Pattern endStackTracePattern = Pattern.compile("^\t... [0-9]+ more.*", Pattern.CASE_INSENSITIVE); - while ((inputLine = in.readLine()) != null) { + while ((inputLine = + ShimLoader.getHadoopShims().unquoteHtmlChars(in.readLine())) != null) { if (stackTracePattern.matcher(inputLine).matches() || endStackTracePattern.matcher(inputLine).matches()) { diff --git shims/src/0.20/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java shims/src/0.20/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java index eac70d4..f7fd76e 100644 --- shims/src/0.20/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java +++ shims/src/0.20/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java @@ -545,6 +545,12 @@ public class Hadoop20Shims implements HadoopShims { } @Override + public String unquoteHtmlChars(String item) { + return item; + } + + + @Override public org.apache.hadoop.mapreduce.TaskAttemptContext newTaskAttemptContext(Configuration conf, final Progressable progressable) { return new org.apache.hadoop.mapreduce.TaskAttemptContext(conf, new TaskAttemptID()) { @Override diff --git shims/src/0.20S/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java shims/src/0.20S/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java index 563b316..8ce593d 100644 --- shims/src/0.20S/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java +++ shims/src/0.20S/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java @@ -44,6 +44,11 @@ public class Hadoop20SShims extends HadoopShimsSecure { } @Override + public String unquoteHtmlChars(String item) { + return item; + } + + @Override public org.apache.hadoop.mapreduce.TaskAttemptContext newTaskAttemptContext(Configuration conf, final Progressable progressable) { return new org.apache.hadoop.mapreduce.TaskAttemptContext(conf, new TaskAttemptID()) { @Override diff --git shims/src/0.23/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java shims/src/0.23/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java index 63b47cb..47c6717 100644 --- shims/src/0.23/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java +++ shims/src/0.23/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java @@ -20,6 +20,7 @@ package org.apache.hadoop.hive.shims; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hive.shims.HadoopShims.JobTrackerState; import org.apache.hadoop.hive.shims.HadoopShimsSecure; +import org.apache.hadoop.http.HtmlQuoting; import org.apache.hadoop.mapred.ClusterStatus; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.TaskAttemptID; @@ -47,6 +48,11 @@ public class Hadoop23Shims extends HadoopShimsSecure { } @Override + public String unquoteHtmlChars(String item) { + return HtmlQuoting.unquoteHtmlChars(item); + } + + @Override public org.apache.hadoop.mapreduce.TaskAttemptContext newTaskAttemptContext(Configuration conf, final Progressable progressable) { return new TaskAttemptContextImpl(conf, new TaskAttemptID()) { @Override diff --git shims/src/common/java/org/apache/hadoop/hive/shims/HadoopShims.java shims/src/common/java/org/apache/hadoop/hive/shims/HadoopShims.java index 80d1268..7b0c410 100644 --- shims/src/common/java/org/apache/hadoop/hive/shims/HadoopShims.java +++ shims/src/common/java/org/apache/hadoop/hive/shims/HadoopShims.java @@ -158,6 +158,14 @@ public interface HadoopShims { void prepareJobOutput(JobConf conf); /** + * Used by TaskLogProcessor to Remove HTML quoting from a string + * @param item the string to unquote + * @return the unquoted string + * + */ + public String unquoteHtmlChars(String item); + + /** * Get the UGI that the given job configuration will run as. * * In secure versions of Hadoop, this simply returns the current