Author: sseth
Date: Wed Sep 25 00:38:28 2013
New Revision: 1526068
URL: http://svn.apache.org/r1526068
Log:
merge YARN-1229 from branch-2. Define constraints on Auxiliary Service names.
Change ShuffleHandler service name from mapreduce.shuffle to mapreduce_shuffle.
Contributed by Xuan Gong.
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/CHANGES.txt
hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/AuxServices.java
hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestAuxServices.java
Modified: hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/CHANGES.txt?rev=1526068&r1=1526067&r2=1526068&view=diff
==============================================================================
--- hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/CHANGES.txt
(original)
+++ hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/CHANGES.txt Wed
Sep 25 00:38:28 2013
@@ -12,6 +12,22 @@ Release 2.2.0 - UNRELEASED
BUG FIXES
+Release 2.1.2 - UNRELEASED
+
+ INCOMPATIBLE CHANGES
+
+ YARN-1229. Define constraints on Auxiliary Service names. Change
+ ShuffleHandler service name from mapreduce.shuffle to
+ mapreduce_shuffle (Xuan Gong via sseth)
+
+ NEW FEATURES
+
+ IMPROVEMENTS
+
+ OPTIMIZATIONS
+
+ BUG FIXES
+
YARN-1128. FifoPolicy.computeShares throws NPE on empty list of
Schedulables
(Karthik Kambatla via Sandy Ryza)
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml?rev=1526068&r1=1526067&r2=1526068&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/resources/yarn-default.xml
Wed Sep 25 00:38:28 2013
@@ -652,9 +652,10 @@
</property>
<property>
+ <description>the valid service name should only contain a-zA-Z0-9_ and can
not start with numbers</description>
<name>yarn.nodemanager.aux-services</name>
<value></value>
- <!-- <value>mapreduce.shuffle</value> -->
+ <!--<value>mapreduce_shuffle</value>-->
</property>
<property>
@@ -710,7 +711,7 @@
<!--Map Reduce configuration-->
<property>
- <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
+ <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/AuxServices.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/AuxServices.java?rev=1526068&r1=1526067&r2=1526068&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/AuxServices.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/AuxServices.java
Wed Sep 25 00:38:28 2013
@@ -24,6 +24,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.regex.Pattern;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -40,6 +41,8 @@ import org.apache.hadoop.yarn.server.api
import org.apache.hadoop.yarn.server.api.ContainerInitializationContext;
import org.apache.hadoop.yarn.server.api.ContainerTerminationContext;
+import com.google.common.base.Preconditions;
+
public class AuxServices extends AbstractService
implements ServiceStateChangeListener, EventHandler<AuxServicesEvent> {
@@ -48,6 +51,8 @@ public class AuxServices extends Abstrac
protected final Map<String,AuxiliaryService> serviceMap;
protected final Map<String,ByteBuffer> serviceMetaData;
+ private final Pattern p = Pattern.compile("^[A-Za-z_]+[A-Za-z0-9_]*$");
+
public AuxServices() {
super(AuxServices.class.getName());
serviceMap =
@@ -90,6 +95,13 @@ public class AuxServices extends Abstrac
YarnConfiguration.NM_AUX_SERVICES);
for (final String sName : auxNames) {
try {
+ Preconditions
+ .checkArgument(
+ validateAuxServiceName(sName),
+ "The ServiceName: " + sName + " set in " +
+ YarnConfiguration.NM_AUX_SERVICES +" is invalid." +
+ "The valid service name should only contain a-zA-Z0-9_ " +
+ "and can not start with numbers");
Class<? extends AuxiliaryService> sClass = conf.getClass(
String.format(YarnConfiguration.NM_AUX_SERVICE_FMT, sName), null,
AuxiliaryService.class);
@@ -199,4 +211,10 @@ public class AuxServices extends Abstrac
}
}
+ private boolean validateAuxServiceName(String name) {
+ if (name == null || name.trim().isEmpty()) {
+ return false;
+ }
+ return p.matcher(name).matches();
+ }
}
Modified:
hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestAuxServices.java
URL:
http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestAuxServices.java?rev=1526068&r1=1526067&r2=1526068&view=diff
==============================================================================
---
hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestAuxServices.java
(original)
+++
hadoop/common/branches/branch-2.1-beta/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/TestAuxServices.java
Wed Sep 25 00:38:28 2013
@@ -31,6 +31,8 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
+import junit.framework.Assert;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
@@ -288,4 +290,33 @@ public class TestAuxServices {
assertTrue(aux.getServices().isEmpty());
}
+ @Test
+ public void testValidAuxServiceName() {
+ final AuxServices aux = new AuxServices();
+ Configuration conf = new Configuration();
+ conf.setStrings(YarnConfiguration.NM_AUX_SERVICES, new String[] {"Asrv1",
"Bsrv_2"});
+ conf.setClass(String.format(YarnConfiguration.NM_AUX_SERVICE_FMT, "Asrv1"),
+ ServiceA.class, Service.class);
+ conf.setClass(String.format(YarnConfiguration.NM_AUX_SERVICE_FMT,
"Bsrv_2"),
+ ServiceB.class, Service.class);
+ try {
+ aux.init(conf);
+ } catch (Exception ex) {
+ Assert.fail("Should not receive the exception.");
+ }
+
+ //Test bad auxService Name
+ final AuxServices aux1 = new AuxServices();
+ conf.setStrings(YarnConfiguration.NM_AUX_SERVICES, new String[]
{"1Asrv1"});
+ conf.setClass(String.format(YarnConfiguration.NM_AUX_SERVICE_FMT,
"1Asrv1"),
+ ServiceA.class, Service.class);
+ try {
+ aux1.init(conf);
+ Assert.fail("Should receive the exception.");
+ } catch (Exception ex) {
+ assertTrue(ex.getMessage().contains("The ServiceName: 1Asrv1 set in " +
+ "yarn.nodemanager.aux-services is invalid.The valid service name " +
+ "should only contain a-zA-Z0-9_ and can not start with numbers"));
+ }
+ }
}