KYLIN-1149 When yarn return an incomplete job tracking URL, Kylin will fail to get job status
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/db7f8be0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/db7f8be0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/db7f8be0 Branch: refs/heads/1.x-HBase1.1.3 Commit: db7f8be0fe2929edd72fff0ea4b0fcfe937816e5 Parents: 2432e2d Author: shaofengshi <shaofeng...@apache.org> Authored: Mon Nov 16 16:29:16 2015 +0800 Committer: shaofengshi <shaofeng...@apache.org> Committed: Mon Nov 16 16:29:16 2015 +0800 ---------------------------------------------------------------------- .../kylin/job/tools/HadoopStatusGetter.java | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/db7f8be0/job/src/main/java/org/apache/kylin/job/tools/HadoopStatusGetter.java ---------------------------------------------------------------------- diff --git a/job/src/main/java/org/apache/kylin/job/tools/HadoopStatusGetter.java b/job/src/main/java/org/apache/kylin/job/tools/HadoopStatusGetter.java index 398d15a..0cd4d43 100644 --- a/job/src/main/java/org/apache/kylin/job/tools/HadoopStatusGetter.java +++ b/job/src/main/java/org/apache/kylin/job/tools/HadoopStatusGetter.java @@ -19,6 +19,7 @@ package org.apache.kylin.job.tools; import java.io.IOException; +import java.net.MalformedURLException; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; @@ -26,6 +27,7 @@ import org.apache.commons.httpclient.HttpMethod; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.protocol.Protocol; import org.apache.commons.httpclient.protocol.ProtocolSocketFactory; +import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.tuple.Pair; import org.apache.hadoop.yarn.api.records.FinalApplicationStatus; import org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppState; @@ -84,6 +86,11 @@ public class HadoopStatusGetter { int cut = s.indexOf("url="); if (cut >= 0) { redirect = s.substring(cut + 4); + + if (isValidURL(redirect) == false) { + log.info("Get invalid redirect url, skip it: " + redirect); + continue; + } } } @@ -112,4 +119,18 @@ public class HadoopStatusGetter { } } + private static boolean isValidURL(String value) { + if (StringUtils.isNotEmpty(value)) { + java.net.URL url; + try { + url = new java.net.URL(value); + } catch (MalformedURLException var5) { + return false; + } + + return StringUtils.isNotEmpty(url.getProtocol()) && StringUtils.isNotEmpty(url.getHost()); + } + + return false; + } }