Browse Source

YARN-11435. [Router] FederationStateStoreFacade is not reinitialized with Router conf. (#5967) Contributed by Shilun Fan.

Reviewed-by: Inigo Goiri <inigoiri@apache.org>
Signed-off-by: Shilun Fan <slfan1989@apache.org>
slfan1989 1 year ago
parent
commit
a6c2526c6c
44 changed files with 129 additions and 63 deletions
  1. 2 2
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/TestFederationRMFailoverProxyProvider.java
  2. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/federation/failover/FederationRMFailoverProxyProvider.java
  3. 47 5
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/federation/utils/FederationStateStoreFacade.java
  4. 2 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/cache/TestFederationCache.java
  5. 6 3
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/policies/BaseFederationPoliciesTest.java
  6. 3 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/policies/TestFederationPolicyInitializationContextValidator.java
  7. 1 2
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/policies/TestRouterPolicyFacade.java
  8. 3 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/policies/manager/BasePolicyManagerTest.java
  9. 16 5
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/utils/FederationPoliciesTestUtil.java
  10. 3 2
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/utils/TestFederationStateStoreFacade.java
  11. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/src/main/java/org/apache/hadoop/yarn/server/globalpolicygenerator/GlobalPolicyGenerator.java
  12. 2 2
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/src/test/java/org/apache/hadoop/yarn/server/globalpolicygenerator/TestGPGPolicyFacade.java
  13. 3 3
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/src/test/java/org/apache/hadoop/yarn/server/globalpolicygenerator/policygenerator/TestPolicyGenerator.java
  14. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/src/test/java/org/apache/hadoop/yarn/server/globalpolicygenerator/secure/AbstractGlobalPolicyGeneratorTest.java
  15. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/src/test/java/org/apache/hadoop/yarn/server/globalpolicygenerator/subclustercleaner/TestSubClusterCleaner.java
  16. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/AMRMProxyService.java
  17. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/FederationInterceptor.java
  18. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/TestFederationInterceptor.java
  19. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/TestFederationInterceptorSecure.java
  20. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/cleaner/SubClusterCleaner.java
  21. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/clientrm/FederationClientInterceptor.java
  22. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/clientrm/RouterClientRMService.java
  23. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/rmadmin/FederationRMAdminInterceptor.java
  24. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/rmadmin/RMAdminProtocolMethod.java
  25. 4 2
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/security/RouterDelegationTokenSecretManager.java
  26. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/AboutBlock.java
  27. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/AppsBlock.java
  28. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/FederationInterceptorREST.java
  29. 2 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/NodeLabelsBlock.java
  30. 2 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/NodesBlock.java
  31. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/RouterBlock.java
  32. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/cleaner/TestSubClusterCleaner.java
  33. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/clientrm/TestFederationClientInterceptor.java
  34. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/clientrm/TestFederationClientInterceptorRetry.java
  35. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/clientrm/TestableFederationClientInterceptor.java
  36. 2 2
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/rmadmin/TestFederationRMAdminInterceptor.java
  37. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/secure/AbstractSecureRouterTest.java
  38. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/MockRouter.java
  39. 3 2
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestFederationInterceptorREST.java
  40. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestFederationInterceptorRESTRetry.java
  41. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestRouterWebAppProxy.java
  42. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/FedAppReportFetcher.java
  43. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/test/java/org/apache/hadoop/yarn/server/webproxy/TestFedAppReportFetcher.java
  44. 1 1
      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/test/java/org/apache/hadoop/yarn/server/webproxy/TestWebAppProxyServletFed.java

+ 2 - 2
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/TestFederationRMFailoverProxyProvider.java

@@ -77,7 +77,7 @@ public class TestFederationRMFailoverProxyProvider {
 
 
     stateStore = spy(new MemoryFederationStateStore());
     stateStore = spy(new MemoryFederationStateStore());
     stateStore.init(conf);
     stateStore.init(conf);
-    FederationStateStoreFacade.getInstance().reinitialize(stateStore, conf);
+    FederationStateStoreFacade.getInstance(conf).reinitialize(stateStore, conf);
     verify(stateStore, times(0))
     verify(stateStore, times(0))
         .getSubClusters(any(GetSubClustersInfoRequest.class));
         .getSubClusters(any(GetSubClustersInfoRequest.class));
   }
   }
@@ -180,7 +180,7 @@ public class TestFederationRMFailoverProxyProvider {
           .getSubClusters(any(GetSubClustersInfoRequest.class));
           .getSubClusters(any(GetSubClustersInfoRequest.class));
 
 
       // Force flush cache, so that it will pick up the new RM address
       // Force flush cache, so that it will pick up the new RM address
-      FederationStateStoreFacade.getInstance().getSubCluster(subClusterId,
+      FederationStateStoreFacade.getInstance(conf).getSubCluster(subClusterId,
           true);
           true);
     }
     }
 
 

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/federation/failover/FederationRMFailoverProxyProvider.java

@@ -76,7 +76,7 @@ public class FederationRMFailoverProxyProvider<T>
     String clusterId = configuration.get(YarnConfiguration.RM_CLUSTER_ID);
     String clusterId = configuration.get(YarnConfiguration.RM_CLUSTER_ID);
     Preconditions.checkNotNull(clusterId, "Missing RM ClusterId");
     Preconditions.checkNotNull(clusterId, "Missing RM ClusterId");
     this.subClusterId = SubClusterId.newInstance(clusterId);
     this.subClusterId = SubClusterId.newInstance(clusterId);
-    this.facade = FederationStateStoreFacade.getInstance();
+    this.facade = FederationStateStoreFacade.getInstance(configuration);
     if (configuration instanceof YarnConfiguration) {
     if (configuration instanceof YarnConfiguration) {
       this.conf = (YarnConfiguration) configuration;
       this.conf = (YarnConfiguration) configuration;
     }
     }

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

