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

ayushsaxena pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tez.git


The following commit(s) were added to refs/heads/master by this push:
     new 38c5aaccd TEZ-4564: TezClient to expose Tez AM host:port (#356). 
(Laszlo Bodor, reviewed by Ayush Saxena)
38c5aaccd is described below

commit 38c5aaccdf8e4f7db210975021c78b6db556c87f
Author: Bodor Laszlo <bodorlaszlo0...@gmail.com>
AuthorDate: Tue May 28 07:45:54 2024 +0200

    TEZ-4564: TezClient to expose Tez AM host:port (#356). (Laszlo Bodor, 
reviewed by Ayush Saxena)
---
 .../java/org/apache/tez/client/FrameworkClient.java   |  3 +++
 .../main/java/org/apache/tez/client/TezClient.java    |  8 ++++++++
 .../java/org/apache/tez/client/TezYarnClient.java     | 15 +++++++++++++++
 .../java/org/apache/tez/client/TestTezClient.java     | 19 +++++++++++++++++++
 .../main/java/org/apache/tez/client/LocalClient.java  | 15 +++++++++++++++
 5 files changed, 60 insertions(+)

diff --git a/tez-api/src/main/java/org/apache/tez/client/FrameworkClient.java 
b/tez-api/src/main/java/org/apache/tez/client/FrameworkClient.java
index 26c11fd08..a1a0b8a5e 100644
--- a/tez-api/src/main/java/org/apache/tez/client/FrameworkClient.java
+++ b/tez-api/src/main/java/org/apache/tez/client/FrameworkClient.java
@@ -94,6 +94,9 @@ public abstract class FrameworkClient {
 
   public abstract ApplicationReport getApplicationReport(ApplicationId appId) 
throws YarnException, IOException;
 
+  public abstract String getAmHost();
+  public abstract int getAmPort();
+
   public abstract boolean isRunning() throws IOException;
 
   public TezAppMasterStatus getAMStatus(Configuration conf, ApplicationId 
appId,
diff --git a/tez-api/src/main/java/org/apache/tez/client/TezClient.java 
b/tez-api/src/main/java/org/apache/tez/client/TezClient.java
index c63270085..937346cac 100644
--- a/tez-api/src/main/java/org/apache/tez/client/TezClient.java
+++ b/tez-api/src/main/java/org/apache/tez/client/TezClient.java
@@ -1286,4 +1286,12 @@ public class TezClient {
               + appIdStr, n);
     }
   }
+
+  public String getAmHost() {
+    return frameworkClient == null ? null : frameworkClient.getAmHost();
+  }
+
+  public int getAmPort() {
+    return frameworkClient == null ? -1 : frameworkClient.getAmPort();
+  }
 }
diff --git a/tez-api/src/main/java/org/apache/tez/client/TezYarnClient.java 
b/tez-api/src/main/java/org/apache/tez/client/TezYarnClient.java
index f89664d86..d10964807 100644
--- a/tez-api/src/main/java/org/apache/tez/client/TezYarnClient.java
+++ b/tez-api/src/main/java/org/apache/tez/client/TezYarnClient.java
@@ -40,6 +40,9 @@ public class TezYarnClient extends FrameworkClient {
 
   private volatile boolean isRunning;
 
+  private String amHost;
+  private int amPort;
+
   protected TezYarnClient(YarnClient yarnClient) {
     this.yarnClient = yarnClient;
   }
@@ -100,6 +103,8 @@ public class TezYarnClient extends FrameworkClient {
       throw new ApplicationNotFoundException("YARN reports no state for 
application "
           + appId);
     }
+    this.amHost = report.getHost();
+    this.amPort = report.getRpcPort();
     return report;
   }
 
@@ -107,4 +112,14 @@ public class TezYarnClient extends FrameworkClient {
   public boolean isRunning() throws IOException {
     return isRunning;
   }
+
+  @Override
+  public String getAmHost() {
+    return amHost;
+  }
+
+  @Override
+  public int getAmPort() {
+    return amPort;
+  }
 }
diff --git a/tez-api/src/test/java/org/apache/tez/client/TestTezClient.java 
b/tez-api/src/test/java/org/apache/tez/client/TestTezClient.java
index e4d03cc60..1b93f924a 100644
--- a/tez-api/src/test/java/org/apache/tez/client/TestTezClient.java
+++ b/tez-api/src/test/java/org/apache/tez/client/TestTezClient.java
@@ -161,6 +161,16 @@ public class TestTezClient {
       }
       return super.getProxy(conf, sessionAppId, ugi);
     }
+
+    @Override
+    public String getAmHost() {
+      return "testhost";
+    }
+
+    @Override
+    public int getAmPort() {
+      return 1234;
+    }
   }
 
   TezClientForTest configureAndCreateTezClient() throws YarnException, 
IOException, ServiceException {
@@ -1005,4 +1015,13 @@ public class TestTezClient {
     //Test that Exception is not thrown by createFinalConfProtoForApp
     TezClientUtils.createFinalConfProtoForApp(conf, null);
   }
+
+  @Test
+  public void testGetAmHostAndPort() throws Exception {
+    final TezClientForTest client = configureAndCreateTezClient(new 
TezConfiguration());
+
+    // TezClient exposes AM host and port from the FrameworkClient (now it's a 
TezYarnClientForTest)
+    assertEquals("testhost", client.getAmHost());
+    assertEquals(1234, client.getAmPort());
+  }
 }
diff --git a/tez-dag/src/main/java/org/apache/tez/client/LocalClient.java 
b/tez-dag/src/main/java/org/apache/tez/client/LocalClient.java
index bf1cef4c4..73f60bdcc 100644
--- a/tez-dag/src/main/java/org/apache/tez/client/LocalClient.java
+++ b/tez-dag/src/main/java/org/apache/tez/client/LocalClient.java
@@ -88,6 +88,8 @@ public class LocalClient extends FrameworkClient {
   private TezApiVersionInfo versionInfo = new TezApiVersionInfo();
   private volatile Throwable amFailException = null;
   private boolean isLocalWithoutNetwork;
+  private String amHost;
+  private int amPort;
 
   private static final String localModeDAGSchedulerClassName =
       "org.apache.tez.dag.app.dag.impl.DAGSchedulerNaturalOrderControlled";
@@ -204,6 +206,9 @@ public class LocalClient extends FrameworkClient {
     report.setProgress(dagAppMaster.getProgress());
     report.setAMRMToken(null);
 
+    this.amHost = dagAppMaster.getAppNMHost();
+    this.amPort = dagAppMaster.getRpcPort();
+
     return report;
   }
 
@@ -475,4 +480,14 @@ public class LocalClient extends FrameworkClient {
     }
     return super.shutdownSession(configuration, sessionAppId, ugi);
   }
+
+  @Override
+  public String getAmHost() {
+    return amHost;
+  }
+
+  @Override
+  public int getAmPort() {
+    return amPort;
+  }
 }

Reply via email to