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

brahma pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 3a9ccf7  YARN-10141.Interceptor in FederationInterceptorREST doesnt 
update on RM switchover. Contributed by  D M Murali Krishna Reddy.
3a9ccf7 is described below

commit 3a9ccf7f6d91f12ba6db33142cc033e4957e994f
Author: Brahma Reddy Battula <bra...@apache.org>
AuthorDate: Wed Feb 26 23:24:00 2020 +0530

    YARN-10141.Interceptor in FederationInterceptorREST doesnt update on RM 
switchover. Contributed by  D M Murali Krishna Reddy.
---
 .../webapp/DefaultRequestInterceptorREST.java      |  4 +++
 .../router/webapp/FederationInterceptorREST.java   |  6 +++-
 .../webapp/TestFederationInterceptorREST.java      | 39 ++++++++++++++++++++++
 .../webapp/TestableFederationInterceptorREST.java  |  2 +-
 4 files changed, 49 insertions(+), 2 deletions(-)

diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/DefaultRequestInterceptorREST.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/DefaultRequestInterceptorREST.java
index 3dc4fdd..c223c08 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/DefaultRequestInterceptorREST.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/DefaultRequestInterceptorREST.java
@@ -81,6 +81,10 @@ public class DefaultRequestInterceptorREST
     this.webAppAddress = webAppAddress;
   }
 
+  protected String getWebAppAddress() {
+    return this.webAppAddress;
+  }
+
   protected void setSubClusterId(SubClusterId scId) {
     this.subClusterId = scId;
   }
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/FederationInterceptorREST.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/FederationInterceptorREST.java
index a1b004c..b14da6c 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/FederationInterceptorREST.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/FederationInterceptorREST.java
@@ -97,6 +97,7 @@ import 
org.apache.hadoop.yarn.server.webapp.dao.ContainersInfo;
 import org.apache.hadoop.yarn.util.Clock;
 import org.apache.hadoop.yarn.util.MonotonicClock;
 import org.apache.hadoop.yarn.webapp.NotFoundException;
+import org.apache.hadoop.yarn.webapp.util.WebAppUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -237,7 +238,10 @@ public class FederationInterceptorREST extends 
AbstractRESTRequestInterceptor {
       SubClusterId subClusterId, String webAppAddress) {
     DefaultRequestInterceptorREST interceptor =
         getInterceptorForSubCluster(subClusterId);
-    if (interceptor == null) {
+    String webAppAddresswithScheme = WebAppUtils.getHttpSchemePrefix(
+            this.getConf()) + webAppAddress;
+    if (interceptor == null || !webAppAddresswithScheme.equals(interceptor.
+        getWebAppAddress())){
       interceptor = createInterceptorForSubCluster(subClusterId, 
webAppAddress);
     }
     return interceptor;
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestFederationInterceptorREST.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestFederationInterceptorREST.java
index 54474e5..b3a7e90 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestFederationInterceptorREST.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestFederationInterceptorREST.java
@@ -32,6 +32,9 @@ import org.apache.hadoop.yarn.exceptions.YarnException;
 import 
org.apache.hadoop.yarn.server.federation.policies.manager.UniformBroadcastPolicyManager;
 import 
org.apache.hadoop.yarn.server.federation.store.impl.MemoryFederationStateStore;
 import org.apache.hadoop.yarn.server.federation.store.records.SubClusterId;
+import org.apache.hadoop.yarn.server.federation.store.records.SubClusterInfo;
+import 
org.apache.hadoop.yarn.server.federation.store.records.SubClusterRegisterRequest;
+import org.apache.hadoop.yarn.server.federation.store.records.SubClusterState;
 import 
org.apache.hadoop.yarn.server.federation.utils.FederationStateStoreFacade;
 import 
org.apache.hadoop.yarn.server.federation.utils.FederationStateStoreTestUtil;
 import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.AppInfo;
@@ -44,6 +47,7 @@ import 
org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.NodeInfo;
 import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.NodesInfo;
 import org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ResourceInfo;
 import 
org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ResourceOptionInfo;
+import org.apache.hadoop.yarn.util.MonotonicClock;
 import org.junit.Assert;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -521,4 +525,39 @@ public class TestFederationInterceptorREST extends 
BaseRouterWebServicesTest {
     Assert.assertNull(response);
   }
 
+  /**
+   * This test validates the creation of new interceptor in case of a
+   * RMSwitchover in a subCluster.
+   */
+  @Test
+  public void testRMSwitchoverOfOneSC() throws Exception {
+    SubClusterId subClusterId = SubClusterId.newInstance(Integer.toString(0));
+
+    interceptor.getClusterMetricsInfo();
+    Assert.assertEquals("http://1.2.3.4:4";, interceptor
+            .getInterceptorForSubCluster(subClusterId).getWebAppAddress());
+
+    //Register the first subCluster with secondRM simulating RMSwitchover
+    registerSubClusterWithSwitchoverRM(subClusterId);
+
+    interceptor.getClusterMetricsInfo();
+    Assert.assertEquals("http://5.6.7.8:8";, interceptor
+            .getInterceptorForSubCluster(subClusterId).getWebAppAddress());
+  }
+
+  private void registerSubClusterWithSwitchoverRM(SubClusterId subClusterId)
+          throws YarnException {
+    String amRMAddress = "5.6.7.8:5";
+    String clientRMAddress = "5.6.7.8:6";
+    String rmAdminAddress = "5.6.7.8:7";
+    String webAppAddress = "5.6.7.8:8";
+
+    SubClusterInfo subClusterInfo = SubClusterInfo.newInstance(subClusterId,
+            amRMAddress, clientRMAddress, rmAdminAddress, webAppAddress,
+            SubClusterState.SC_RUNNING, new MonotonicClock().getTime(),
+            "capability");
+    stateStore.registerSubCluster(
+            SubClusterRegisterRequest.newInstance(subClusterInfo));
+  }
+
 }
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestableFederationInterceptorREST.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestableFederationInterceptorREST.java
index ce5bb23..7126ca5 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestableFederationInterceptorREST.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestableFederationInterceptorREST.java
@@ -42,7 +42,7 @@ public class TestableFederationInterceptorREST
   protected void registerBadSubCluster(SubClusterId badSC) {
 
     // Adding in the cache the bad SubCluster, in this way we can stop them
-    getOrCreateInterceptorForSubCluster(badSC, "test");
+    getOrCreateInterceptorForSubCluster(badSC, "1.2.3.4:4");
 
     badSubCluster.add(badSC);
     MockDefaultRequestInterceptorREST interceptor =


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to