Repository: incubator-slider Updated Branches: refs/heads/feature/SLIDER-394_env_check 8034012f2 -> b63618039
SLIDER-377 AM checks for validity of server side; client does this if the CLI action says it should (default is yes) Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/b6361803 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/b6361803 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/b6361803 Branch: refs/heads/feature/SLIDER-394_env_check Commit: b636180392a719b1b663f77592c23b7b16a8f4d3 Parents: 8034012 Author: Steve Loughran <ste...@apache.org> Authored: Thu Sep 4 16:53:35 2014 +0100 Committer: Steve Loughran <ste...@apache.org> Committed: Thu Sep 4 16:53:35 2014 +0100 ---------------------------------------------------------------------- .../org/apache/slider/client/SliderClient.java | 18 ++++++++++++++---- .../slider/common/params/AbstractActionArgs.java | 11 +++++++++++ .../slider/common/params/ActionHelpArgs.java | 14 ++++++++++++-- .../slider/common/params/ActionVersionArgs.java | 12 +++++++++++- .../apache/slider/common/tools/SliderUtils.java | 2 +- .../apache/slider/core/build/InstanceBuilder.java | 5 +++-- .../slider/server/appmaster/SliderAppMaster.java | 2 +- .../services/workflow/LongLivedProcess.java | 3 ++- 8 files changed, 55 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b6361803/slider-core/src/main/java/org/apache/slider/client/SliderClient.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java index f6d761e..f4040c4 100644 --- a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java +++ b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java @@ -46,6 +46,7 @@ import org.apache.slider.api.proto.Messages; import org.apache.slider.common.Constants; import org.apache.slider.common.SliderExitCodes; import org.apache.slider.common.SliderKeys; +import org.apache.slider.common.params.AbstractActionArgs; import org.apache.slider.common.params.AbstractClusterBuildingActionArgs; import org.apache.slider.common.params.ActionAMSuicideArgs; import org.apache.slider.common.params.ActionCreateArgs; @@ -291,6 +292,12 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe // choose the action String action = serviceArgs.getAction(); + + AbstractActionArgs coreAction = serviceArgs.getCoreAction(); + if (coreAction.getHadoopServicesRequired()) { + // validate the client + SliderUtils.validateSliderClientEnvironment(null); + } int exitCode = EXIT_SUCCESS; String clusterName = serviceArgs.getClusterName(); // actions @@ -613,7 +620,9 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe // verify that a live cluster isn't there SliderUtils.validateClusterName(clustername); verifyBindingsDefined(); - if (!liveClusterAllowed) verifyNoLiveClusters(clustername); + if (!liveClusterAllowed) { + verifyNoLiveClusters(clustername); + } Configuration conf = getConfig(); String registryQuorum = lookupZKQuorum(); @@ -1169,7 +1178,7 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe */ addConfOptionToCLI(commandLine, config, - DFSConfigKeys.DFS_NAMENODE_USER_NAME_KEY); + DFSConfigKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY); } // write out the path output commandLine.addOutAndErrFiles(STDOUT_AM, STDERR_AM); @@ -1263,10 +1272,11 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe */ private void propagatePrincipals(Configuration config, AggregateConf clusterSpec) { - String dfsPrincipal = config.get(DFSConfigKeys.DFS_NAMENODE_USER_NAME_KEY); + String dfsPrincipal = config.get( + DFSConfigKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY); if (dfsPrincipal != null) { String siteDfsPrincipal = OptionKeys.SITE_XML_PREFIX + - DFSConfigKeys.DFS_NAMENODE_USER_NAME_KEY; + DFSConfigKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY; clusterSpec.getAppConfOperations().getGlobalOptions().putIfUnset( siteDfsPrincipal, dfsPrincipal); http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b6361803/slider-core/src/main/java/org/apache/slider/common/params/AbstractActionArgs.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/common/params/AbstractActionArgs.java b/slider-core/src/main/java/org/apache/slider/common/params/AbstractActionArgs.java index f4a4569..d18c85b 100644 --- a/slider-core/src/main/java/org/apache/slider/common/params/AbstractActionArgs.java +++ b/slider-core/src/main/java/org/apache/slider/common/params/AbstractActionArgs.java @@ -148,4 +148,15 @@ public abstract class AbstractActionArgs extends ArgOps implements Arguments { public String toString() { return super.toString() + ": " + getActionName(); } + + /** + * Override point: + * Flag to indicate that core hadoop API services are needed (HDFS, YARN, etc) + * âand that validation of the client state should take place. + * + * @return a flag to indicate that the core hadoop services will be needed. + */ + public boolean getHadoopServicesRequired() { + return true; + } } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b6361803/slider-core/src/main/java/org/apache/slider/common/params/ActionHelpArgs.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/common/params/ActionHelpArgs.java b/slider-core/src/main/java/org/apache/slider/common/params/ActionHelpArgs.java index 4d4098f..f59396a 100644 --- a/slider-core/src/main/java/org/apache/slider/common/params/ActionHelpArgs.java +++ b/slider-core/src/main/java/org/apache/slider/common/params/ActionHelpArgs.java @@ -20,9 +20,11 @@ package org.apache.slider.common.params; import com.beust.jcommander.Parameters; +/** + * The Help command + */ @Parameters(commandNames = {SliderActions.ACTION_HELP, SliderActions.ACTION_USAGE}, - commandDescription = SliderActions.DESCRIBE_ACTION_LIST) - + commandDescription = SliderActions.DESCRIBE_ACTION_HELP) public class ActionHelpArgs extends AbstractActionArgs { @Override public String getActionName() { @@ -38,4 +40,12 @@ public class ActionHelpArgs extends AbstractActionArgs { return 0; } + /** + * This action does not need hadoop services + * @return false + */ + @Override + public boolean getHadoopServicesRequired() { + return false; + } } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b6361803/slider-core/src/main/java/org/apache/slider/common/params/ActionVersionArgs.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/common/params/ActionVersionArgs.java b/slider-core/src/main/java/org/apache/slider/common/params/ActionVersionArgs.java index c36ef62..b9d212b 100644 --- a/slider-core/src/main/java/org/apache/slider/common/params/ActionVersionArgs.java +++ b/slider-core/src/main/java/org/apache/slider/common/params/ActionVersionArgs.java @@ -20,9 +20,11 @@ package org.apache.slider.common.params; import com.beust.jcommander.Parameters; +/** + * The version command + */ @Parameters(commandNames = {SliderActions.ACTION_VERSION}, commandDescription = SliderActions.DESCRIBE_ACTION_VERSION) - public class ActionVersionArgs extends AbstractActionArgs { @Override public String getActionName() { @@ -33,4 +35,12 @@ public class ActionVersionArgs extends AbstractActionArgs { return 0; } + /** + * This action does not need hadoop services + * @return false + */ + @Override + public boolean getHadoopServicesRequired() { + return false; + } } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b6361803/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java b/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java index 44fe4fd..4cdc580 100644 --- a/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java +++ b/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java @@ -1026,7 +1026,7 @@ public final class SliderUtils { SliderUtils.verifyPrincipalSet(conf, YarnConfiguration.RM_PRINCIPAL); SliderUtils.verifyPrincipalSet(conf, - DFSConfigKeys.DFS_NAMENODE_USER_NAME_KEY); + DFSConfigKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY); return true; } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b6361803/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java b/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java index 937b777..bfa7097 100644 --- a/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java +++ b/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java @@ -181,10 +181,11 @@ public class InstanceBuilder { * Propagate any critical principals from the current site config down to the HBase one. */ public void propagatePrincipals() { - String dfsPrincipal = conf.get(DFSConfigKeys.DFS_NAMENODE_USER_NAME_KEY); + String dfsPrincipal = conf.get( + DFSConfigKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY); if (dfsPrincipal != null) { String siteDfsPrincipal = OptionKeys.SITE_XML_PREFIX + - DFSConfigKeys.DFS_NAMENODE_USER_NAME_KEY; + DFSConfigKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY; instanceDescription.getAppConfOperations().set(siteDfsPrincipal, dfsPrincipal); } } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b6361803/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java index 49c7792..1c60b69 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java @@ -390,7 +390,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService UserGroupInformation ugi = UserGroupInformation.getCurrentUser(); log.debug("Authenticating as {}", ugi); SliderUtils.verifyPrincipalSet(conf, - DFSConfigKeys.DFS_NAMENODE_USER_NAME_KEY); + DFSConfigKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY); // always enforce protocol to be token-based. conf.set( CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION, http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b6361803/slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java b/slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java index a0df2c9..57b989c 100644 --- a/slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java +++ b/slider-core/src/main/java/org/apache/slider/server/services/workflow/LongLivedProcess.java @@ -284,7 +284,8 @@ public class LongLivedProcess implements Runnable { /** * Exec the process * @return the process - * @throws IOException + * @throws IOException on aany failure to start the process + * @throws FileNotFoundException if the process could not be found */ private Process spawnChildProcess() throws IOException { if (process != null) {