diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-sharedcachemanager/src/main/java/org/apache/hadoop/yarn/server/sharedcachemanager/SharedCacheManager.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-sharedcachemanager/src/main/java/org/apache/hadoop/yarn/server/sharedcachemanager/SharedCacheManager.java index 5c33b2b..d22fa51 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-sharedcachemanager/src/main/java/org/apache/hadoop/yarn/server/sharedcachemanager/SharedCacheManager.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-sharedcachemanager/src/main/java/org/apache/hadoop/yarn/server/sharedcachemanager/SharedCacheManager.java @@ -152,24 +152,4 @@ public static void main(String[] args) { System.exit(-1); } } - - @Private - @SuppressWarnings("unchecked") - public static AppChecker createAppCheckerService(Configuration conf) { - Class defaultCheckerClass; - try { - defaultCheckerClass = - (Class) Class - .forName(YarnConfiguration.DEFAULT_SCM_APP_CHECKER_CLASS); - } catch (Exception e) { - throw new YarnRuntimeException("Invalid default scm app checker class" - + YarnConfiguration.DEFAULT_SCM_APP_CHECKER_CLASS, e); - } - - AppChecker checker = - ReflectionUtils.newInstance(conf.getClass( - YarnConfiguration.SCM_APP_CHECKER_CLASS, defaultCheckerClass, - AppChecker.class), conf); - return checker; - } } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-sharedcachemanager/src/main/java/org/apache/hadoop/yarn/server/sharedcachemanager/store/InMemorySCMStore.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-sharedcachemanager/src/main/java/org/apache/hadoop/yarn/server/sharedcachemanager/store/InMemorySCMStore.java index b8fe14f..357549c 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-sharedcachemanager/src/main/java/org/apache/hadoop/yarn/server/sharedcachemanager/store/InMemorySCMStore.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-sharedcachemanager/src/main/java/org/apache/hadoop/yarn/server/sharedcachemanager/store/InMemorySCMStore.java @@ -86,6 +86,10 @@ private int initialDelayMin; private int checkPeriodMin; + public InMemorySCMStore() { + super(InMemorySCMStore.class.getName()); + } + public InMemorySCMStore(AppChecker appChecker) { super(InMemorySCMStore.class.getName(), appChecker); } diff --git hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-sharedcachemanager/src/main/java/org/apache/hadoop/yarn/server/sharedcachemanager/store/SCMStore.java hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-sharedcachemanager/src/main/java/org/apache/hadoop/yarn/server/sharedcachemanager/store/SCMStore.java index 6be00b9..1debc27 100644 --- hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-sharedcachemanager/src/main/java/org/apache/hadoop/yarn/server/sharedcachemanager/store/SCMStore.java +++ hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-sharedcachemanager/src/main/java/org/apache/hadoop/yarn/server/sharedcachemanager/store/SCMStore.java @@ -24,9 +24,13 @@ import org.apache.hadoop.classification.InterfaceAudience.Private; import org.apache.hadoop.classification.InterfaceStability.Evolving; +import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.service.CompositeService; +import org.apache.hadoop.util.ReflectionUtils; +import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.exceptions.YarnException; +import org.apache.hadoop.yarn.exceptions.YarnRuntimeException; import org.apache.hadoop.yarn.server.sharedcachemanager.AppChecker; @@ -39,13 +43,26 @@ @Evolving public abstract class SCMStore extends CompositeService { - protected final AppChecker appChecker; + protected AppChecker appChecker; + + protected SCMStore(String name) { + super(name); + } protected SCMStore(String name, AppChecker appChecker) { super(name); this.appChecker = appChecker; } + @Override + protected void serviceInit(Configuration conf) throws Exception { + if (this.appChecker == null) { + this.appChecker = createAppCheckerService(conf); + } + addService(appChecker); + super.serviceInit(conf); + } + /** * Add a resource to the shared cache and it's associated filename. The * resource is identified by a unique key. If the key already exists no action @@ -164,4 +181,30 @@ public void cleanResourceReferences(String key) throws YarnException { @Private public abstract boolean isResourceEvictable(String key, FileStatus file); + /** + * Create an instance of the AppChecker service via reflection based on the + * {@link YarnConfiguration#SCM_APP_CHECKER_CLASS} parameter. + * + * @param conf + * @return an instance of the AppChecker class + */ + @Private + @SuppressWarnings("unchecked") + public static AppChecker createAppCheckerService(Configuration conf) { + Class defaultCheckerClass; + try { + defaultCheckerClass = + (Class) Class + .forName(YarnConfiguration.DEFAULT_SCM_APP_CHECKER_CLASS); + } catch (Exception e) { + throw new YarnRuntimeException("Invalid default scm app checker class" + + YarnConfiguration.DEFAULT_SCM_APP_CHECKER_CLASS, e); + } + + AppChecker checker = + ReflectionUtils.newInstance(conf.getClass( + YarnConfiguration.SCM_APP_CHECKER_CLASS, defaultCheckerClass, + AppChecker.class), conf); + return checker; + } }