Bladeren bron

YARN-9054. Fix FederationStateStoreFacade#buildGetSubClustersCacheRequest. Contributed by Bibin A Chundatt.

Giovanni Matteo Fumarola 6 jaren geleden
bovenliggende
commit
0d8406135f

+ 3 - 2
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/federation/utils/FederationStateStoreFacade.java

@@ -463,8 +463,9 @@ public final class FederationStateStoreFacade {
 
   private Object buildGetSubClustersCacheRequest(
       final boolean filterInactiveSubClusters) {
-    final String cacheKey = buildCacheKey(getClass().getSimpleName(),
-        GET_SUBCLUSTERS_CACHEID, null);
+    final String cacheKey =
+        buildCacheKey(getClass().getSimpleName(), GET_SUBCLUSTERS_CACHEID,
+            Boolean.toString(filterInactiveSubClusters));
     CacheRequest<String, Map<SubClusterId, SubClusterInfo>> cacheRequest =
         new CacheRequest<String, Map<SubClusterId, SubClusterInfo>>(cacheKey,
             new Func<String, Map<SubClusterId, SubClusterInfo>>() {

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/utils/FederationStateStoreTestUtil.java

@@ -172,7 +172,7 @@ public class FederationStateStoreTestUtil {
     }
   }
 
-  private void deRegisterSubCluster(SubClusterId subClusterId)
+  public void deRegisterSubCluster(SubClusterId subClusterId)
       throws YarnException {
     stateStore.deregisterSubCluster(SubClusterDeregisterRequest
         .newInstance(subClusterId, SubClusterState.SC_UNREGISTERED));

+ 17 - 0
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/utils/TestFederationStateStoreFacade.java

@@ -18,6 +18,7 @@
 package org.apache.hadoop.yarn.server.federation.utils;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Map;
@@ -135,6 +136,22 @@ public class TestFederationStateStoreFacade {
     }
   }
 
+  @Test
+  public void testSubClustersCache() throws YarnException {
+    Map<SubClusterId, SubClusterInfo> allClusters =
+        facade.getSubClusters(false);
+    Assert.assertEquals(numSubClusters, allClusters.size());
+    SubClusterId clusterId = new ArrayList<>(allClusters.keySet()).get(0);
+    // make  one subcluster down unregister
+    stateStoreTestUtil.deRegisterSubCluster(clusterId);
+    Map<SubClusterId, SubClusterInfo> activeClusters =
+        facade.getSubClusters(true);
+    Assert.assertEquals(numSubClusters - 1, activeClusters.size());
+    // Recheck false case.
+    allClusters = facade.getSubClusters(false);
+    Assert.assertEquals(numSubClusters, allClusters.size());
+  }
+
   @Test
   public void testInvalidGetPolicyConfiguration() throws YarnException {
     Assert.assertNull(