This is an automated email from the ASF dual-hosted git repository.

nju_yaho pushed a commit to tag ebay-3.1.0-release-20200701
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit c5ef6a5ed2f97c1bdb8b1e064613f65f3cb3c830
Author: Wang Ken <mingmw...@ebay.com>
AuthorDate: Fri Jun 19 18:14:22 2020 +0800

    EBAY-KYLIN-1204 Check and fix Kylin Yarn job tracking url
---
 .../kylin/engine/mr/common/HadoopCmdOutput.java       | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git 
a/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/HadoopCmdOutput.java
 
b/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/HadoopCmdOutput.java
index df89ed8..53282cc 100644
--- 
a/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/HadoopCmdOutput.java
+++ 
b/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/HadoopCmdOutput.java
@@ -47,6 +47,8 @@ public class HadoopCmdOutput {
     private final StringBuilder output;
     private final Job job;
 
+    private String trackingURL;
+
     public HadoopCmdOutput(Job job, StringBuilder output) {
         super();
         this.job = job;
@@ -64,7 +66,22 @@ public class HadoopCmdOutput {
                 status.put(ExecutableConstants.MR_JOB_ID, 
job.getJobID().toString());
             }
             if (null != job.getTrackingURL()) {
-                status.put(ExecutableConstants.YARN_APP_URL, 
job.getTrackingURL().toString());
+                String newTrackingURL = job.getTrackingURL();
+                logger.info(ExecutableConstants.YARN_APP_URL + ":" + 
newTrackingURL);
+                if (trackingURL == null) {
+                    trackingURL = newTrackingURL;
+                } else if (!newTrackingURL.equals(trackingURL)) {
+                    // fix for the bug that getTrackingURL() return url 
without http or https header even https is enabled,
+                    // just a workaround, tobe deleted when this issue resolved
+                    if (trackingURL.startsWith("https://";) && 
(!newTrackingURL.startsWith("https://";))) {
+                        trackingURL = "https://"; + newTrackingURL;
+                    } else if (trackingURL.startsWith("http://";) && 
(!newTrackingURL.startsWith("http://";))) {
+                        trackingURL = "http://"; + newTrackingURL;
+                    } else {
+                        trackingURL = newTrackingURL;
+                    }
+                }
+                status.put(ExecutableConstants.YARN_APP_URL, trackingURL);
             }
             return status;
         } else {

Reply via email to