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/common-secure/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java shims/src/common-secure/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java index 620c014..73d2045 100644 --- shims/src/common-secure/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java +++ shims/src/common-secure/java/org/apache/hadoop/hive/shims/HadoopShimsSecure.java @@ -33,6 +33,7 @@ import org.apache.hadoop.fs.PathFilter; import org.apache.hadoop.hdfs.MiniDFSCluster; import org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil; import org.apache.hadoop.hive.thrift.DelegationTokenSelector; +import org.apache.hadoop.http.HtmlQuoting; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.ClusterStatus; import org.apache.hadoop.mapred.FileInputFormat; @@ -78,6 +79,11 @@ public abstract class HadoopShimsSecure implements HadoopShims { // gone in 0.18+ } + @Override + public String unquoteHtmlChars(String item) { + return HtmlQuoting.unquoteHtmlChars(item); + } + public boolean isJobPreparing(RunningJob job) throws IOException { return job.getJobState() == JobStatus.PREP; } 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