diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/BaseClientToAMTokenSecretManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/BaseClientToAMTokenSecretManager.java index c455aac..641b261 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/BaseClientToAMTokenSecretManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/BaseClientToAMTokenSecretManager.java @@ -23,9 +23,17 @@ import org.apache.hadoop.classification.InterfaceAudience.Private; import org.apache.hadoop.classification.InterfaceAudience.Public; import org.apache.hadoop.classification.InterfaceStability.Evolving; +import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.token.SecretManager; +import org.apache.hadoop.service.LifecycleEvent; +import org.apache.hadoop.service.Service; +import org.apache.hadoop.service.ServiceStateChangeListener; import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; +import java.io.IOException; +import java.util.List; +import java.util.Map; + /** * A base {@link SecretManager} for AMs to extend and validate Client-RM tokens * issued to clients by the RM using the underlying master-key shared by RM to @@ -36,7 +44,14 @@ @Public @Evolving public abstract class BaseClientToAMTokenSecretManager extends - SecretManager { + SecretManager implements Service { + + final SecretManagementService secretManagementService; + + + public BaseClientToAMTokenSecretManager(String serviceName) { + secretManagementService = new SecretManagementService(serviceName); + } @Private public abstract SecretKey getMasterKey( @@ -67,4 +82,83 @@ public ClientToAMTokenIdentifier createIdentifier() { return new ClientToAMTokenIdentifier(); } + @Override + public void init(Configuration config) { + secretManagementService.init(config); + } + + @Override + public void start() { + secretManagementService.start(); + } + + @Override + public void stop() { + secretManagementService.stop(); + } + + @Override + public void close() throws IOException { + secretManagementService.close(); + } + + @Override + public void registerServiceListener(ServiceStateChangeListener listener) { + secretManagementService.registerServiceListener(listener); + } + + @Override + public void unregisterServiceListener(ServiceStateChangeListener listener) { + secretManagementService.unregisterServiceListener(listener); + } + + @Override + public String getName() { + return secretManagementService.getName(); + } + + @Override + public Configuration getConfig() { + return secretManagementService.getConfig(); + } + + @Override + public STATE getServiceState() { + return secretManagementService.getServiceState(); + } + + @Override + public long getStartTime() { + return secretManagementService.getStartTime(); + } + + @Override + public boolean isInState(STATE state) { + return secretManagementService.isInState(state); + } + + @Override + public Throwable getFailureCause() { + return secretManagementService.getFailureCause(); + } + + @Override + public STATE getFailureState() { + return secretManagementService.getFailureState(); + } + + @Override + public boolean waitForServiceToStop(long timeout) { + return secretManagementService.waitForServiceToStop(timeout); + } + + @Override + public List getLifecycleHistory() { + return secretManagementService.getLifecycleHistory(); + } + + @Override + public Map getBlockers() { + return secretManagementService.getBlockers(); + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/ClientToAMTokenSecretManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/ClientToAMTokenSecretManager.java index 541f7a8..afc5048 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/ClientToAMTokenSecretManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/ClientToAMTokenSecretManager.java @@ -42,7 +42,7 @@ public ClientToAMTokenSecretManager( ApplicationAttemptId applicationAttemptID, byte[] key) { - super(); + super(ClientToAMTokenSecretManager.class.getName()); if (key != null) { this.masterKey = SecretManager.createSecretKey(key); } else { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/SecretManagementService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/SecretManagementService.java new file mode 100644 index 0000000..0a94bf7 --- /dev/null +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/security/client/SecretManagementService.java @@ -0,0 +1,38 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.yarn.security.client; + +import org.apache.hadoop.classification.InterfaceStability; +import org.apache.hadoop.service.AbstractService; + +/** + * The SecretManagementService is a simple service class for + * composition with ServiceManager. + */ +@InterfaceStability.Unstable +public class SecretManagementService extends AbstractService { + + /** + * Construct the service. + * @param name service name + */ + public SecretManagementService(String name) { + super(name); + } +} diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/security/BaseContainerTokenSecretManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/security/BaseContainerTokenSecretManager.java index ccfe8f5..b1f535d 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/security/BaseContainerTokenSecretManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/security/BaseContainerTokenSecretManager.java @@ -18,7 +18,10 @@ package org.apache.hadoop.yarn.server.security; +import java.io.IOException; import java.security.SecureRandom; +import java.util.List; +import java.util.Map; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -28,8 +31,12 @@ import org.apache.hadoop.classification.InterfaceAudience.Private; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.token.SecretManager; +import org.apache.hadoop.service.LifecycleEvent; +import org.apache.hadoop.service.Service; +import org.apache.hadoop.service.ServiceStateChangeListener; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.security.ContainerTokenIdentifier; +import org.apache.hadoop.yarn.security.client.SecretManagementService; import org.apache.hadoop.yarn.server.api.records.MasterKey; /** @@ -38,12 +45,13 @@ * */ public class BaseContainerTokenSecretManager extends - SecretManager { + SecretManager implements Service { private static Log LOG = LogFactory .getLog(BaseContainerTokenSecretManager.class); private int serialNo = new SecureRandom().nextInt(); + private final SecretManagementService secretManagementService; protected final ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); protected final Lock readLock = readWriteLock.readLock(); @@ -58,7 +66,9 @@ protected final long containerTokenExpiryInterval; - public BaseContainerTokenSecretManager(Configuration conf) { + public BaseContainerTokenSecretManager(String serviceName, + Configuration conf) { + this.secretManagementService = new SecretManagementService(serviceName); this.containerTokenExpiryInterval = conf.getInt(YarnConfiguration.RM_CONTAINER_ALLOC_EXPIRY_INTERVAL_MS, YarnConfiguration.DEFAULT_RM_CONTAINER_ALLOC_EXPIRY_INTERVAL_MS); @@ -129,4 +139,84 @@ public MasterKey getCurrentKey() { public ContainerTokenIdentifier createIdentifier() { return new ContainerTokenIdentifier(); } + + @Override + public void init(Configuration config) { + secretManagementService.init(config); + } + + @Override + public void start() { + secretManagementService.start(); + } + + @Override + public void stop() { + secretManagementService.stop(); + } + + @Override + public void close() throws IOException { + secretManagementService.close(); + } + + @Override + public void registerServiceListener(ServiceStateChangeListener listener) { + secretManagementService.registerServiceListener(listener); + } + + @Override + public void unregisterServiceListener(ServiceStateChangeListener listener) { + secretManagementService.unregisterServiceListener(listener); + } + + @Override + public String getName() { + return secretManagementService.getName(); + } + + @Override + public Configuration getConfig() { + return secretManagementService.getConfig(); + } + + @Override + public STATE getServiceState() { + return secretManagementService.getServiceState(); + } + + @Override + public long getStartTime() { + return secretManagementService.getStartTime(); + } + + @Override + public boolean isInState(STATE state) { + return secretManagementService.isInState(state); + } + + @Override + public Throwable getFailureCause() { + return secretManagementService.getFailureCause(); + } + + @Override + public STATE getFailureState() { + return secretManagementService.getFailureState(); + } + + @Override + public boolean waitForServiceToStop(long timeout) { + return secretManagementService.waitForServiceToStop(timeout); + } + + @Override + public List getLifecycleHistory() { + return secretManagementService.getLifecycleHistory(); + } + + @Override + public Map getBlockers() { + return secretManagementService.getBlockers(); + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/security/BaseNMTokenSecretManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/security/BaseNMTokenSecretManager.java index 01da1af..0c20c38 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/security/BaseNMTokenSecretManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-common/src/main/java/org/apache/hadoop/yarn/server/security/BaseNMTokenSecretManager.java @@ -18,8 +18,11 @@ package org.apache.hadoop.yarn.server.security; +import java.io.IOException; import java.net.InetSocketAddress; import java.security.SecureRandom; +import java.util.List; +import java.util.Map; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -27,28 +30,38 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.classification.InterfaceAudience.Private; +import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.net.NetUtils; import org.apache.hadoop.security.SecurityUtil; import org.apache.hadoop.security.token.SecretManager; +import org.apache.hadoop.service.LifecycleEvent; +import org.apache.hadoop.service.Service; +import org.apache.hadoop.service.ServiceStateChangeListener; import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; import org.apache.hadoop.yarn.api.records.NodeId; import org.apache.hadoop.yarn.api.records.Token; import org.apache.hadoop.yarn.security.NMTokenIdentifier; +import org.apache.hadoop.yarn.security.client.SecretManagementService; import org.apache.hadoop.yarn.server.api.records.MasterKey; public class BaseNMTokenSecretManager extends - SecretManager { + SecretManager implements Service { private static Log LOG = LogFactory .getLog(BaseNMTokenSecretManager.class); private int serialNo = new SecureRandom().nextInt(); + private final SecretManagementService secretManagementService; protected final ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); protected final Lock readLock = readWriteLock.readLock(); protected final Lock writeLock = readWriteLock.writeLock(); protected MasterKeyData currentMasterKey; + + public BaseNMTokenSecretManager(String serviceName) { + secretManagementService = new SecretManagementService(serviceName); + } protected MasterKeyData createNewMasterKey() { this.writeLock.lock(); @@ -148,4 +161,84 @@ public static Token newInstance(byte[] password, .buildTokenService(addr).toString()); return nmToken; } + + @Override + public void init(Configuration config) { + secretManagementService.init(config); + } + + @Override + public void start() { + secretManagementService.start(); + } + + @Override + public void stop() { + secretManagementService.stop(); + } + + @Override + public void close() throws IOException { + secretManagementService.close(); + } + + @Override + public void registerServiceListener(ServiceStateChangeListener listener) { + secretManagementService.registerServiceListener(listener); + } + + @Override + public void unregisterServiceListener(ServiceStateChangeListener listener) { + secretManagementService.unregisterServiceListener(listener); + } + + @Override + public String getName() { + return secretManagementService.getName(); + } + + @Override + public Configuration getConfig() { + return secretManagementService.getConfig(); + } + + @Override + public STATE getServiceState() { + return secretManagementService.getServiceState(); + } + + @Override + public long getStartTime() { + return secretManagementService.getStartTime(); + } + + @Override + public boolean isInState(STATE state) { + return secretManagementService.isInState(state); + } + + @Override + public Throwable getFailureCause() { + return secretManagementService.getFailureCause(); + } + + @Override + public STATE getFailureState() { + return secretManagementService.getFailureState(); + } + + @Override + public boolean waitForServiceToStop(long timeout) { + return secretManagementService.waitForServiceToStop(timeout); + } + + @Override + public List getLifecycleHistory() { + return secretManagementService.getLifecycleHistory(); + } + + @Override + public Map getBlockers() { + return secretManagementService.getBlockers(); + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/security/LocalizerTokenSecretManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/security/LocalizerTokenSecretManager.java index 5eff43b..0ce1ce9 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/security/LocalizerTokenSecretManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/localizer/security/LocalizerTokenSecretManager.java @@ -20,12 +20,23 @@ import javax.crypto.SecretKey; +import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.token.SecretManager; +import org.apache.hadoop.service.LifecycleEvent; +import org.apache.hadoop.service.Service; +import org.apache.hadoop.service.ServiceStateChangeListener; +import org.apache.hadoop.yarn.security.client.SecretManagementService; + +import java.io.IOException; +import java.util.List; +import java.util.Map; public class LocalizerTokenSecretManager extends - SecretManager { + SecretManager implements Service { private final SecretKey secretKey; + private final SecretManagementService secretManagementService + = new SecretManagementService(LocalizerTokenSecretManager.class.getName()); public LocalizerTokenSecretManager() { this.secretKey = generateSecret(); @@ -47,4 +58,83 @@ public LocalizerTokenIdentifier createIdentifier() { return new LocalizerTokenIdentifier(); } + @Override + public void init(Configuration config) { + secretManagementService.init(config); + } + + @Override + public void start() { + secretManagementService.start(); + } + + @Override + public void stop() { + secretManagementService.stop(); + } + + @Override + public void close() throws IOException { + secretManagementService.close(); + } + + @Override + public void registerServiceListener(ServiceStateChangeListener listener) { + secretManagementService.registerServiceListener(listener); + } + + @Override + public void unregisterServiceListener(ServiceStateChangeListener listener) { + secretManagementService.unregisterServiceListener(listener); + } + + @Override + public String getName() { + return secretManagementService.getName(); + } + + @Override + public Configuration getConfig() { + return secretManagementService.getConfig(); + } + + @Override + public STATE getServiceState() { + return secretManagementService.getServiceState(); + } + + @Override + public long getStartTime() { + return secretManagementService.getStartTime(); + } + + @Override + public boolean isInState(STATE state) { + return secretManagementService.isInState(state); + } + + @Override + public Throwable getFailureCause() { + return secretManagementService.getFailureCause(); + } + + @Override + public STATE getFailureState() { + return secretManagementService.getFailureState(); + } + + @Override + public boolean waitForServiceToStop(long timeout) { + return secretManagementService.waitForServiceToStop(timeout); + } + + @Override + public List getLifecycleHistory() { + return secretManagementService.getLifecycleHistory(); + } + + @Override + public Map getBlockers() { + return secretManagementService.getBlockers(); + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/security/NMContainerTokenSecretManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/security/NMContainerTokenSecretManager.java index 8860a95..349970b 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/security/NMContainerTokenSecretManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/security/NMContainerTokenSecretManager.java @@ -54,7 +54,7 @@ private String nodeHostAddr; public NMContainerTokenSecretManager(Configuration conf) { - super(conf); + super(NMContainerTokenSecretManager.class.getName(), conf); recentlyStartedContainerTracker = new TreeMap>(); } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/security/NMTokenSecretManagerInNM.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/security/NMTokenSecretManagerInNM.java index 9569fdc..1521320 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/security/NMTokenSecretManagerInNM.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/security/NMTokenSecretManagerInNM.java @@ -49,6 +49,7 @@ public NMTokenSecretManagerInNM() { + super(NMTokenSecretManagerInNM.class.getName()); this.oldMasterKeys = new HashMap(); appToAppAttemptMap = diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/AMRMTokenSecretManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/AMRMTokenSecretManager.java index 5d21ec0..8fa36cc 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/AMRMTokenSecretManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/AMRMTokenSecretManager.java @@ -19,10 +19,7 @@ package org.apache.hadoop.yarn.server.resourcemanager.security; import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.Timer; -import java.util.TimerTask; +import java.util.*; import javax.crypto.SecretKey; @@ -32,9 +29,13 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.token.SecretManager; import org.apache.hadoop.security.token.Token; +import org.apache.hadoop.service.LifecycleEvent; +import org.apache.hadoop.service.Service; +import org.apache.hadoop.service.ServiceStateChangeListener; import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.security.AMRMTokenIdentifier; +import org.apache.hadoop.yarn.security.client.SecretManagementService; /** * AMRM-tokens are per ApplicationAttempt. If users redistribute their @@ -44,15 +45,19 @@ * so no need to remember master-keys even after rolling them. */ public class AMRMTokenSecretManager extends - SecretManager { + SecretManager implements Service { private static final Log LOG = LogFactory .getLog(AMRMTokenSecretManager.class); + private final SecretManagementService secretManagementService + = new SecretManagementService(AMRMTokenSecretManager.class.getName()); private SecretKey masterKey; private final Timer timer; private final long rollingInterval; + + private final Map passwords = new HashMap(); @@ -69,14 +74,6 @@ public AMRMTokenSecretManager(Configuration conf) { YarnConfiguration.DEFAULT_RM_AMRM_TOKEN_MASTER_KEY_ROLLING_INTERVAL_SECS) * 1000; } - public void start() { - this.timer.scheduleAtFixedRate(new MasterKeyRoller(), 0, rollingInterval); - } - - public void stop() { - this.timer.cancel(); - } - public synchronized void applicationMasterFinished( ApplicationAttemptId appAttemptId) { if (LOG.isDebugEnabled()) { @@ -167,4 +164,85 @@ public AMRMTokenIdentifier createIdentifier() { return new AMRMTokenIdentifier(); } + @Override + public void init(Configuration config) { + secretManagementService.init(config); + } + + @Override + public void start() { + secretManagementService.start(); + this.timer.scheduleAtFixedRate(new MasterKeyRoller(), 0, rollingInterval); + } + + @Override + public void stop() { + this.timer.cancel(); + secretManagementService.stop(); + } + + @Override + public void close() throws IOException { + secretManagementService.close(); + } + + @Override + public void registerServiceListener(ServiceStateChangeListener listener) { + secretManagementService.registerServiceListener(listener); + } + + @Override + public void unregisterServiceListener(ServiceStateChangeListener listener) { + secretManagementService.unregisterServiceListener(listener); + } + + @Override + public String getName() { + return secretManagementService.getName(); + } + + @Override + public Configuration getConfig() { + return secretManagementService.getConfig(); + } + + @Override + public STATE getServiceState() { + return secretManagementService.getServiceState(); + } + + @Override + public long getStartTime() { + return secretManagementService.getStartTime(); + } + + @Override + public boolean isInState(STATE state) { + return secretManagementService.isInState(state); + } + + @Override + public Throwable getFailureCause() { + return secretManagementService.getFailureCause(); + } + + @Override + public STATE getFailureState() { + return secretManagementService.getFailureState(); + } + + @Override + public boolean waitForServiceToStop(long timeout) { + return secretManagementService.waitForServiceToStop(timeout); + } + + @Override + public List getLifecycleHistory() { + return secretManagementService.getLifecycleHistory(); + } + + @Override + public Map getBlockers() { + return secretManagementService.getBlockers(); + } } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/ClientToAMTokenSecretManagerInRM.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/ClientToAMTokenSecretManagerInRM.java index 4fbe2ce..996d3a6 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/ClientToAMTokenSecretManagerInRM.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/ClientToAMTokenSecretManagerInRM.java @@ -33,6 +33,10 @@ private Map masterKeys = new HashMap(); + public ClientToAMTokenSecretManagerInRM() { + super(ClientToAMTokenSecretManagerInRM.class.getName()); + } + public synchronized SecretKey createMasterKey( ApplicationAttemptId applicationAttemptID) { return generateSecret(); diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/NMTokenSecretManagerInRM.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/NMTokenSecretManagerInRM.java index ab31eaf..a065377 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/NMTokenSecretManagerInRM.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/NMTokenSecretManagerInRM.java @@ -57,6 +57,7 @@ private final ConcurrentHashMap> appAttemptToNodeKeyMap; public NMTokenSecretManagerInRM(Configuration conf) { + super(NMTokenSecretManagerInRM.class.getName()); this.conf = conf; timer = new Timer(); rollingInterval = this.conf.getLong( diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/RMContainerTokenSecretManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/RMContainerTokenSecretManager.java index c62f2ee..9f9db23 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/RMContainerTokenSecretManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/security/RMContainerTokenSecretManager.java @@ -55,7 +55,7 @@ private final long activationDelay; public RMContainerTokenSecretManager(Configuration conf) { - super(conf); + super(RMContainerTokenSecretManager.class.getName(), conf); this.timer = new Timer(); this.rollingInterval = conf.getLong(