@@ -105,8 +105,7 @@ public final class FederationStateStoreFacade {
   private static final Logger LOG =
   private static final Logger LOG =
       LoggerFactory.getLogger(FederationStateStoreFacade.class);
       LoggerFactory.getLogger(FederationStateStoreFacade.class);
 
 
-  private static final FederationStateStoreFacade FACADE =
-      new FederationStateStoreFacade();
+  private static volatile FederationStateStoreFacade facade;
 
 
   private static Random rand = new Random(System.currentTimeMillis());
   private static Random rand = new Random(System.currentTimeMillis());
 
 
@@ -115,8 +114,8 @@ public final class FederationStateStoreFacade {
   private SubClusterResolver subclusterResolver;
   private SubClusterResolver subclusterResolver;
   private FederationCache federationCache;
   private FederationCache federationCache;
 
 
-  private FederationStateStoreFacade() {
-    initializeFacadeInternal(new Configuration());
+  private FederationStateStoreFacade(Configuration conf) {
+    initializeFacadeInternal(conf);
   }
   }
 
 
   private void initializeFacadeInternal(Configuration config) {
   private void initializeFacadeInternal(Configuration config) {
@@ -199,7 +198,50 @@ public final class FederationStateStoreFacade {
    * @return the singleton {@link FederationStateStoreFacade} instance
    * @return the singleton {@link FederationStateStoreFacade} instance
    */
    */
   public static FederationStateStoreFacade getInstance() {
   public static FederationStateStoreFacade getInstance() {
-    return FACADE;
+    return getInstanceInternal(new Configuration());
+  }
+
+  /**
+   * Returns the singleton instance of the FederationStateStoreFacade object.
+   *
+   * @param conf configuration.
+   * @return the singleton {@link FederationStateStoreFacade} instance
+   */
+  public static FederationStateStoreFacade getInstance(Configuration conf) {
+    return getInstanceInternal(conf);
+  }
+
+  /**
+   * Returns the singleton instance of the FederationStateStoreFacade object.
+   *
+   * @param conf configuration.
+   * @return the singleton {@link FederationStateStoreFacade} instance
+   */
+  private static FederationStateStoreFacade getInstanceInternal(Configuration conf){
+    if (facade != null) {
+      return facade;
+    }
+    generateStateStoreFacade(conf);
+    return facade;
+  }
+
+  /**
+   * Generate the singleton instance of the FederationStateStoreFacade object.
+   *
+   * @param conf configuration.
+   */
+  private static void generateStateStoreFacade(Configuration conf){
+    if (facade == null) {
+      synchronized (FederationStateStoreFacade.class) {
+        if (facade == null) {
+          Configuration yarnConf = new Configuration();
+          if (conf != null) {
+            yarnConf = conf;
+          }
+          facade = new FederationStateStoreFacade(yarnConf);
+        }
+      }
+    }
   }
   }
 
 
   /**
   /**

+ 2 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/cache/TestFederationCache.java

@@ -60,13 +60,14 @@ public class TestFederationCache {
   private Configuration conf;
   private Configuration conf;
   private FederationStateStore stateStore;
   private FederationStateStore stateStore;
   private FederationStateStoreTestUtil stateStoreTestUtil;
   private FederationStateStoreTestUtil stateStoreTestUtil;
-  private FederationStateStoreFacade facade = FederationStateStoreFacade.getInstance();
+  private FederationStateStoreFacade facade;
 
 
   public TestFederationCache(Class cacheClassName) {
   public TestFederationCache(Class cacheClassName) {
     conf = new Configuration();
     conf = new Configuration();
     conf.setInt(YarnConfiguration.FEDERATION_CACHE_TIME_TO_LIVE_SECS, 1);
     conf.setInt(YarnConfiguration.FEDERATION_CACHE_TIME_TO_LIVE_SECS, 1);
     conf.setClass(YarnConfiguration.FEDERATION_FACADE_CACHE_CLASS,
     conf.setClass(YarnConfiguration.FEDERATION_FACADE_CACHE_CLASS,
         cacheClassName, FederationCache.class);
         cacheClassName, FederationCache.class);
+    facade = FederationStateStoreFacade.getInstance(conf);
   }
   }
 
 
   @Before
   @Before

+ 6 - 3
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/policies/BaseFederationPoliciesTest.java

@@ -27,6 +27,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.Random;
 import java.util.Random;
 
 
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.yarn.api.protocolrecords.ReservationSubmissionRequest;
 import org.apache.hadoop.yarn.api.protocolrecords.ReservationSubmissionRequest;
 import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
 import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
 import org.apache.hadoop.yarn.api.records.ResourceRequest;
 import org.apache.hadoop.yarn.api.records.ResourceRequest;
@@ -75,7 +76,8 @@ public abstract class BaseFederationPoliciesTest {
         .newInstance("queue1", getPolicy().getClass().getCanonicalName(), buf));
         .newInstance("queue1", getPolicy().getClass().getCanonicalName(), buf));
     fpc.setFederationSubclusterResolver(
     fpc.setFederationSubclusterResolver(
         FederationPoliciesTestUtil.initResolver());
         FederationPoliciesTestUtil.initResolver());
-    fpc.setFederationStateStoreFacade(FederationPoliciesTestUtil.initFacade());
+    Configuration conf = new Configuration();
+    fpc.setFederationStateStoreFacade(FederationPoliciesTestUtil.initFacade(conf));
     getPolicy().reinitialize(fpc);
     getPolicy().reinitialize(fpc);
   }
   }
 
 
@@ -100,7 +102,8 @@ public abstract class BaseFederationPoliciesTest {
         .newInstance("queue1", "WrongPolicyName", buf));
         .newInstance("queue1", "WrongPolicyName", buf));
     fpc.setFederationSubclusterResolver(
     fpc.setFederationSubclusterResolver(
         FederationPoliciesTestUtil.initResolver());
         FederationPoliciesTestUtil.initResolver());
-    fpc.setFederationStateStoreFacade(FederationPoliciesTestUtil.initFacade());
+    Configuration conf = new Configuration();
+    fpc.setFederationStateStoreFacade(FederationPoliciesTestUtil.initFacade(conf));
     getPolicy().reinitialize(fpc);
     getPolicy().reinitialize(fpc);
   }
   }
 
 
@@ -212,9 +215,9 @@ public abstract class BaseFederationPoliciesTest {
   public FederationStateStoreFacade getMemoryFacade() throws YarnException {
   public FederationStateStoreFacade getMemoryFacade() throws YarnException {
 
 
     // setting up a store and its facade (with caching off)
     // setting up a store and its facade (with caching off)
-    FederationStateStoreFacade fedFacade = FederationStateStoreFacade.getInstance();
     YarnConfiguration conf = new YarnConfiguration();
     YarnConfiguration conf = new YarnConfiguration();
     conf.setInt(YarnConfiguration.FEDERATION_CACHE_TIME_TO_LIVE_SECS, 0);
     conf.setInt(YarnConfiguration.FEDERATION_CACHE_TIME_TO_LIVE_SECS, 0);
+    FederationStateStoreFacade fedFacade = FederationStateStoreFacade.getInstance(conf);
     FederationStateStore store = new MemoryFederationStateStore();
     FederationStateStore store = new MemoryFederationStateStore();
     store.init(conf);
     store.init(conf);
     fedFacade.reinitialize(store, conf);
     fedFacade.reinitialize(store, conf);

+ 3 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/policies/TestFederationPolicyInitializationContextValidator.java

@@ -20,6 +20,7 @@ package org.apache.hadoop.yarn.server.federation.policies;
 
 
 import java.nio.ByteBuffer;
 import java.nio.ByteBuffer;
 
 
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.yarn.server.federation.policies.amrmproxy.FederationAMRMProxyPolicy;
 import org.apache.hadoop.yarn.server.federation.policies.amrmproxy.FederationAMRMProxyPolicy;
 import org.apache.hadoop.yarn.server.federation.policies.exceptions.FederationPolicyInitializationException;
 import org.apache.hadoop.yarn.server.federation.policies.exceptions.FederationPolicyInitializationException;
 import org.apache.hadoop.yarn.server.federation.policies.manager.FederationPolicyManager;
 import org.apache.hadoop.yarn.server.federation.policies.manager.FederationPolicyManager;
@@ -45,7 +46,8 @@ public class TestFederationPolicyInitializationContextValidator {
 
 
   @Before
   @Before
   public void setUp() throws Exception {
   public void setUp() throws Exception {
-    goodFacade = FederationPoliciesTestUtil.initFacade();
+    Configuration conf = new Configuration();
+    goodFacade = FederationPoliciesTestUtil.initFacade(conf);
     goodConfig = new MockPolicyManager().serializeConf();
     goodConfig = new MockPolicyManager().serializeConf();
     goodSR = FederationPoliciesTestUtil.initResolver();
     goodSR = FederationPoliciesTestUtil.initResolver();
     goodHome = SubClusterId.newInstance("homesubcluster");
     goodHome = SubClusterId.newInstance("homesubcluster");

+ 1 - 2
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/policies/TestRouterPolicyFacade.java

@@ -62,10 +62,9 @@ public class TestRouterPolicyFacade {
   public void setup() throws YarnException {
   public void setup() throws YarnException {
 
 
     // setting up a store and its facade (with caching off)
     // setting up a store and its facade (with caching off)
-    FederationStateStoreFacade fedFacade =
-        FederationStateStoreFacade.getInstance();
     YarnConfiguration conf = new YarnConfiguration();
     YarnConfiguration conf = new YarnConfiguration();
     conf.set(YarnConfiguration.FEDERATION_CACHE_TIME_TO_LIVE_SECS, "0");
     conf.set(YarnConfiguration.FEDERATION_CACHE_TIME_TO_LIVE_SECS, "0");
+    FederationStateStoreFacade fedFacade = FederationStateStoreFacade.getInstance(conf);
     store = new MemoryFederationStateStore();
     store = new MemoryFederationStateStore();
     store.init(conf);
     store.init(conf);
     fedFacade.reinitialize(store, conf);
     fedFacade.reinitialize(store, conf);

+ 3 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/policies/manager/BasePolicyManagerTest.java

@@ -19,6 +19,7 @@ package org.apache.hadoop.yarn.server.federation.policies.manager;
 
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThat;
 
 
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.yarn.server.federation.policies.FederationPolicyInitializationContext;
 import org.apache.hadoop.yarn.server.federation.policies.FederationPolicyInitializationContext;
 import org.apache.hadoop.yarn.server.federation.policies.amrmproxy.FederationAMRMProxyPolicy;
 import org.apache.hadoop.yarn.server.federation.policies.amrmproxy.FederationAMRMProxyPolicy;
 import org.apache.hadoop.yarn.server.federation.policies.exceptions.FederationPolicyInitializationException;
 import org.apache.hadoop.yarn.server.federation.policies.exceptions.FederationPolicyInitializationException;
@@ -72,13 +73,14 @@ public abstract class BasePolicyManagerTest {
       Class expAMRMProxyPolicy, Class expRouterPolicy) throws Exception {
       Class expAMRMProxyPolicy, Class expRouterPolicy) throws Exception {
 
 
     // serializeConf it in a context
     // serializeConf it in a context
+    Configuration conf = new Configuration();
     SubClusterPolicyConfiguration fpc = wfp.serializeConf();
     SubClusterPolicyConfiguration fpc = wfp.serializeConf();
     fpc.setType(policyManagerType.getCanonicalName());
     fpc.setType(policyManagerType.getCanonicalName());
     FederationPolicyInitializationContext context =
     FederationPolicyInitializationContext context =
         new FederationPolicyInitializationContext();
         new FederationPolicyInitializationContext();
     context.setSubClusterPolicyConfiguration(fpc);
     context.setSubClusterPolicyConfiguration(fpc);
     context
     context
-        .setFederationStateStoreFacade(FederationPoliciesTestUtil.initFacade());
+        .setFederationStateStoreFacade(FederationPoliciesTestUtil.initFacade(conf));
     context.setFederationSubclusterResolver(
     context.setFederationSubclusterResolver(
         FederationPoliciesTestUtil.initResolver());
         FederationPoliciesTestUtil.initResolver());
     context.setHomeSubcluster(SubClusterId.newInstance("homesubcluster"));
     context.setHomeSubcluster(SubClusterId.newInstance("homesubcluster"));

+ 16 - 5
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/test/java/org/apache/hadoop/yarn/server/federation/utils/FederationPoliciesTestUtil.java

@@ -123,7 +123,7 @@ public final class FederationPoliciesTestUtil {
     fpc.setSubClusterPolicyConfiguration(SubClusterPolicyConfiguration
     fpc.setSubClusterPolicyConfiguration(SubClusterPolicyConfiguration
         .newInstance("queue1", policy.getClass().getCanonicalName(), buf));
         .newInstance("queue1", policy.getClass().getCanonicalName(), buf));
     FederationStateStoreFacade facade = FederationStateStoreFacade
     FederationStateStoreFacade facade = FederationStateStoreFacade
-        .getInstance();
+        .getInstance(conf);
     FederationStateStore fss = mock(FederationStateStore.class);
     FederationStateStore fss = mock(FederationStateStore.class);
 
 
     if (activeSubclusters == null) {
     if (activeSubclusters == null) {
@@ -242,9 +242,8 @@ public final class FederationPoliciesTestUtil {
 
 
   public static FederationStateStoreFacade initFacade(
   public static FederationStateStoreFacade initFacade(
       List<SubClusterInfo> subClusterInfos, SubClusterPolicyConfiguration
       List<SubClusterInfo> subClusterInfos, SubClusterPolicyConfiguration
-      policyConfiguration) throws YarnException {
-    FederationStateStoreFacade goodFacade = FederationStateStoreFacade
-        .getInstance();
+      policyConfiguration, Configuration conf) throws YarnException {
+    FederationStateStoreFacade goodFacade = FederationStateStoreFacade.getInstance(conf);
     FederationStateStore fss = mock(FederationStateStore.class);
     FederationStateStore fss = mock(FederationStateStore.class);
     GetSubClustersInfoResponse response = GetSubClustersInfoResponse
     GetSubClustersInfoResponse response = GetSubClustersInfoResponse
         .newInstance(subClusterInfos);
         .newInstance(subClusterInfos);
@@ -276,8 +275,20 @@ public final class FederationPoliciesTestUtil {
    * @throws YarnException in case the initialization is not successful.
    * @throws YarnException in case the initialization is not successful.
    */
    */
   public static FederationStateStoreFacade initFacade() throws YarnException {
   public static FederationStateStoreFacade initFacade() throws YarnException {
+    return initFacade(new Configuration());
+  }
+
+  /**
+   * Initialiaze a main-memory {@link FederationStateStoreFacade} used for
+   * testing, wiht a mock resolver.
+   *
+   * @param conf Configuration.
+   * @return the facade.
+   * @throws YarnException in case the initialization is not successful.
+   */
+  public static FederationStateStoreFacade initFacade(Configuration conf) throws YarnException {
     SubClusterPolicyConfiguration policyConfiguration =
     SubClusterPolicyConfiguration policyConfiguration =
         SubClusterPolicyConfiguration.newInstance(null, null, null);
         SubClusterPolicyConfiguration.newInstance(null, null, null);
-    return initFacade(new ArrayList<>(), policyConfiguration);
+    return initFacade(new ArrayList<>(), policyConfiguration, conf);
   }
   }
 }
 }

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

@@ -80,8 +80,8 @@ public class TestFederationStateStoreFacade {
   private Configuration conf;
   private Configuration conf;
   private FederationStateStore stateStore;
   private FederationStateStore stateStore;
   private FederationStateStoreTestUtil stateStoreTestUtil;
   private FederationStateStoreTestUtil stateStoreTestUtil;
-  private FederationStateStoreFacade facade =
-      FederationStateStoreFacade.getInstance();
+  private FederationStateStoreFacade facade;
+
   private Boolean isCachingEnabled;
   private Boolean isCachingEnabled;
 
 
   public TestFederationStateStoreFacade(Boolean isCachingEnabled) {
   public TestFederationStateStoreFacade(Boolean isCachingEnabled) {
@@ -90,6 +90,7 @@ public class TestFederationStateStoreFacade {
       conf.setInt(YarnConfiguration.FEDERATION_CACHE_TIME_TO_LIVE_SECS, 0);
       conf.setInt(YarnConfiguration.FEDERATION_CACHE_TIME_TO_LIVE_SECS, 0);
     }
     }
     this.isCachingEnabled = isCachingEnabled;
     this.isCachingEnabled = isCachingEnabled;
+    facade = FederationStateStoreFacade.getInstance(conf);
   }
   }
 
 
   @Before
   @Before

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/src/main/java/org/apache/hadoop/yarn/server/globalpolicygenerator/GlobalPolicyGenerator.java

@@ -112,7 +112,7 @@ public class GlobalPolicyGenerator extends CompositeService {
   @Override
   @Override
   protected void serviceInit(Configuration conf) throws Exception {
   protected void serviceInit(Configuration conf) throws Exception {
     // Set up the context
     // Set up the context
-    this.gpgContext.setStateStoreFacade(FederationStateStoreFacade.getInstance());
+    this.gpgContext.setStateStoreFacade(FederationStateStoreFacade.getInstance(conf));
     GPGPolicyFacade gpgPolicyFacade =
     GPGPolicyFacade gpgPolicyFacade =
         new GPGPolicyFacade(this.gpgContext.getStateStoreFacade(), conf);
         new GPGPolicyFacade(this.gpgContext.getStateStoreFacade(), conf);
     this.gpgContext.setPolicyFacade(gpgPolicyFacade);
     this.gpgContext.setPolicyFacade(gpgPolicyFacade);

+ 2 - 2
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/src/test/java/org/apache/hadoop/yarn/server/globalpolicygenerator/TestGPGPolicyFacade.java

@@ -53,8 +53,7 @@ public class TestGPGPolicyFacade {
 
 
   private Configuration conf;
   private Configuration conf;
   private FederationStateStore stateStore;
   private FederationStateStore stateStore;
-  private FederationStateStoreFacade facade =
-      FederationStateStoreFacade.getInstance();
+  private FederationStateStoreFacade facade;
   private GPGPolicyFacade policyFacade;
   private GPGPolicyFacade policyFacade;
 
 
   private Set<SubClusterId> subClusterIds;
   private Set<SubClusterId> subClusterIds;
@@ -70,6 +69,7 @@ public class TestGPGPolicyFacade {
     subClusterIds.add(SubClusterId.newInstance("sc0"));
     subClusterIds.add(SubClusterId.newInstance("sc0"));
     subClusterIds.add(SubClusterId.newInstance("sc1"));
     subClusterIds.add(SubClusterId.newInstance("sc1"));
     subClusterIds.add(SubClusterId.newInstance("sc2"));
     subClusterIds.add(SubClusterId.newInstance("sc2"));
+    facade = FederationStateStoreFacade.getInstance(conf);
   }
   }
 
 
   @Before
   @Before

+ 3 - 3
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/src/test/java/org/apache/hadoop/yarn/server/globalpolicygenerator/policygenerator/TestPolicyGenerator.java

@@ -87,8 +87,7 @@ public class TestPolicyGenerator {
 
 
   private Configuration conf;
   private Configuration conf;
   private FederationStateStore stateStore;
   private FederationStateStore stateStore;
-  private FederationStateStoreFacade facade =
-      FederationStateStoreFacade.getInstance();
+  private FederationStateStoreFacade facade;
 
 
   private List<SubClusterId> subClusterIds;
   private List<SubClusterId> subClusterIds;
   private Map<SubClusterId, SubClusterInfo> subClusterInfos;
   private Map<SubClusterId, SubClusterInfo> subClusterInfos;
@@ -102,10 +101,11 @@ public class TestPolicyGenerator {
   public TestPolicyGenerator() {
   public TestPolicyGenerator() {
     conf = new Configuration();
     conf = new Configuration();
     conf.setInt(YarnConfiguration.FEDERATION_CACHE_TIME_TO_LIVE_SECS, 0);
     conf.setInt(YarnConfiguration.FEDERATION_CACHE_TIME_TO_LIVE_SECS, 0);
-
+    facade = FederationStateStoreFacade.getInstance(conf);
     gpgContext = new GPGContextImpl();
     gpgContext = new GPGContextImpl();
     gpgContext.setPolicyFacade(new GPGPolicyFacade(facade, conf));
     gpgContext.setPolicyFacade(new GPGPolicyFacade(facade, conf));
     gpgContext.setStateStoreFacade(facade);
     gpgContext.setStateStoreFacade(facade);
+
   }
   }
 
 
   @Before
   @Before

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/src/test/java/org/apache/hadoop/yarn/server/globalpolicygenerator/secure/AbstractGlobalPolicyGeneratorTest.java

@@ -136,7 +136,7 @@ public abstract class AbstractGlobalPolicyGeneratorTest {
     assertNull("GPG is already running", gpg);
     assertNull("GPG is already running", gpg);
     MemoryFederationStateStore stateStore = new MemoryFederationStateStore();
     MemoryFederationStateStore stateStore = new MemoryFederationStateStore();
     stateStore.init(conf);
     stateStore.init(conf);
-    FederationStateStoreFacade.getInstance().reinitialize(stateStore, conf);
+    FederationStateStoreFacade.getInstance(conf).reinitialize(stateStore, conf);
     UserGroupInformation.setConfiguration(conf);
     UserGroupInformation.setConfiguration(conf);
     gpg = new GlobalPolicyGenerator();
     gpg = new GlobalPolicyGenerator();
     gpg.init(conf);
     gpg.init(conf);

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-globalpolicygenerator/src/test/java/org/apache/hadoop/yarn/server/globalpolicygenerator/subclustercleaner/TestSubClusterCleaner.java

@@ -63,7 +63,7 @@ public class TestSubClusterCleaner {
     stateStore = new MemoryFederationStateStore();
     stateStore = new MemoryFederationStateStore();
     stateStore.init(conf);
     stateStore.init(conf);
 
 
-    facade = FederationStateStoreFacade.getInstance();
+    facade = FederationStateStoreFacade.getInstance(conf);
     facade.reinitialize(stateStore, conf);
     facade.reinitialize(stateStore, conf);
 
 
     gpgContext = new GPGContextImpl();
     gpgContext = new GPGContextImpl();

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/AMRMProxyService.java

@@ -145,7 +145,7 @@ public class AMRMProxyService extends CompositeService implements
           RegistryOperations.class);
           RegistryOperations.class);
       addService(this.registry);
       addService(this.registry);
     }
     }
-    this.federationFacade = FederationStateStoreFacade.getInstance();
+    this.federationFacade = FederationStateStoreFacade.getInstance(conf);
     this.federationEnabled =
     this.federationEnabled =
         conf.getBoolean(YarnConfiguration.FEDERATION_ENABLED,
         conf.getBoolean(YarnConfiguration.FEDERATION_ENABLED,
             YarnConfiguration.DEFAULT_FEDERATION_ENABLED);
             YarnConfiguration.DEFAULT_FEDERATION_ENABLED);

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/FederationInterceptor.java

@@ -335,7 +335,7 @@ public class FederationInterceptor extends AbstractRequestInterceptor {
     this.lastAllocateResponse
     this.lastAllocateResponse
         .setResponseId(AMRMClientUtils.PRE_REGISTER_RESPONSE_ID);
         .setResponseId(AMRMClientUtils.PRE_REGISTER_RESPONSE_ID);
 
 
-    this.federationFacade = FederationStateStoreFacade.getInstance();
+    this.federationFacade = FederationStateStoreFacade.getInstance(conf);
     this.subClusterResolver = this.federationFacade.getSubClusterResolver();
     this.subClusterResolver = this.federationFacade.getSubClusterResolver();
 
 
     // AMRMProxyPolicy will be initialized in registerApplicationMaster
     // AMRMProxyPolicy will be initialized in registerApplicationMaster

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/TestFederationInterceptor.java

@@ -118,7 +118,7 @@ public class TestFederationInterceptor extends BaseAMRMProxyTest {
 
 
     stateStore = new MemoryFederationStateStore();
     stateStore = new MemoryFederationStateStore();
     stateStore.init(getConf());
     stateStore.init(getConf());
-    FederationStateStoreFacade.getInstance().reinitialize(stateStore,
+    FederationStateStoreFacade.getInstance(getConf()).reinitialize(stateStore,
         getConf());
         getConf());
 
 
     nmStateStore = new NMMemoryStateStoreService();
     nmStateStore = new NMMemoryStateStoreService();

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/amrmproxy/TestFederationInterceptorSecure.java

@@ -144,7 +144,7 @@ public class TestFederationInterceptorSecure extends BaseAMRMProxyTest {
 
 
     stateStore = new MemoryFederationStateStore();
     stateStore = new MemoryFederationStateStore();
     stateStore.init(conf);
     stateStore.init(conf);
-    FederationStateStoreFacade.getInstance().reinitialize(stateStore, conf);
+    FederationStateStoreFacade.getInstance(conf).reinitialize(stateStore, conf);
 
 
     nmStateStore = new NMMemoryStateStoreService();
     nmStateStore = new NMMemoryStateStoreService();
     nmStateStore.init(conf);
     nmStateStore.init(conf);

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/cleaner/SubClusterCleaner.java

@@ -44,7 +44,7 @@ public class SubClusterCleaner implements Runnable {
   private long heartbeatExpirationMillis;
   private long heartbeatExpirationMillis;
 
 
   public SubClusterCleaner(Configuration conf) {
   public SubClusterCleaner(Configuration conf) {
-    federationFacade = FederationStateStoreFacade.getInstance();
+    federationFacade = FederationStateStoreFacade.getInstance(conf);
     this.heartbeatExpirationMillis =
     this.heartbeatExpirationMillis =
         conf.getTimeDuration(YarnConfiguration.ROUTER_SUBCLUSTER_EXPIRATION_TIME,
         conf.getTimeDuration(YarnConfiguration.ROUTER_SUBCLUSTER_EXPIRATION_TIME,
         YarnConfiguration.DEFAULT_ROUTER_SUBCLUSTER_EXPIRATION_TIME, TimeUnit.MILLISECONDS);
         YarnConfiguration.DEFAULT_ROUTER_SUBCLUSTER_EXPIRATION_TIME, TimeUnit.MILLISECONDS);

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/clientrm/FederationClientInterceptor.java

@@ -212,7 +212,7 @@ public class FederationClientInterceptor
   public void init(String userName) {
   public void init(String userName) {
     super.init(userName);
     super.init(userName);
 
 
-    federationFacade = FederationStateStoreFacade.getInstance();
+    federationFacade = FederationStateStoreFacade.getInstance(getConf());
     rand = new Random(System.currentTimeMillis());
     rand = new Random(System.currentTimeMillis());
 
 
     int numMinThreads = getNumMinThreads(getConf());
     int numMinThreads = getNumMinThreads(getConf());

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/clientrm/RouterClientRMService.java

@@ -629,7 +629,7 @@ public class RouterClientRMService extends AbstractService
         TimeUnit.MILLISECONDS);
         TimeUnit.MILLISECONDS);
 
 
     return new RouterDelegationTokenSecretManager(secretKeyInterval,
     return new RouterDelegationTokenSecretManager(secretKeyInterval,
-        tokenMaxLifetime, tokenRenewInterval, removeScanInterval);
+        tokenMaxLifetime, tokenRenewInterval, removeScanInterval, conf);
   }
   }
 
 
   @VisibleForTesting
   @VisibleForTesting

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/rmadmin/FederationRMAdminInterceptor.java

@@ -130,7 +130,7 @@ public class FederationRMAdminInterceptor extends AbstractRMAdminRequestIntercep
     this.executorService = new ThreadPoolExecutor(numThreads, numThreads,
     this.executorService = new ThreadPoolExecutor(numThreads, numThreads,
         0L, TimeUnit.MILLISECONDS, workQueue, threadFactory);
         0L, TimeUnit.MILLISECONDS, workQueue, threadFactory);
 
 
-    federationFacade = FederationStateStoreFacade.getInstance();
+    federationFacade = FederationStateStoreFacade.getInstance(this.getConf());
     this.conf = this.getConf();
     this.conf = this.getConf();
     this.adminRMProxies = new ConcurrentHashMap<>();
     this.adminRMProxies = new ConcurrentHashMap<>();
     routerMetrics = RouterMetrics.getMetrics();
     routerMetrics = RouterMetrics.getMetrics();

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/rmadmin/RMAdminProtocolMethod.java

@@ -63,7 +63,7 @@ public class RMAdminProtocolMethod extends FederationMethodWrapper {
   public <R> Collection<R> invokeConcurrent(FederationRMAdminInterceptor interceptor,
   public <R> Collection<R> invokeConcurrent(FederationRMAdminInterceptor interceptor,
       Class<R> clazz, String subClusterId) throws YarnException {
       Class<R> clazz, String subClusterId) throws YarnException {
     this.rmAdminInterceptor = interceptor;
     this.rmAdminInterceptor = interceptor;
-    this.federationFacade = FederationStateStoreFacade.getInstance();
+    this.federationFacade = FederationStateStoreFacade.getInstance(interceptor.getConf());
     this.configuration = interceptor.getConf();
     this.configuration = interceptor.getConf();
     if (StringUtils.isNotBlank(subClusterId)) {
     if (StringUtils.isNotBlank(subClusterId)) {
       return invoke(clazz, subClusterId);
       return invoke(clazz, subClusterId);

+ 4 - 2
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/security/RouterDelegationTokenSecretManager.java

@@ -19,6 +19,7 @@ package org.apache.hadoop.yarn.server.router.security;
 
 
 import org.apache.hadoop.classification.InterfaceAudience.Public;
 import org.apache.hadoop.classification.InterfaceAudience.Public;
 import org.apache.hadoop.classification.VisibleForTesting;
 import org.apache.hadoop.classification.VisibleForTesting;
+import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenSecretManager;
 import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenSecretManager;
 import org.apache.hadoop.security.token.delegation.DelegationKey;
 import org.apache.hadoop.security.token.delegation.DelegationKey;
 import org.apache.hadoop.security.token.delegation.RouterDelegationTokenSupport;
 import org.apache.hadoop.security.token.delegation.RouterDelegationTokenSupport;
@@ -66,13 +67,14 @@ public class RouterDelegationTokenSecretManager
    * @param delegationTokenRenewInterval       how often the tokens must be renewed
    * @param delegationTokenRenewInterval       how often the tokens must be renewed
    *                                           in milliseconds
    *                                           in milliseconds
    * @param delegationTokenRemoverScanInterval how often the tokens are scanned
    * @param delegationTokenRemoverScanInterval how often the tokens are scanned
+   * @param conf Configuration.
    */
    */
   public RouterDelegationTokenSecretManager(long delegationKeyUpdateInterval,
   public RouterDelegationTokenSecretManager(long delegationKeyUpdateInterval,
       long delegationTokenMaxLifetime, long delegationTokenRenewInterval,
       long delegationTokenMaxLifetime, long delegationTokenRenewInterval,
-      long delegationTokenRemoverScanInterval) {
+      long delegationTokenRemoverScanInterval, Configuration conf) {
     super(delegationKeyUpdateInterval, delegationTokenMaxLifetime,
     super(delegationKeyUpdateInterval, delegationTokenMaxLifetime,
         delegationTokenRenewInterval, delegationTokenRemoverScanInterval);
         delegationTokenRenewInterval, delegationTokenRemoverScanInterval);
-    this.federationFacade = FederationStateStoreFacade.getInstance();
+    this.federationFacade = FederationStateStoreFacade.getInstance(conf);
   }
   }
 
 
   @Override
   @Override

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/AboutBlock.java

@@ -63,7 +63,7 @@ public class AboutBlock extends RouterBlock {
    * @param isEnabled true, federation is enabled; false, federation is not enabled.
    * @param isEnabled true, federation is enabled; false, federation is not enabled.
    */
    */
   private void initYarnRouterBasicInformation(boolean isEnabled) {
   private void initYarnRouterBasicInformation(boolean isEnabled) {
-    FederationStateStoreFacade facade = FederationStateStoreFacade.getInstance();
+    FederationStateStoreFacade facade = FederationStateStoreFacade.getInstance(router.getConfig());
     RouterInfo routerInfo = new RouterInfo(router);
     RouterInfo routerInfo = new RouterInfo(router);
     String lastStartTime =
     String lastStartTime =
         DateFormatUtils.format(routerInfo.getStartedOn(), DATE_PATTERN);
         DateFormatUtils.format(routerInfo.getStartedOn(), DATE_PATTERN);

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/AppsBlock.java

@@ -104,7 +104,7 @@ public class AppsBlock extends RouterBlock {
   private AppsInfo getSubClusterAppsInfo(String subCluster, String states) {
   private AppsInfo getSubClusterAppsInfo(String subCluster, String states) {
     try {
     try {
       SubClusterId subClusterId = SubClusterId.newInstance(subCluster);
       SubClusterId subClusterId = SubClusterId.newInstance(subCluster);
-      FederationStateStoreFacade facade = FederationStateStoreFacade.getInstance();
+      FederationStateStoreFacade facade = FederationStateStoreFacade.getInstance(this.conf);
       SubClusterInfo subClusterInfo = facade.getSubCluster(subClusterId);
       SubClusterInfo subClusterInfo = facade.getSubCluster(subClusterId);
 
 
       if (subClusterInfo != null) {
       if (subClusterInfo != null) {

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/FederationInterceptorREST.java

@@ -188,7 +188,7 @@ public class FederationInterceptorREST extends AbstractRESTRequestInterceptor {
 
 
     super.init(user);
     super.init(user);
 
 
-    federationFacade = FederationStateStoreFacade.getInstance();
+    federationFacade = FederationStateStoreFacade.getInstance(getConf());
 
 
     final Configuration conf = this.getConf();
     final Configuration conf = this.getConf();
 
 

+ 2 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/NodeLabelsBlock.java

@@ -73,7 +73,8 @@ public class NodeLabelsBlock extends RouterBlock {
   private NodeLabelsInfo getSubClusterNodeLabelsInfo(String subCluster) {
   private NodeLabelsInfo getSubClusterNodeLabelsInfo(String subCluster) {
     try {
     try {
       SubClusterId subClusterId = SubClusterId.newInstance(subCluster);
       SubClusterId subClusterId = SubClusterId.newInstance(subCluster);
-      FederationStateStoreFacade facade = FederationStateStoreFacade.getInstance();
+      FederationStateStoreFacade facade =
+          FederationStateStoreFacade.getInstance(router.getConfig());
       SubClusterInfo subClusterInfo = facade.getSubCluster(subClusterId);
       SubClusterInfo subClusterInfo = facade.getSubCluster(subClusterId);
 
 
       if (subClusterInfo != null) {
       if (subClusterInfo != null) {

+ 2 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/NodesBlock.java

@@ -90,7 +90,8 @@ public class NodesBlock extends RouterBlock {
   private NodesInfo getSubClusterNodesInfo(String subCluster) {
   private NodesInfo getSubClusterNodesInfo(String subCluster) {
     try {
     try {
       SubClusterId subClusterId = SubClusterId.newInstance(subCluster);
       SubClusterId subClusterId = SubClusterId.newInstance(subCluster);
-      FederationStateStoreFacade facade = FederationStateStoreFacade.getInstance();
+      FederationStateStoreFacade facade =
+          FederationStateStoreFacade.getInstance(this.router.getConfig());
       SubClusterInfo subClusterInfo = facade.getSubCluster(subClusterId);
       SubClusterInfo subClusterInfo = facade.getSubCluster(subClusterId);
 
 
       if (subClusterInfo != null) {
       if (subClusterInfo != null) {

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/main/java/org/apache/hadoop/yarn/server/router/webapp/RouterBlock.java

@@ -51,7 +51,7 @@ public abstract class RouterBlock extends HtmlBlock {
     super(ctx);
     super(ctx);
     this.ctx = ctx;
     this.ctx = ctx;
     this.router = router;
     this.router = router;
-    this.facade = FederationStateStoreFacade.getInstance();
+    this.facade = FederationStateStoreFacade.getInstance(router.getConfig());
     this.conf = this.router.getConfig();
     this.conf = this.router.getConfig();
   }
   }
 
 

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/cleaner/TestSubClusterCleaner.java

@@ -57,7 +57,7 @@ public class TestSubClusterCleaner {
     stateStore = new MemoryFederationStateStore();
     stateStore = new MemoryFederationStateStore();
     stateStore.init(conf);
     stateStore.init(conf);
 
 
-    facade = FederationStateStoreFacade.getInstance();
+    facade = FederationStateStoreFacade.getInstance(conf);
     facade.reinitialize(stateStore, conf);
     facade.reinitialize(stateStore, conf);
 
 
     cleaner = new SubClusterCleaner(conf);
     cleaner = new SubClusterCleaner(conf);

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/clientrm/TestFederationClientInterceptor.java

@@ -191,7 +191,7 @@ public class TestFederationClientInterceptor extends BaseRouterClientRMTest {
 
 
     stateStore = new MemoryFederationStateStore();
     stateStore = new MemoryFederationStateStore();
     stateStore.init(this.getConf());
     stateStore.init(this.getConf());
-    FederationStateStoreFacade.getInstance().reinitialize(stateStore, getConf());
+    FederationStateStoreFacade.getInstance(getConf()).reinitialize(stateStore, getConf());
     stateStoreUtil = new FederationStateStoreTestUtil(stateStore);
     stateStoreUtil = new FederationStateStoreTestUtil(stateStore);
 
 
     interceptor.setConf(this.getConf());
     interceptor.setConf(this.getConf());

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/clientrm/TestFederationClientInterceptorRetry.java

@@ -110,7 +110,7 @@ public class TestFederationClientInterceptorRetry
 
 
     stateStore = new MemoryFederationStateStore();
     stateStore = new MemoryFederationStateStore();
     stateStore.init(this.getConf());
     stateStore.init(this.getConf());
-    FederationStateStoreFacade.getInstance().reinitialize(stateStore,
+    FederationStateStoreFacade.getInstance(getConf()).reinitialize(stateStore,
         getConf());
         getConf());
     stateStoreUtil = new FederationStateStoreTestUtil(stateStore);
     stateStoreUtil = new FederationStateStoreTestUtil(stateStore);
 
 

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/clientrm/TestableFederationClientInterceptor.java

@@ -245,6 +245,6 @@ public class TestableFederationClientInterceptor
         TimeUnit.MILLISECONDS);
         TimeUnit.MILLISECONDS);
 
 
     return new RouterDelegationTokenSecretManager(secretKeyInterval,
     return new RouterDelegationTokenSecretManager(secretKeyInterval,
-        tokenMaxLifetime, tokenRenewInterval, removeScanInterval);
+        tokenMaxLifetime, tokenRenewInterval, removeScanInterval, conf);
   }
   }
 }
 }

+ 2 - 2
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/rmadmin/TestFederationRMAdminInterceptor.java

@@ -120,8 +120,8 @@ public class TestFederationRMAdminInterceptor extends BaseRouterRMAdminTest {
     // Initialize facade & stateSore
     // Initialize facade & stateSore
     stateStore = new MemoryFederationStateStore();
     stateStore = new MemoryFederationStateStore();
     stateStore.init(this.getConf());
     stateStore.init(this.getConf());
-    facade = FederationStateStoreFacade.getInstance();
-    facade.reinitialize(stateStore, getConf());
+    facade = FederationStateStoreFacade.getInstance(this.getConf());
+    facade.reinitialize(stateStore, this.getConf());
     stateStoreUtil = new FederationStateStoreTestUtil(stateStore);
     stateStoreUtil = new FederationStateStoreTestUtil(stateStore);
 
 
     // Initialize interceptor
     // Initialize interceptor

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/secure/AbstractSecureRouterTest.java

@@ -183,7 +183,7 @@ public abstract class AbstractSecureRouterTest {
     assertNull("Router is already running", router);
     assertNull("Router is already running", router);
     MemoryFederationStateStore stateStore = new MemoryFederationStateStore();
     MemoryFederationStateStore stateStore = new MemoryFederationStateStore();
     stateStore.init(getConf());
     stateStore.init(getConf());
-    FederationStateStoreFacade.getInstance().reinitialize(stateStore, getConf());
+    FederationStateStoreFacade.getInstance(getConf()).reinitialize(stateStore, getConf());
     UserGroupInformation.setConfiguration(conf);
     UserGroupInformation.setConfiguration(conf);
     router = new Router();
     router = new Router();
     router.init(conf);
     router.init(conf);

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/MockRouter.java

@@ -50,7 +50,7 @@ public class MockRouter extends Router {
         YarnConfiguration.DEFAULT_FEDERATION_ENABLED);
         YarnConfiguration.DEFAULT_FEDERATION_ENABLED);
 
 
     if (isEnabled) {
     if (isEnabled) {
-      facade = FederationStateStoreFacade.getInstance();
+      facade = FederationStateStoreFacade.getInstance(configuration);
       initTestFederationSubCluster();
       initTestFederationSubCluster();
     }
     }
   }
   }

+ 3 - 2
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestFederationInterceptorREST.java

@@ -188,7 +188,7 @@ public class TestFederationInterceptorREST extends BaseRouterWebServicesTest {
 
 
     stateStore = new MemoryFederationStateStore();
     stateStore = new MemoryFederationStateStore();
     stateStore.init(this.getConf());
     stateStore.init(this.getConf());
-    FederationStateStoreFacade.getInstance().reinitialize(stateStore,
+    FederationStateStoreFacade.getInstance(this.getConf()).reinitialize(stateStore,
         this.getConf());
         this.getConf());
     stateStoreUtil = new FederationStateStoreTestUtil(stateStore);
     stateStoreUtil = new FederationStateStoreTestUtil(stateStore);
 
 
@@ -215,7 +215,8 @@ public class TestFederationInterceptorREST extends BaseRouterWebServicesTest {
         RM_DELEGATION_TOKEN_REMOVE_SCAN_INTERVAL_KEY,
         RM_DELEGATION_TOKEN_REMOVE_SCAN_INTERVAL_KEY,
         RM_DELEGATION_TOKEN_REMOVE_SCAN_INTERVAL_DEFAULT, TimeUnit.MILLISECONDS);
         RM_DELEGATION_TOKEN_REMOVE_SCAN_INTERVAL_DEFAULT, TimeUnit.MILLISECONDS);
     RouterDelegationTokenSecretManager tokenSecretManager = new RouterDelegationTokenSecretManager(
     RouterDelegationTokenSecretManager tokenSecretManager = new RouterDelegationTokenSecretManager(
-        secretKeyInterval, tokenMaxLifetime, tokenRenewInterval, removeScanInterval);
+        secretKeyInterval, tokenMaxLifetime, tokenRenewInterval, removeScanInterval,
+        this.getConf());
     tokenSecretManager.startThreads();
     tokenSecretManager.startThreads();
     routerClientRMService.setRouterDTSecretManager(tokenSecretManager);
     routerClientRMService.setRouterDTSecretManager(tokenSecretManager);
 
 

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestFederationInterceptorRESTRetry.java

@@ -93,7 +93,7 @@ public class TestFederationInterceptorRESTRetry
 
 
     stateStore = new MemoryFederationStateStore();
     stateStore = new MemoryFederationStateStore();
     stateStore.init(conf);
     stateStore.init(conf);
-    FederationStateStoreFacade.getInstance().reinitialize(stateStore,
+    FederationStateStoreFacade.getInstance(conf).reinitialize(stateStore,
         getConf());
         getConf());
     stateStoreUtil = new FederationStateStoreTestUtil(stateStore);
     stateStoreUtil = new FederationStateStoreTestUtil(stateStore);
 
 

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-router/src/test/java/org/apache/hadoop/yarn/server/router/webapp/TestRouterWebAppProxy.java

@@ -153,7 +153,7 @@ public class TestRouterWebAppProxy {
             newApplicationReport(appId4, YarnApplicationState.FINISHED, proxyAppUrl4, null)));
             newApplicationReport(appId4, YarnApplicationState.FINISHED, proxyAppUrl4, null)));
 
 
     // Initial federation store.
     // Initial federation store.
-    FederationStateStoreFacade facade = FederationStateStoreFacade.getInstance();
+    FederationStateStoreFacade facade = FederationStateStoreFacade.getInstance(conf);
     facade.getStateStore()
     facade.getStateStore()
         .registerSubCluster(SubClusterRegisterRequest.newInstance(subClusterInfo1));
         .registerSubCluster(SubClusterRegisterRequest.newInstance(subClusterInfo1));
     facade.getStateStore()
     facade.getStateStore()

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/main/java/org/apache/hadoop/yarn/server/webproxy/FedAppReportFetcher.java

@@ -50,7 +50,7 @@ public class FedAppReportFetcher extends AppReportFetcher {
   public FedAppReportFetcher(Configuration conf) {
   public FedAppReportFetcher(Configuration conf) {
     super(conf);
     super(conf);
     subClusters = new ConcurrentHashMap<>();
     subClusters = new ConcurrentHashMap<>();
-    federationFacade = FederationStateStoreFacade.getInstance();
+    federationFacade = FederationStateStoreFacade.getInstance(conf);
   }
   }
 
 
   /**
   /**

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/test/java/org/apache/hadoop/yarn/server/webproxy/TestFedAppReportFetcher.java

@@ -77,7 +77,7 @@ public class TestFedAppReportFetcher {
     conf = new YarnConfiguration();
     conf = new YarnConfiguration();
     conf.setBoolean(YarnConfiguration.APPLICATION_HISTORY_ENABLED, isAHSEnabled);
     conf.setBoolean(YarnConfiguration.APPLICATION_HISTORY_ENABLED, isAHSEnabled);
 
 
-    FederationStateStoreFacade fedFacade = FederationStateStoreFacade.getInstance();
+    FederationStateStoreFacade fedFacade = FederationStateStoreFacade.getInstance(this.conf);
     FederationStateStore fss = new MemoryFederationStateStore();
     FederationStateStore fss = new MemoryFederationStateStore();
     fss.init(conf);
     fss.init(conf);
     fedFacade.reinitialize(fss, conf);
     fedFacade.reinitialize(fss, conf);

+ 1 - 1
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-web-proxy/src/test/java/org/apache/hadoop/yarn/server/webproxy/TestWebAppProxyServletFed.java

@@ -192,7 +192,7 @@ public class TestWebAppProxyServletFed {
             .newInstance(newApplicationReport(appId4, YarnApplicationState.FINISHED, null)));
             .newInstance(newApplicationReport(appId4, YarnApplicationState.FINISHED, null)));
 
 
     // Initial federation store.
     // Initial federation store.
-    FederationStateStoreFacade facade = FederationStateStoreFacade.getInstance();
+    FederationStateStoreFacade facade = FederationStateStoreFacade.getInstance(conf);
     facade.getStateStore()
     facade.getStateStore()
         .registerSubCluster(SubClusterRegisterRequest.newInstance(subClusterInfo1));
         .registerSubCluster(SubClusterRegisterRequest.newInstance(subClusterInfo1));
     facade.getStateStore()
     facade.getStateStore()