You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by vi...@apache.org on 2015/04/23 20:24:04 UTC
[1/2] hadoop git commit: YARN-3413. Changed Nodelabel attributes
(like exclusivity) to be settable only via addToClusterNodeLabels but not
changeable at runtime. (Wangda Tan via vinodkv)
Repository: hadoop
Updated Branches:
refs/heads/trunk aa4a192fe -> f5fe35e29
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/AddToClusterNodeLabelsRequestPBImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/AddToClusterNodeLabelsRequestPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/AddToClusterNodeLabelsRequestPBImpl.java
index 7bf92af..1ff0bef 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/AddToClusterNodeLabelsRequestPBImpl.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/AddToClusterNodeLabelsRequestPBImpl.java
@@ -18,23 +18,27 @@
package org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.apache.hadoop.yarn.api.records.NodeLabel;
+import org.apache.hadoop.yarn.api.records.impl.pb.NodeLabelPBImpl;
+import org.apache.hadoop.yarn.proto.YarnProtos.NodeLabelProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.AddToClusterNodeLabelsRequestProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.AddToClusterNodeLabelsRequestProtoOrBuilder;
import org.apache.hadoop.yarn.server.api.protocolrecords.AddToClusterNodeLabelsRequest;
public class AddToClusterNodeLabelsRequestPBImpl extends
AddToClusterNodeLabelsRequest {
- Set<String> labels;
AddToClusterNodeLabelsRequestProto proto = AddToClusterNodeLabelsRequestProto
.getDefaultInstance();
AddToClusterNodeLabelsRequestProto.Builder builder = null;
+ private List<NodeLabel> updatedNodeLabels;
boolean viaProto = false;
public AddToClusterNodeLabelsRequestPBImpl() {
- this.builder = AddToClusterNodeLabelsRequestProto.newBuilder();
+ builder = AddToClusterNodeLabelsRequestProto.newBuilder();
}
public AddToClusterNodeLabelsRequestPBImpl(
@@ -43,18 +47,11 @@ public class AddToClusterNodeLabelsRequestPBImpl extends
viaProto = true;
}
- private void maybeInitBuilder() {
- if (viaProto || builder == null) {
- builder = AddToClusterNodeLabelsRequestProto.newBuilder(proto);
- }
- viaProto = false;
- }
-
- private void mergeLocalToBuilder() {
- if (this.labels != null && !this.labels.isEmpty()) {
- builder.clearNodeLabels();
- builder.addAllNodeLabels(this.labels);
- }
+ public AddToClusterNodeLabelsRequestProto getProto() {
+ mergeLocalToProto();
+ proto = viaProto ? proto : builder.build();
+ viaProto = true;
+ return proto;
}
private void mergeLocalToProto() {
@@ -65,35 +62,30 @@ public class AddToClusterNodeLabelsRequestPBImpl extends
viaProto = true;
}
- public AddToClusterNodeLabelsRequestProto getProto() {
- mergeLocalToProto();
- proto = viaProto ? proto : builder.build();
- viaProto = true;
- return proto;
- }
-
- private void initLabels() {
- if (this.labels != null) {
- return;
+ private void mergeLocalToBuilder() {
+ if (this.updatedNodeLabels != null) {
+ addNodeLabelsToProto();
}
- AddToClusterNodeLabelsRequestProtoOrBuilder p = viaProto ? proto : builder;
- this.labels = new HashSet<String>();
- this.labels.addAll(p.getNodeLabelsList());
}
- @Override
- public void setNodeLabels(Set<String> labels) {
+ private void addNodeLabelsToProto() {
maybeInitBuilder();
- if (labels == null || labels.isEmpty()) {
- builder.clearNodeLabels();
+ builder.clearNodeLabels();
+ List<NodeLabelProto> protoList = new ArrayList<NodeLabelProto>();
+ for (NodeLabel r : this.updatedNodeLabels) {
+ protoList.add(convertToProtoFormat(r));
}
- this.labels = labels;
+ builder.addAllNodeLabels(protoList);
}
@Override
- public Set<String> getNodeLabels() {
- initLabels();
- return this.labels;
+ public boolean equals(Object other) {
+ if (other == null)
+ return false;
+ if (other.getClass().isAssignableFrom(this.getClass())) {
+ return this.getProto().equals(this.getClass().cast(other).getProto());
+ }
+ return false;
}
@Override
@@ -101,14 +93,53 @@ public class AddToClusterNodeLabelsRequestPBImpl extends
assert false : "hashCode not designed";
return 0;
}
-
+
+ private void maybeInitBuilder() {
+ if (viaProto || builder == null) {
+ builder = AddToClusterNodeLabelsRequestProto.newBuilder(proto);
+ }
+ viaProto = false;
+ }
+
@Override
- public boolean equals(Object other) {
- if (other == null)
- return false;
- if (other.getClass().isAssignableFrom(this.getClass())) {
- return this.getProto().equals(this.getClass().cast(other).getProto());
+ public void setNodeLabels(List<NodeLabel> updatedNodeLabels) {
+ maybeInitBuilder();
+ this.updatedNodeLabels = new ArrayList<>();
+ if (updatedNodeLabels == null) {
+ builder.clearNodeLabels();
+ return;
}
- return false;
+ this.updatedNodeLabels.addAll(updatedNodeLabels);
+ }
+
+ private void initLocalNodeLabels() {
+ AddToClusterNodeLabelsRequestProtoOrBuilder p = viaProto ? proto : builder;
+ List<NodeLabelProto> attributesProtoList = p.getNodeLabelsList();
+ this.updatedNodeLabels = new ArrayList<NodeLabel>();
+ for (NodeLabelProto r : attributesProtoList) {
+ this.updatedNodeLabels.add(convertFromProtoFormat(r));
+ }
+ }
+
+ @Override
+ public List<NodeLabel> getNodeLabels() {
+ if (this.updatedNodeLabels != null) {
+ return this.updatedNodeLabels;
+ }
+ initLocalNodeLabels();
+ return this.updatedNodeLabels;
+ }
+
+ private NodeLabel convertFromProtoFormat(NodeLabelProto p) {
+ return new NodeLabelPBImpl(p);
+ }
+
+ private NodeLabelProto convertToProtoFormat(NodeLabel t) {
+ return ((NodeLabelPBImpl) t).getProto();
+ }
+
+ @Override
+ public String toString() {
+ return getProto().toString();
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/UpdateNodeLabelsRequestPBImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/UpdateNodeLabelsRequestPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/UpdateNodeLabelsRequestPBImpl.java
deleted file mode 100644
index f18a8db..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/UpdateNodeLabelsRequestPBImpl.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
- * 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.server.api.protocolrecords.impl.pb;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.hadoop.yarn.api.records.NodeLabel;
-import org.apache.hadoop.yarn.api.records.impl.pb.NodeLabelPBImpl;
-import org.apache.hadoop.yarn.proto.YarnProtos.NodeLabelProto;
-import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeLabelsRequestProto;
-import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeLabelsRequestProtoOrBuilder;
-import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeLabelsRequest;
-
-public class UpdateNodeLabelsRequestPBImpl extends
- UpdateNodeLabelsRequest {
- UpdateNodeLabelsRequestProto proto =
- UpdateNodeLabelsRequestProto.getDefaultInstance();
- UpdateNodeLabelsRequestProto.Builder builder = null;
- private List<NodeLabel> updatedNodeLabels;
- boolean viaProto = false;
-
- public UpdateNodeLabelsRequestPBImpl() {
- builder = UpdateNodeLabelsRequestProto.newBuilder();
- }
-
- public UpdateNodeLabelsRequestPBImpl(
- UpdateNodeLabelsRequestProto proto) {
- this.proto = proto;
- viaProto = true;
- }
-
- public UpdateNodeLabelsRequestProto getProto() {
- mergeLocalToProto();
- proto = viaProto ? proto : builder.build();
- viaProto = true;
- return proto;
- }
-
- private void mergeLocalToProto() {
- if (viaProto)
- maybeInitBuilder();
- mergeLocalToBuilder();
- proto = builder.build();
- viaProto = true;
- }
-
- private void mergeLocalToBuilder() {
- if (this.updatedNodeLabels != null) {
- addNodeLabelsToProto();
- }
- }
-
- private void addNodeLabelsToProto() {
- maybeInitBuilder();
- builder.clearNodeLabels();
- List<NodeLabelProto> protoList =
- new ArrayList<NodeLabelProto>();
- for (NodeLabel r : this.updatedNodeLabels) {
- protoList.add(convertToProtoFormat(r));
- }
- builder.addAllNodeLabels(protoList);
- }
-
- @Override
- public boolean equals(Object other) {
- if (other == null)
- return false;
- if (other.getClass().isAssignableFrom(this.getClass())) {
- return this.getProto().equals(this.getClass().cast(other).getProto());
- }
- return false;
- }
-
- @Override
- public int hashCode() {
- assert false : "hashCode not designed";
- return 0;
- }
-
- private void maybeInitBuilder() {
- if (viaProto || builder == null) {
- builder = UpdateNodeLabelsRequestProto.newBuilder(proto);
- }
- viaProto = false;
- }
-
- @Override
- public void setNodeLabels(List<NodeLabel> updatedNodeLabels) {
- maybeInitBuilder();
- if (updatedNodeLabels == null) {
- builder.clearNodeLabels();
- }
- this.updatedNodeLabels = updatedNodeLabels;
- }
-
- private void initLocalNodeLabels() {
- UpdateNodeLabelsRequestProtoOrBuilder p = viaProto ? proto : builder;
- List<NodeLabelProto> attributesProtoList =
- p.getNodeLabelsList();
- this.updatedNodeLabels = new ArrayList<NodeLabel>();
- for (NodeLabelProto r : attributesProtoList) {
- this.updatedNodeLabels.add(convertFromProtoFormat(r));
- }
- }
-
- @Override
- public List<NodeLabel> getNodeLabels() {
- if (this.updatedNodeLabels != null) {
- return this.updatedNodeLabels;
- }
- initLocalNodeLabels();
- return this.updatedNodeLabels;
- }
-
- private NodeLabel
- convertFromProtoFormat(NodeLabelProto p) {
- return new NodeLabelPBImpl(p);
- }
-
- private NodeLabelProto convertToProtoFormat(NodeLabel t) {
- return ((NodeLabelPBImpl) t).getProto();
- }
-
- @Override
- public String toString() {
- return getProto().toString();
- }
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/UpdateNodeLabelsResponsePBImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/UpdateNodeLabelsResponsePBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/UpdateNodeLabelsResponsePBImpl.java
deleted file mode 100644
index 217b8fc..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/impl/pb/UpdateNodeLabelsResponsePBImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * 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.server.api.protocolrecords.impl.pb;
-
-import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeLabelsResponseProto;
-import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeLabelsResponse;
-
-public class UpdateNodeLabelsResponsePBImpl extends
- UpdateNodeLabelsResponse {
- UpdateNodeLabelsResponseProto proto =
- UpdateNodeLabelsResponseProto.getDefaultInstance();
- UpdateNodeLabelsResponseProto.Builder builder = null;
- boolean viaProto = false;
-
- public UpdateNodeLabelsResponsePBImpl() {
- builder = UpdateNodeLabelsResponseProto.newBuilder();
- }
-
- public UpdateNodeLabelsResponsePBImpl(
- UpdateNodeLabelsResponseProto proto) {
- this.proto = proto;
- viaProto = true;
- }
-
- public UpdateNodeLabelsResponseProto getProto() {
- proto = viaProto ? proto : builder.build();
- viaProto = true;
- return proto;
- }
-
- @Override
- public int hashCode() {
- return getProto().hashCode();
- }
-
- @Override
- public boolean equals(Object other) {
- if (other == null)
- return false;
- if (other.getClass().isAssignableFrom(this.getClass())) {
- return this.getProto().equals(this.getClass().cast(other).getProto());
- }
- return false;
- }
-
- @Override
- public String toString() {
- return getProto().toString().replaceAll("\\n", ", ")
- .replaceAll("\\s+", " ");
- }
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestPBImplRecords.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestPBImplRecords.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestPBImplRecords.java
index 931bca4..8dacd3b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestPBImplRecords.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/api/TestPBImplRecords.java
@@ -233,8 +233,6 @@ import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.Remov
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.RemoveFromClusterNodeLabelsResponseProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.ReplaceLabelsOnNodeRequestProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.ReplaceLabelsOnNodeResponseProto;
-import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeLabelsRequestProto;
-import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeLabelsResponseProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeResourceRequestProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeResourceResponseProto;
import org.apache.hadoop.yarn.proto.YarnServiceProtos.AllocateRequestProto;
@@ -311,8 +309,6 @@ import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.RemoveFromClust
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.RemoveFromClusterNodeLabelsResponsePBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.ReplaceLabelsOnNodeRequestPBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.ReplaceLabelsOnNodeResponsePBImpl;
-import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.UpdateNodeLabelsRequestPBImpl;
-import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.UpdateNodeLabelsResponsePBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.UpdateNodeResourceRequestPBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.UpdateNodeResourceResponsePBImpl;
import org.apache.hadoop.yarn.util.resource.Resources;
@@ -1295,18 +1291,6 @@ public class TestPBImplRecords {
}
@Test
- public void testUpdateNodeLabelsRequestPBImpl() throws Exception {
- validatePBImplRecord(UpdateNodeLabelsRequestPBImpl.class,
- UpdateNodeLabelsRequestProto.class);
- }
-
- @Test
- public void testUpdateNodeLabelsResponsePBImpl() throws Exception {
- validatePBImplRecord(UpdateNodeLabelsResponsePBImpl.class,
- UpdateNodeLabelsResponseProto.class);
- }
-
- @Test
public void testCheckForDecommissioningNodesRequestPBImpl() throws Exception {
validatePBImplRecord(CheckForDecommissioningNodesRequestPBImpl.class,
CheckForDecommissioningNodesRequestProto.class);
@@ -1317,4 +1301,4 @@ public class TestPBImplRecords {
validatePBImplRecord(CheckForDecommissioningNodesResponsePBImpl.class,
CheckForDecommissioningNodesResponseProto.class);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/DummyCommonNodeLabelsManager.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/DummyCommonNodeLabelsManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/DummyCommonNodeLabelsManager.java
index 67e6119..48d6dc8 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/DummyCommonNodeLabelsManager.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/DummyCommonNodeLabelsManager.java
@@ -31,9 +31,8 @@ import org.apache.hadoop.yarn.event.InlineDispatcher;
public class DummyCommonNodeLabelsManager extends CommonNodeLabelsManager {
Map<NodeId, Set<String>> lastNodeToLabels = null;
- Collection<String> lastAddedlabels = null;
+ Collection<NodeLabel> lastAddedlabels = null;
Collection<String> lastRemovedlabels = null;
- List<NodeLabel> lastUpdatedNodeLabels = null;
@Override
public void initNodeLabelStore(Configuration conf) {
@@ -56,17 +55,11 @@ public class DummyCommonNodeLabelsManager extends CommonNodeLabelsManager {
}
@Override
- public void storeNewClusterNodeLabels(Set<String> label) throws IOException {
+ public void storeNewClusterNodeLabels(List<NodeLabel> label) throws IOException {
lastAddedlabels = label;
}
@Override
- public void updateNodeLabels(List<NodeLabel> updatedNodeLabels)
- throws IOException {
- lastUpdatedNodeLabels = updatedNodeLabels;
- }
-
- @Override
public void close() throws IOException {
// do nothing
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/NodeLabelTestBase.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/NodeLabelTestBase.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/NodeLabelTestBase.java
index 3b9825d..4d406fd 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/NodeLabelTestBase.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/NodeLabelTestBase.java
@@ -88,6 +88,7 @@ public class NodeLabelTestBase {
Assert.assertTrue(s1.containsAll(s2));
}
+ @SuppressWarnings("unchecked")
public static <E> Set<E> toSet(E... elements) {
Set<E> set = Sets.newHashSet(elements);
return set;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/TestCommonNodeLabelsManager.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/TestCommonNodeLabelsManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/TestCommonNodeLabelsManager.java
index 1e2326b..beb2cf8 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/TestCommonNodeLabelsManager.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/TestCommonNodeLabelsManager.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.util.Arrays;
+import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -31,7 +32,6 @@ import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.NodeLabel;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
-import org.apache.hadoop.yarn.exceptions.YarnException;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@@ -61,15 +61,14 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
@Test(timeout = 5000)
public void testAddRemovelabel() throws Exception {
// Add some label
- mgr.addToCluserNodeLabels(ImmutableSet.of("hello"));
- assertCollectionEquals(mgr.lastAddedlabels, Arrays.asList("hello"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("hello"));
+ verifyNodeLabelAdded(Sets.newHashSet("hello"), mgr.lastAddedlabels);
- mgr.addToCluserNodeLabels(ImmutableSet.of("world"));
- mgr.addToCluserNodeLabels(toSet("hello1", "world1"));
- assertCollectionEquals(mgr.lastAddedlabels,
- Sets.newHashSet("hello1", "world1"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("world"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("hello1", "world1"));
+ verifyNodeLabelAdded(Sets.newHashSet("hello1", "world1"), mgr.lastAddedlabels);
- Assert.assertTrue(mgr.getClusterNodeLabels().containsAll(
+ Assert.assertTrue(mgr.getClusterNodeLabelNames().containsAll(
Sets.newHashSet("hello", "world", "hello1", "world1")));
// try to remove null, empty and non-existed label, should fail
@@ -86,23 +85,32 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
// Remove some label
mgr.removeFromClusterNodeLabels(Arrays.asList("hello"));
- assertCollectionEquals(mgr.lastRemovedlabels, Arrays.asList("hello"));
- Assert.assertTrue(mgr.getClusterNodeLabels().containsAll(
+ assertCollectionEquals(Sets.newHashSet("hello"), mgr.lastRemovedlabels);
+ Assert.assertTrue(mgr.getClusterNodeLabelNames().containsAll(
Arrays.asList("world", "hello1", "world1")));
mgr.removeFromClusterNodeLabels(Arrays
.asList("hello1", "world1", "world"));
Assert.assertTrue(mgr.lastRemovedlabels.containsAll(Sets.newHashSet(
"hello1", "world1", "world")));
- Assert.assertTrue(mgr.getClusterNodeLabels().isEmpty());
+ Assert.assertTrue(mgr.getClusterNodeLabelNames().isEmpty());
}
@Test(timeout = 5000)
public void testAddlabelWithCase() throws Exception {
// Add some label, case will not ignore here
- mgr.addToCluserNodeLabels(ImmutableSet.of("HeLlO"));
- assertCollectionEquals(mgr.lastAddedlabels, Arrays.asList("HeLlO"));
- Assert.assertFalse(mgr.getClusterNodeLabels().containsAll(Arrays.asList("hello")));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("HeLlO"));
+ verifyNodeLabelAdded(Sets.newHashSet("HeLlO"), mgr.lastAddedlabels);
+ Assert.assertFalse(mgr.getClusterNodeLabelNames().containsAll(
+ Arrays.asList("hello")));
+ }
+
+ @Test(timeout = 5000)
+ public void testAddlabelWithExclusivity() throws Exception {
+ // Add some label, case will not ignore here
+ mgr.addToCluserNodeLabels(Arrays.asList(NodeLabel.newInstance("a", false), NodeLabel.newInstance("b", true)));
+ Assert.assertFalse(mgr.isExclusiveNodeLabel("a"));
+ Assert.assertTrue(mgr.isExclusiveNodeLabel("b"));
}
@Test(timeout = 5000)
@@ -111,7 +119,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
try {
Set<String> set = new HashSet<String>();
set.add(null);
- mgr.addToCluserNodeLabels(set);
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(set);
} catch (IOException e) {
caught = true;
}
@@ -119,7 +127,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
caught = false;
try {
- mgr.addToCluserNodeLabels(ImmutableSet.of(CommonNodeLabelsManager.NO_LABEL));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of(CommonNodeLabelsManager.NO_LABEL));
} catch (IOException e) {
caught = true;
}
@@ -128,7 +136,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
caught = false;
try {
- mgr.addToCluserNodeLabels(ImmutableSet.of("-?"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("-?"));
} catch (IOException e) {
caught = true;
}
@@ -136,7 +144,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
caught = false;
try {
- mgr.addToCluserNodeLabels(ImmutableSet.of(StringUtils.repeat("c", 257)));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of(StringUtils.repeat("c", 257)));
} catch (IOException e) {
caught = true;
}
@@ -144,7 +152,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
caught = false;
try {
- mgr.addToCluserNodeLabels(ImmutableSet.of("-aaabbb"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("-aaabbb"));
} catch (IOException e) {
caught = true;
}
@@ -152,7 +160,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
caught = false;
try {
- mgr.addToCluserNodeLabels(ImmutableSet.of("_aaabbb"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("_aaabbb"));
} catch (IOException e) {
caught = true;
}
@@ -160,7 +168,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
caught = false;
try {
- mgr.addToCluserNodeLabels(ImmutableSet.of("a^aabbb"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("a^aabbb"));
} catch (IOException e) {
caught = true;
}
@@ -168,7 +176,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
caught = false;
try {
- mgr.addToCluserNodeLabels(ImmutableSet.of("aa[a]bbb"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("aa[a]bbb"));
} catch (IOException e) {
caught = true;
}
@@ -198,7 +206,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
Assert.assertTrue("trying to add a empty node but succeeded", caught);
// set node->label one by one
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3"));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n1"), toSet("p1")));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n1"), toSet("p2")));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n2"), toSet("p3")));
@@ -249,7 +257,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
@Test(timeout = 5000)
public void testRemovelabelWithNodes() throws Exception {
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3"));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n1"), toSet("p1")));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n2"), toSet("p2")));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n3"), toSet("p3")));
@@ -261,21 +269,21 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
mgr.removeFromClusterNodeLabels(ImmutableSet.of("p2", "p3"));
Assert.assertTrue(mgr.getNodeLabels().isEmpty());
- Assert.assertTrue(mgr.getClusterNodeLabels().isEmpty());
+ Assert.assertTrue(mgr.getClusterNodeLabelNames().isEmpty());
assertCollectionEquals(mgr.lastRemovedlabels, Arrays.asList("p2", "p3"));
}
@Test(timeout = 5000)
public void testTrimLabelsWhenAddRemoveNodeLabels() throws IOException {
- mgr.addToCluserNodeLabels(toSet(" p1"));
- assertCollectionEquals(mgr.getClusterNodeLabels(), toSet("p1"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet(" p1"));
+ assertCollectionEquals(mgr.getClusterNodeLabelNames(), toSet("p1"));
mgr.removeFromClusterNodeLabels(toSet("p1 "));
- Assert.assertTrue(mgr.getClusterNodeLabels().isEmpty());
+ Assert.assertTrue(mgr.getClusterNodeLabelNames().isEmpty());
}
@Test(timeout = 5000)
public void testTrimLabelsWhenModifyLabelsOnNodes() throws IOException {
- mgr.addToCluserNodeLabels(toSet(" p1", "p2"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet(" p1", "p2"));
mgr.addLabelsToNode(ImmutableMap.of(toNodeId("n1"), toSet("p1 ")));
assertMapEquals(
mgr.getNodeLabels(),
@@ -291,7 +299,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
@Test(timeout = 5000)
public void testReplaceLabelsOnHostsShouldUpdateNodesBelongTo()
throws IOException {
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3"));
mgr.addLabelsToNode(ImmutableMap.of(toNodeId("n1"), toSet("p1")));
assertMapEquals(
mgr.getNodeLabels(),
@@ -330,7 +338,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
// add labels
try {
- mgr.addToCluserNodeLabels(ImmutableSet.of("x"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x"));
} catch (IOException e) {
assertNodeLabelsDisabledErrorMessage(e);
caught = true;
@@ -392,7 +400,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
@Test(timeout = 5000)
public void testLabelsToNodes()
throws IOException {
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3"));
mgr.addLabelsToNode(ImmutableMap.of(toNodeId("n1"), toSet("p1")));
Map<String, Set<NodeId>> labelsToNodes = mgr.getLabelsToNodes();
assertLabelsToNodesEquals(
@@ -453,7 +461,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
@Test(timeout = 5000)
public void testLabelsToNodesForSelectedLabels()
throws IOException {
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3"));
mgr.addLabelsToNode(
ImmutableMap.of(
toNodeId("n1:1"), toSet("p1"),
@@ -511,7 +519,7 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
boolean failed = false;
// As in YARN-2694, we temporarily disable no more than one label existed in
// one host
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3"));
try {
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n1"), toSet("p1", "p2")));
} catch (IOException e) {
@@ -539,29 +547,11 @@ public class TestCommonNodeLabelsManager extends NodeLabelTestBase {
failed);
}
- @Test (timeout = 5000)
- public void testUpdateNodeLabels() throws Exception {
- boolean failed = false;
-
- // should fail: label isn't exist
- try {
- mgr.updateNodeLabels(Arrays.asList(NodeLabel.newInstance(
- "p1", false)));
- } catch (YarnException e) {
- failed = true;
+ private void verifyNodeLabelAdded(Set<String> expectedAddedLabelNames,
+ Collection<NodeLabel> addedNodeLabels) {
+ Assert.assertEquals(expectedAddedLabelNames.size(), addedNodeLabels.size());
+ for (NodeLabel label : addedNodeLabels) {
+ Assert.assertTrue(expectedAddedLabelNames.contains(label.getName()));
}
- Assert.assertTrue("Should fail since the node label doesn't exist", failed);
-
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
-
- mgr.updateNodeLabels(Arrays.asList(
- NodeLabel.newInstance("p1", false), NodeLabel.newInstance("p2", true)));
- Assert.assertEquals("p1", mgr.lastUpdatedNodeLabels.get(0).getNodeLabel());
- Assert.assertFalse(mgr.lastUpdatedNodeLabels.get(0).getIsExclusive());
- Assert.assertTrue(mgr.lastUpdatedNodeLabels.get(1).getIsExclusive());
-
- // Check exclusive for p1/p2
- Assert.assertFalse(mgr.isExclusiveNodeLabel("p1"));
- Assert.assertTrue(mgr.isExclusiveNodeLabel("p2"));
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/TestFileSystemNodeLabelsStore.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/TestFileSystemNodeLabelsStore.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/TestFileSystemNodeLabelsStore.java
index 6694290..f070c20 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/TestFileSystemNodeLabelsStore.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/test/java/org/apache/hadoop/yarn/nodelabels/TestFileSystemNodeLabelsStore.java
@@ -84,9 +84,9 @@ public class TestFileSystemNodeLabelsStore extends NodeLabelTestBase {
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test(timeout = 10000)
public void testRecoverWithMirror() throws Exception {
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
- mgr.addToCluserNodeLabels(toSet("p4"));
- mgr.addToCluserNodeLabels(toSet("p5", "p6"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p4"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p5", "p6"));
mgr.replaceLabelsOnNode((Map) ImmutableMap.of(toNodeId("n1"), toSet("p1"),
toNodeId("n2"), toSet("p2")));
mgr.replaceLabelsOnNode((Map) ImmutableMap.of(toNodeId("n3"), toSet("p3"),
@@ -110,8 +110,8 @@ public class TestFileSystemNodeLabelsStore extends NodeLabelTestBase {
mgr.init(conf);
// check variables
- Assert.assertEquals(3, mgr.getClusterNodeLabels().size());
- Assert.assertTrue(mgr.getClusterNodeLabels().containsAll(
+ Assert.assertEquals(3, mgr.getClusterNodeLabelNames().size());
+ Assert.assertTrue(mgr.getClusterNodeLabelNames().containsAll(
Arrays.asList("p2", "p4", "p6")));
assertMapContains(mgr.getNodeLabels(), ImmutableMap.of(toNodeId("n2"),
@@ -129,8 +129,8 @@ public class TestFileSystemNodeLabelsStore extends NodeLabelTestBase {
mgr.init(conf);
// check variables
- Assert.assertEquals(3, mgr.getClusterNodeLabels().size());
- Assert.assertTrue(mgr.getClusterNodeLabels().containsAll(
+ Assert.assertEquals(3, mgr.getClusterNodeLabelNames().size());
+ Assert.assertTrue(mgr.getClusterNodeLabelNames().containsAll(
Arrays.asList("p2", "p4", "p6")));
assertMapContains(mgr.getNodeLabels(), ImmutableMap.of(toNodeId("n2"),
@@ -147,9 +147,9 @@ public class TestFileSystemNodeLabelsStore extends NodeLabelTestBase {
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test(timeout = 10000)
public void testEditlogRecover() throws Exception {
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
- mgr.addToCluserNodeLabels(toSet("p4"));
- mgr.addToCluserNodeLabels(toSet("p5", "p6"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p4"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p5", "p6"));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n1"), toSet("p1"),
toNodeId("n2"), toSet("p2")));
mgr.replaceLabelsOnNode((Map) ImmutableMap.of(toNodeId("n3"), toSet("p3"),
@@ -173,8 +173,8 @@ public class TestFileSystemNodeLabelsStore extends NodeLabelTestBase {
mgr.init(conf);
// check variables
- Assert.assertEquals(3, mgr.getClusterNodeLabels().size());
- Assert.assertTrue(mgr.getClusterNodeLabels().containsAll(
+ Assert.assertEquals(3, mgr.getClusterNodeLabelNames().size());
+ Assert.assertTrue(mgr.getClusterNodeLabelNames().containsAll(
Arrays.asList("p2", "p4", "p6")));
assertMapContains(mgr.getNodeLabels(), ImmutableMap.of(toNodeId("n2"),
@@ -191,9 +191,12 @@ public class TestFileSystemNodeLabelsStore extends NodeLabelTestBase {
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test (timeout = 10000)
public void testSerilizationAfterRecovery() throws Exception {
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
- mgr.addToCluserNodeLabels(toSet("p4"));
- mgr.addToCluserNodeLabels(toSet("p5", "p6"));
+ // Add to cluster node labels, p2/p6 are non-exclusive.
+ mgr.addToCluserNodeLabels(Arrays.asList(NodeLabel.newInstance("p1", true),
+ NodeLabel.newInstance("p2", false), NodeLabel.newInstance("p3", true),
+ NodeLabel.newInstance("p4", true), NodeLabel.newInstance("p5", true),
+ NodeLabel.newInstance("p6", false)));
+
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n1"), toSet("p1"),
toNodeId("n2"), toSet("p2")));
mgr.replaceLabelsOnNode((Map) ImmutableMap.of(toNodeId("n3"), toSet("p3"),
@@ -220,13 +223,6 @@ public class TestFileSystemNodeLabelsStore extends NodeLabelTestBase {
* p6: n6, n7
*/
- mgr.updateNodeLabels(Arrays.asList(NodeLabel.newInstance("p2", false)));
- mgr.updateNodeLabels(Arrays.asList(NodeLabel.newInstance("p6", false)));
-
- /*
- * Set p2/p6 to be exclusive
- */
-
// shutdown mgr and start a new mgr
mgr.stop();
@@ -235,8 +231,8 @@ public class TestFileSystemNodeLabelsStore extends NodeLabelTestBase {
mgr.start();
// check variables
- Assert.assertEquals(3, mgr.getClusterNodeLabels().size());
- Assert.assertTrue(mgr.getClusterNodeLabels().containsAll(
+ Assert.assertEquals(3, mgr.getClusterNodeLabelNames().size());
+ Assert.assertTrue(mgr.getClusterNodeLabelNames().containsAll(
Arrays.asList("p2", "p4", "p6")));
assertMapContains(mgr.getNodeLabels(), ImmutableMap.of(toNodeId("n2"),
@@ -258,7 +254,7 @@ public class TestFileSystemNodeLabelsStore extends NodeLabelTestBase {
mgr = new MockNodeLabelManager();
mgr.init(conf);
mgr.start();
- mgr.addToCluserNodeLabels(toSet("p7", "p8"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p7", "p8"));
mgr.stop();
/*
@@ -267,7 +263,7 @@ public class TestFileSystemNodeLabelsStore extends NodeLabelTestBase {
mgr = new MockNodeLabelManager();
mgr.init(conf);
mgr.start();
- mgr.addToCluserNodeLabels(toSet("p9"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p9"));
mgr.stop();
/*
@@ -278,8 +274,8 @@ public class TestFileSystemNodeLabelsStore extends NodeLabelTestBase {
mgr.start();
// check variables
- Assert.assertEquals(6, mgr.getClusterNodeLabels().size());
- Assert.assertTrue(mgr.getClusterNodeLabels().containsAll(
+ Assert.assertEquals(6, mgr.getClusterNodeLabelNames().size());
+ Assert.assertTrue(mgr.getClusterNodeLabelNames().containsAll(
Arrays.asList("p2", "p4", "p6", "p7", "p8", "p9")));
mgr.stop();
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/AdminService.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/AdminService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/AdminService.java
index e4ed43b..c921326 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/AdminService.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/AdminService.java
@@ -80,8 +80,6 @@ import org.apache.hadoop.yarn.server.api.protocolrecords.RemoveFromClusterNodeLa
import org.apache.hadoop.yarn.server.api.protocolrecords.RemoveFromClusterNodeLabelsResponse;
import org.apache.hadoop.yarn.server.api.protocolrecords.ReplaceLabelsOnNodeRequest;
import org.apache.hadoop.yarn.server.api.protocolrecords.ReplaceLabelsOnNodeResponse;
-import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeLabelsRequest;
-import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeLabelsResponse;
import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeResourceRequest;
import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeResourceResponse;
import org.apache.hadoop.yarn.server.resourcemanager.reservation.ReservationSystem;
@@ -678,28 +676,6 @@ public class AdminService extends CompositeService implements
throw logAndWrapException(ioe, user.getShortUserName(), argName, msg);
}
}
-
- @Override
- public UpdateNodeLabelsResponse updateNodeLabels(
- UpdateNodeLabelsRequest request) throws YarnException, IOException {
- String argName = "updateNodeLabels";
- final String msg = "update node labels";
- UserGroupInformation user = checkAcls(argName);
-
- checkRMStatus(user.getShortUserName(), argName, msg);
-
- UpdateNodeLabelsResponse response = UpdateNodeLabelsResponse.newInstance();
-
- try {
- rmContext.getNodeLabelManager().updateNodeLabels(
- request.getNodeLabels());
- RMAuditLogger
- .logSuccess(user.getShortUserName(), argName, "AdminService");
- return response;
- } catch (YarnException ioe) {
- throw logAndWrapException(ioe, user.getShortUserName(), argName, msg);
- }
- }
private void checkRMStatus(String user, String argName, String msg)
throws StandbyException {
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CSQueueUtils.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CSQueueUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CSQueueUtils.java
index 8f9362e..0cc7589 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CSQueueUtils.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CSQueueUtils.java
@@ -135,7 +135,7 @@ class CSQueueUtils {
accessibleLabels.addAll(labels);
}
if (accessibleLabels.contains(CommonNodeLabelsManager.ANY)) {
- accessibleLabels.addAll(mgr.getClusterNodeLabels());
+ accessibleLabels.addAll(mgr.getClusterNodeLabelNames());
}
accessibleLabels.add(CommonNodeLabelsManager.NO_LABEL);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ParentQueue.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ParentQueue.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ParentQueue.java
index 53142b5..97a5d27 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ParentQueue.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/ParentQueue.java
@@ -147,7 +147,7 @@ public class ParentQueue extends AbstractCSQueue {
" for children of queue " + queueName);
}
// check label capacities
- for (String nodeLabel : labelManager.getClusterNodeLabels()) {
+ for (String nodeLabel : labelManager.getClusterNodeLabelNames()) {
float capacityByLabel = queueCapacities.getCapacity(nodeLabel);
// check children's labels
float sum = 0;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java
index fae0806..6cd6d56 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/webapp/RMWebServices.java
@@ -857,7 +857,7 @@ public class RMWebServices {
NodeLabelsInfo ret =
new NodeLabelsInfo(rm.getRMContext().getNodeLabelManager()
- .getClusterNodeLabels());
+ .getClusterNodeLabelNames());
return ret;
}
@@ -883,7 +883,7 @@ public class RMWebServices {
}
rm.getRMContext().getNodeLabelManager()
- .addToCluserNodeLabels(new HashSet<String>(
+ .addToCluserNodeLabelsWithDefaultExclusivity(new HashSet<String>(
newNodeLabels.getNodeLabels()));
return Response.status(Status.OK).build();
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMService.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMService.java
index 430763c..7be982b 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMService.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestClientRMService.java
@@ -99,6 +99,7 @@ import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerStatus;
import org.apache.hadoop.yarn.api.records.NodeId;
+import org.apache.hadoop.yarn.api.records.NodeLabel;
import org.apache.hadoop.yarn.api.records.NodeReport;
import org.apache.hadoop.yarn.api.records.NodeState;
import org.apache.hadoop.yarn.api.records.QueueACL;
@@ -200,7 +201,7 @@ public class TestClientRMService {
};
rm.start();
RMNodeLabelsManager labelsMgr = rm.getRMContext().getNodeLabelManager();
- labelsMgr.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
+ labelsMgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y"));
// Add a healthy node with label = x
MockNM node = rm.registerNode("host1:1234", 1024);
@@ -1407,7 +1408,7 @@ public class TestClientRMService {
};
rm.start();
RMNodeLabelsManager labelsMgr = rm.getRMContext().getNodeLabelManager();
- labelsMgr.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
+ labelsMgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y"));
Map<NodeId, Set<String>> map = new HashMap<NodeId, Set<String>>();
map.put(NodeId.newInstance("host1", 0), ImmutableSet.of("x"));
@@ -1427,7 +1428,7 @@ public class TestClientRMService {
GetClusterNodeLabelsResponse response =
client.getClusterNodeLabels(GetClusterNodeLabelsRequest.newInstance());
Assert.assertTrue(response.getNodeLabels().containsAll(
- Arrays.asList("x", "y")));
+ Arrays.asList(NodeLabel.newInstance("x"), NodeLabel.newInstance("y"))));
// Get node labels mapping
GetNodesToLabelsResponse response1 =
@@ -1457,7 +1458,7 @@ public class TestClientRMService {
};
rm.start();
RMNodeLabelsManager labelsMgr = rm.getRMContext().getNodeLabelManager();
- labelsMgr.addToCluserNodeLabels(ImmutableSet.of("x", "y", "z"));
+ labelsMgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y", "z"));
Map<NodeId, Set<String>> map = new HashMap<NodeId, Set<String>>();
map.put(NodeId.newInstance("host1", 0), ImmutableSet.of("x"));
@@ -1480,7 +1481,8 @@ public class TestClientRMService {
GetClusterNodeLabelsResponse response =
client.getClusterNodeLabels(GetClusterNodeLabelsRequest.newInstance());
Assert.assertTrue(response.getNodeLabels().containsAll(
- Arrays.asList("x", "y", "z")));
+ Arrays.asList(NodeLabel.newInstance("x"), NodeLabel.newInstance("y"),
+ NodeLabel.newInstance("z"))));
// Get labels to nodes mapping
GetLabelsToNodesResponse response1 =
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMRestart.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMRestart.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMRestart.java
index 06a8830..c889446 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMRestart.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestRMRestart.java
@@ -2104,7 +2104,7 @@ public class TestRMRestart extends ParameterizedSchedulerTestBase {
clusterNodeLabels.add("y");
clusterNodeLabels.add("z");
// Add node label x,y,z
- nodeLabelManager.addToCluserNodeLabels(clusterNodeLabels);
+ nodeLabelManager.addToCluserNodeLabelsWithDefaultExclusivity(clusterNodeLabels);
// Add node Label to Node h1->x
NodeId n1 = NodeId.newInstance("h1", 0);
@@ -2129,7 +2129,7 @@ public class TestRMRestart extends ParameterizedSchedulerTestBase {
}
Assert.assertEquals(clusterNodeLabels.size(), nodeLabelManager
- .getClusterNodeLabels().size());
+ .getClusterNodeLabelNames().size());
Map<NodeId, Set<String>> nodeLabels = nodeLabelManager.getNodeLabels();
Assert.assertEquals(1, nodeLabelManager.getNodeLabels().size());
@@ -2148,7 +2148,7 @@ public class TestRMRestart extends ParameterizedSchedulerTestBase {
nodeLabelManager = rm2.getRMContext().getNodeLabelManager();
Assert.assertEquals(clusterNodeLabels.size(), nodeLabelManager
- .getClusterNodeLabels().size());
+ .getClusterNodeLabelNames().size());
nodeLabels = nodeLabelManager.getNodeLabels();
Assert.assertEquals(1, nodeLabelManager.getNodeLabels().size());
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceTrackerService.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceTrackerService.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceTrackerService.java
index 18d7df4..cc5f464 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceTrackerService.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestResourceTrackerService.java
@@ -337,7 +337,7 @@ public class TestResourceTrackerService extends NodeLabelTestBase {
rm.start();
try {
- nodeLabelsMgr.addToCluserNodeLabels(toSet("A", "B", "C"));
+ nodeLabelsMgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("A", "B", "C"));
} catch (IOException e) {
Assert.fail("Caught Exception while intializing");
e.printStackTrace();
@@ -386,7 +386,7 @@ public class TestResourceTrackerService extends NodeLabelTestBase {
rm.start();
try {
- nodeLabelsMgr.addToCluserNodeLabels(toSet("X", "Y", "Z"));
+ nodeLabelsMgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("X", "Y", "Z"));
} catch (IOException e) {
Assert.fail("Caught Exception while intializing");
e.printStackTrace();
@@ -439,7 +439,7 @@ public class TestResourceTrackerService extends NodeLabelTestBase {
rm.start();
try {
- nodeLabelsMgr.addToCluserNodeLabels(toSet("X", "Y", "Z"));
+ nodeLabelsMgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("X", "Y", "Z"));
} catch (IOException e) {
Assert.fail("Caught Exception while intializing");
e.printStackTrace();
@@ -491,7 +491,7 @@ public class TestResourceTrackerService extends NodeLabelTestBase {
};
rm.start();
try {
- nodeLabelsMgr.addToCluserNodeLabels(toSet("A", "B", "C"));
+ nodeLabelsMgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("A", "B", "C"));
} catch (IOException e) {
Assert.fail("Caught Exception while intializing");
e.printStackTrace();
@@ -551,7 +551,7 @@ public class TestResourceTrackerService extends NodeLabelTestBase {
rm.start();
// adding valid labels
try {
- nodeLabelsMgr.addToCluserNodeLabels(toSet("A", "B", "C"));
+ nodeLabelsMgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("A", "B", "C"));
} catch (IOException e) {
Assert.fail("Caught Exception while intializing");
e.printStackTrace();
@@ -636,7 +636,7 @@ public class TestResourceTrackerService extends NodeLabelTestBase {
rm.start();
try {
- nodeLabelsMgr.addToCluserNodeLabels(toSet("A", "B", "C"));
+ nodeLabelsMgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("A", "B", "C"));
} catch (IOException e) {
Assert.fail("Caught Exception while intializing");
e.printStackTrace();
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/NullRMNodeLabelsManager.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/NullRMNodeLabelsManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/NullRMNodeLabelsManager.java
index 14d96a0..9548029 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/NullRMNodeLabelsManager.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/NullRMNodeLabelsManager.java
@@ -57,7 +57,8 @@ public class NullRMNodeLabelsManager extends RMNodeLabelsManager {
}
@Override
- public void storeNewClusterNodeLabels(Set<String> label) throws IOException {
+ public void storeNewClusterNodeLabels(List<NodeLabel> label)
+ throws IOException {
// do nothing
}
@@ -65,12 +66,6 @@ public class NullRMNodeLabelsManager extends RMNodeLabelsManager {
public void close() throws IOException {
// do nothing
}
-
- @Override
- public void updateNodeLabels(List<NodeLabel> updatedNodeLabels)
- throws IOException {
- // do nothing
- }
};
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/TestRMNodeLabelsManager.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/TestRMNodeLabelsManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/TestRMNodeLabelsManager.java
index ace8742..05bb1e5 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/TestRMNodeLabelsManager.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/TestRMNodeLabelsManager.java
@@ -63,7 +63,7 @@ public class TestRMNodeLabelsManager extends NodeLabelTestBase {
@Test(timeout = 5000)
public void testGetLabelResourceWhenNodeActiveDeactive() throws Exception {
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3"));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n1"), toSet("p1"),
toNodeId("n2"), toSet("p2"), toNodeId("n3"), toSet("p3")));
@@ -81,7 +81,7 @@ public class TestRMNodeLabelsManager extends NodeLabelTestBase {
// check add labels multiple times shouldn't overwrite
// original attributes on labels like resource
- mgr.addToCluserNodeLabels(toSet("p1", "p4"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p4"));
Assert.assertEquals(mgr.getResourceByLabel("p1", null),
Resources.add(SMALL_RESOURCE, LARGE_NODE));
Assert.assertEquals(mgr.getResourceByLabel("p4", null), EMPTY_RESOURCE);
@@ -120,7 +120,7 @@ public class TestRMNodeLabelsManager extends NodeLabelTestBase {
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test(timeout = 5000)
public void testGetLabelResource() throws Exception {
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3"));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n1"), toSet("p1"),
toNodeId("n2"), toSet("p2"), toNodeId("n3"), toSet("p3")));
@@ -137,7 +137,7 @@ public class TestRMNodeLabelsManager extends NodeLabelTestBase {
Assert.assertEquals(mgr.getResourceByLabel("p3", null), SMALL_RESOURCE);
// add more labels
- mgr.addToCluserNodeLabels(toSet("p4", "p5", "p6"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p4", "p5", "p6"));
mgr.replaceLabelsOnNode((Map) ImmutableMap.of(toNodeId("n4"), toSet("p1"),
toNodeId("n5"), toSet("p2"), toNodeId("n6"), toSet("p3"),
toNodeId("n7"), toSet("p4"), toNodeId("n8"), toSet("p5")));
@@ -216,7 +216,7 @@ public class TestRMNodeLabelsManager extends NodeLabelTestBase {
* host3 : yellow
* host4 :
*/
- mgr.addToCluserNodeLabels(toSet("red", "blue", "yellow"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("red", "blue", "yellow"));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("host1"), toSet("red")));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("host2"), toSet("blue")));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("host3"), toSet("yellow")));
@@ -397,7 +397,7 @@ public class TestRMNodeLabelsManager extends NodeLabelTestBase {
Resources.multiply(SMALL_RESOURCE, 4));
// change two of these nodes to p1, check resource of no_label and P1
- mgr.addToCluserNodeLabels(toSet("p1"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1"));
mgr.addLabelsToNode(ImmutableMap.of(toNodeId("n1:1"), toSet("p1"),
toNodeId("n1:2"), toSet("p1")));
@@ -412,7 +412,7 @@ public class TestRMNodeLabelsManager extends NodeLabelTestBase {
@Test(timeout = 5000)
public void testRemoveLabelsFromNode() throws Exception {
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3"));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n1"), toSet("p1"),
toNodeId("n2"), toSet("p2"), toNodeId("n3"), toSet("p3")));
// active one NM to n1:1
@@ -432,7 +432,7 @@ public class TestRMNodeLabelsManager extends NodeLabelTestBase {
@Test(timeout = 5000)
public void testGetLabelsOnNodesWhenNodeActiveDeactive() throws Exception {
- mgr.addToCluserNodeLabels(toSet("p1", "p2", "p3"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1", "p2", "p3"));
mgr.replaceLabelsOnNode(ImmutableMap.of(
toNodeId("n1"), toSet("p2")));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n1:1"), toSet("p1")));
@@ -489,7 +489,7 @@ public class TestRMNodeLabelsManager extends NodeLabelTestBase {
@Test(timeout = 5000)
public void testPullRMNodeLabelsInfo() throws IOException {
- mgr.addToCluserNodeLabels(toSet("x", "y", "z"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("x", "y", "z"));
mgr.activateNode(NodeId.newInstance("n1", 1), Resource.newInstance(10, 0));
mgr.activateNode(NodeId.newInstance("n2", 1), Resource.newInstance(10, 0));
mgr.activateNode(NodeId.newInstance("n3", 1), Resource.newInstance(10, 0));
@@ -516,7 +516,7 @@ public class TestRMNodeLabelsManager extends NodeLabelTestBase {
mgr.getLabelsToNodes(), transposeNodeToLabels(mgr.getNodeLabels()));
// Add labels and replace labels on node
- mgr.addToCluserNodeLabels(toSet("p1"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(toSet("p1"));
mgr.replaceLabelsOnNode(ImmutableMap.of(toNodeId("n1"), toSet("p1")));
// p1 -> n1, n1:1
Assert.assertEquals(2, mgr.getLabelsToNodes().get("p1").size());
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java
index 4aa818b..1a34e57 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacityScheduler.java
@@ -2578,7 +2578,7 @@ public class TestCapacityScheduler {
final RMNodeLabelsManager mgr = new NullRMNodeLabelsManager();
mgr.init(conf);
- mgr.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y"));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x")));
MemoryRMStateStore memStore = new MemoryRMStateStore();
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerNodeLabelUpdate.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerNodeLabelUpdate.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerNodeLabelUpdate.java
index 1e339d9..c5439d8 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerNodeLabelUpdate.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerNodeLabelUpdate.java
@@ -98,7 +98,7 @@ public class TestCapacitySchedulerNodeLabelUpdate {
@Test (timeout = 30000)
public void testNodeUpdate() throws Exception {
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x", "y", "z"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y", "z"));
// set mapping:
// h1 -> x
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestContainerAllocation.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestContainerAllocation.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestContainerAllocation.java
index 47398e3..6aceda5 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestContainerAllocation.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestContainerAllocation.java
@@ -19,8 +19,6 @@
package org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -34,7 +32,6 @@ import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.LogAggregationContext;
import org.apache.hadoop.yarn.api.records.NodeId;
-import org.apache.hadoop.yarn.api.records.NodeLabel;
import org.apache.hadoop.yarn.api.records.Priority;
import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.ResourceRequest;
@@ -54,13 +51,9 @@ import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttempt;
import org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptState;
import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainer;
import org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainerState;
-import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerAppReport;
-import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNode;
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.YarnScheduler;
-import org.apache.hadoop.yarn.server.resourcemanager.scheduler.common.fica.FiCaSchedulerApp;
-import org.apache.hadoop.yarn.server.resourcemanager.scheduler.event.NodeUpdateSchedulerEvent;
import org.apache.hadoop.yarn.server.resourcemanager.security.RMContainerTokenSecretManager;
import org.apache.hadoop.yarn.server.utils.BuilderUtils;
import org.junit.Assert;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestNodeLabelContainerAllocation.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestNodeLabelContainerAllocation.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestNodeLabelContainerAllocation.java
index 5155db5..46aa7ec 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestNodeLabelContainerAllocation.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestNodeLabelContainerAllocation.java
@@ -143,7 +143,7 @@ public class TestNodeLabelContainerAllocation {
mgr.init(conf);
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y"));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x"),
NodeId.newInstance("h2", 0), toSet("y")));
@@ -226,7 +226,7 @@ public class TestNodeLabelContainerAllocation {
*/
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x", "y", "z"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y", "z"));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0),
toSet("x"), NodeId.newInstance("h2", 0), toSet("y"),
NodeId.newInstance("h3", 0), toSet("y"), NodeId.newInstance("h4", 0),
@@ -310,7 +310,7 @@ public class TestNodeLabelContainerAllocation {
@Test (timeout = 120000)
public void testContainerAllocateWithLabels() throws Exception {
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y"));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x"),
NodeId.newInstance("h2", 0), toSet("y")));
@@ -386,7 +386,7 @@ public class TestNodeLabelContainerAllocation {
// instead, it uses default queue label expression
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y"));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x"),
NodeId.newInstance("h2", 0), toSet("y")));
@@ -483,9 +483,8 @@ public class TestNodeLabelContainerAllocation {
*/
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
- // Makes y to be non-exclusive node labels
- mgr.updateNodeLabels(Arrays.asList(NodeLabel.newInstance("y", false)));
+ mgr.addToCluserNodeLabels(ImmutableSet.of(
+ NodeLabel.newInstance("x"), NodeLabel.newInstance("y", false)));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("y")));
// inject node label manager
@@ -561,9 +560,9 @@ public class TestNodeLabelContainerAllocation {
*/
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
+ mgr.addToCluserNodeLabels(ImmutableSet.of(
+ NodeLabel.newInstance("x"), NodeLabel.newInstance("y", false)));
// Makes y to be non-exclusive node labels
- mgr.updateNodeLabels(Arrays.asList(NodeLabel.newInstance("y", false)));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("y")));
// inject node label manager
@@ -612,10 +611,8 @@ public class TestNodeLabelContainerAllocation {
* non-labeled request should get allocation on non-labeled nodes first.
*/
- // set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
- // Makes x to be non-exclusive node labels
- mgr.updateNodeLabels(Arrays.asList(NodeLabel.newInstance("x", false)));
+ mgr.addToCluserNodeLabels(ImmutableSet.of(
+ NodeLabel.newInstance("x", false), NodeLabel.newInstance("y")));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x")));
// inject node label manager
@@ -734,9 +731,8 @@ public class TestNodeLabelContainerAllocation {
csConf.setCapacityByLabel(C2, "x", 0);
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
- // Makes x to be non-exclusive node labels
- mgr.updateNodeLabels(Arrays.asList(NodeLabel.newInstance("x", false)));
+ mgr.addToCluserNodeLabels(ImmutableSet.of(
+ NodeLabel.newInstance("x", false), NodeLabel.newInstance("y")));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x")));
// inject node label manager
@@ -844,9 +840,8 @@ public class TestNodeLabelContainerAllocation {
csConf.setUserLimitFactor(B, 5);
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x"));
- // Makes x to be non-exclusive node labels
- mgr.updateNodeLabels(Arrays.asList(NodeLabel.newInstance("x", false)));
+ mgr.addToCluserNodeLabels(ImmutableSet.of(
+ NodeLabel.newInstance("x", false), NodeLabel.newInstance("y")));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x")));
// inject node label manager
@@ -909,9 +904,8 @@ public class TestNodeLabelContainerAllocation {
*/
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
- // Makes x to be non-exclusive node labels
- mgr.updateNodeLabels(Arrays.asList(NodeLabel.newInstance("x", false)));
+ mgr.addToCluserNodeLabels(ImmutableSet.of(
+ NodeLabel.newInstance("x", false), NodeLabel.newInstance("y")));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x")));
// inject node label manager
@@ -984,9 +978,8 @@ public class TestNodeLabelContainerAllocation {
csConf.setMaximumCapacityByLabel(B, "x", 50);
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x"));
- // Makes x to be non-exclusive node labels
- mgr.updateNodeLabels(Arrays.asList(NodeLabel.newInstance("x", false)));
+ mgr.addToCluserNodeLabels(ImmutableSet.of(
+ NodeLabel.newInstance("x", false)));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x")));
// inject node label manager
@@ -1114,9 +1107,8 @@ public class TestNodeLabelContainerAllocation {
csConf.setCapacityByLabel(B, "x", 50);
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x"));
- // Makes x to be non-exclusive node labels
- mgr.updateNodeLabels(Arrays.asList(NodeLabel.newInstance("x", false)));
+ mgr.addToCluserNodeLabels(ImmutableSet.of(
+ NodeLabel.newInstance("x", false)));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x")));
// inject node label manager
@@ -1349,9 +1341,8 @@ public class TestNodeLabelContainerAllocation {
csConf.setCapacity(D, 25);
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x"));
- // Makes x to be non-exclusive node labels
- mgr.updateNodeLabels(Arrays.asList(NodeLabel.newInstance("x", false)));
+ mgr.addToCluserNodeLabels(ImmutableSet.of(
+ NodeLabel.newInstance("x", false)));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x")));
// inject node label manager
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueParsing.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueParsing.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueParsing.java
index 34f7c2c..0206772 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueParsing.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestQueueParsing.java
@@ -417,7 +417,7 @@ public class TestQueueParsing {
@Test
public void testQueueParsingReinitializeWithLabels() throws IOException {
- nodeLabelManager.addToCluserNodeLabels(ImmutableSet.of("red", "blue"));
+ nodeLabelManager.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("red", "blue"));
CapacitySchedulerConfiguration csConf =
new CapacitySchedulerConfiguration();
setupQueueConfigurationWithoutLabels(csConf);
@@ -505,7 +505,7 @@ public class TestQueueParsing {
@Test
public void testQueueParsingWithLabels() throws IOException {
- nodeLabelManager.addToCluserNodeLabels(ImmutableSet.of("red", "blue"));
+ nodeLabelManager.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("red", "blue"));
YarnConfiguration conf = new YarnConfiguration();
CapacitySchedulerConfiguration csConf =
@@ -529,7 +529,7 @@ public class TestQueueParsing {
@Test
public void testQueueParsingWithLabelsInherit() throws IOException {
- nodeLabelManager.addToCluserNodeLabels(ImmutableSet.of("red", "blue"));
+ nodeLabelManager.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("red", "blue"));
YarnConfiguration conf = new YarnConfiguration();
CapacitySchedulerConfiguration csConf =
@@ -668,7 +668,7 @@ public class TestQueueParsing {
// Initialize a cluster with labels, but doesn't use them, reinitialize
// shouldn't fail
- nodeLabelManager.addToCluserNodeLabels(labels);
+ nodeLabelManager.addToCluserNodeLabelsWithDefaultExclusivity(labels);
CapacitySchedulerConfiguration csConf =
new CapacitySchedulerConfiguration();
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestWorkPreservingRMRestartForNodeLabel.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestWorkPreservingRMRestartForNodeLabel.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestWorkPreservingRMRestartForNodeLabel.java
index fc9e14a..eeec940 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestWorkPreservingRMRestartForNodeLabel.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestWorkPreservingRMRestartForNodeLabel.java
@@ -129,7 +129,7 @@ public class TestWorkPreservingRMRestartForNodeLabel {
// instead, it uses default queue label expression
// set node -> label
- mgr.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y"));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x"),
NodeId.newInstance("h2", 0), toSet("y")));
@@ -205,7 +205,7 @@ public class TestWorkPreservingRMRestartForNodeLabel {
// Re-start RM
mgr = new NullRMNodeLabelsManager();
mgr.init(conf);
- mgr.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
+ mgr.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y"));
mgr.addLabelsToNode(ImmutableMap.of(NodeId.newInstance("h1", 0), toSet("x"),
NodeId.newInstance("h2", 0), toSet("y")));
MockRM rm2 =
[2/2] hadoop git commit: YARN-3413. Changed Nodelabel attributes
(like exclusivity) to be settable only via addToClusterNodeLabels but not
changeable at runtime. (Wangda Tan via vinodkv)
Posted by vi...@apache.org.
YARN-3413. Changed Nodelabel attributes (like exclusivity) to be settable only via addToClusterNodeLabels but not changeable at runtime. (Wangda Tan via vinodkv)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/f5fe35e2
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/f5fe35e2
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/f5fe35e2
Branch: refs/heads/trunk
Commit: f5fe35e297ed4a00a1ba93d090207ef67cebcc9d
Parents: aa4a192
Author: Vinod Kumar Vavilapalli <vi...@apache.org>
Authored: Thu Apr 23 11:19:55 2015 -0700
Committer: Vinod Kumar Vavilapalli <vi...@apache.org>
Committed: Thu Apr 23 11:19:55 2015 -0700
----------------------------------------------------------------------
.../hadoop/mapred/ResourceMgrDelegate.java | 3 +-
.../GetClusterNodeLabelsResponse.java | 9 +-
.../hadoop/yarn/api/records/NodeLabel.java | 79 +++++++---
.../ResourceManagerAdministrationProtocol.java | 8 -
.../AddToClusterNodeLabelsRequest.java | 24 +--
.../UpdateNodeLabelsRequest.java | 49 -------
.../UpdateNodeLabelsResponse.java | 37 -----
...esourcemanager_administration_protocol.proto | 1 -
..._server_resourcemanager_service_protos.proto | 7 +-
.../src/main/proto/yarn_protos.proto | 2 +-
.../src/main/proto/yarn_service_protos.proto | 2 +-
.../TestDistributedShellWithNodeLabels.java | 2 +-
.../hadoop/yarn/client/api/YarnClient.java | 3 +-
.../yarn/client/api/impl/YarnClientImpl.java | 3 +-
.../hadoop/yarn/client/cli/ClusterCLI.java | 18 +--
.../hadoop/yarn/client/cli/RMAdminCLI.java | 73 +++++++++-
.../hadoop/yarn/client/cli/TestClusterCLI.java | 21 ++-
.../hadoop/yarn/client/cli/TestRMAdminCLI.java | 60 ++++++--
.../pb/GetClusterNodeLabelsResponsePBImpl.java | 119 +++++++++------
.../api/records/impl/pb/NodeLabelPBImpl.java | 18 +--
.../nodelabels/CommonNodeLabelsManager.java | 95 ++++++------
.../nodelabels/FileSystemNodeLabelsStore.java | 40 ++---
.../hadoop/yarn/nodelabels/NodeLabelsStore.java | 10 +-
.../hadoop/yarn/nodelabels/RMNodeLabel.java | 19 ++-
.../event/NodeLabelsStoreEventType.java | 3 +-
.../event/StoreNewClusterNodeLabels.java | 10 +-
.../event/StoreUpdateNodeLabelsEvent.java | 36 -----
...nagerAdministrationProtocolPBClientImpl.java | 21 +--
...agerAdministrationProtocolPBServiceImpl.java | 23 ---
.../pb/AddToClusterNodeLabelsRequestPBImpl.java | 119 +++++++++------
.../impl/pb/UpdateNodeLabelsRequestPBImpl.java | 145 -------------------
.../impl/pb/UpdateNodeLabelsResponsePBImpl.java | 67 ---------
.../hadoop/yarn/api/TestPBImplRecords.java | 18 +--
.../DummyCommonNodeLabelsManager.java | 11 +-
.../yarn/nodelabels/NodeLabelTestBase.java | 1 +
.../nodelabels/TestCommonNodeLabelsManager.java | 104 ++++++-------
.../TestFileSystemNodeLabelsStore.java | 52 +++----
.../server/resourcemanager/AdminService.java | 24 ---
.../scheduler/capacity/CSQueueUtils.java | 2 +-
.../scheduler/capacity/ParentQueue.java | 2 +-
.../resourcemanager/webapp/RMWebServices.java | 4 +-
.../resourcemanager/TestClientRMService.java | 12 +-
.../server/resourcemanager/TestRMRestart.java | 6 +-
.../TestResourceTrackerService.java | 12 +-
.../nodelabels/NullRMNodeLabelsManager.java | 9 +-
.../nodelabels/TestRMNodeLabelsManager.java | 20 +--
.../capacity/TestCapacityScheduler.java | 2 +-
.../TestCapacitySchedulerNodeLabelUpdate.java | 2 +-
.../capacity/TestContainerAllocation.java | 7 -
.../TestNodeLabelContainerAllocation.java | 53 +++----
.../scheduler/capacity/TestQueueParsing.java | 8 +-
...TestWorkPreservingRMRestartForNodeLabel.java | 4 +-
52 files changed, 600 insertions(+), 879 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ResourceMgrDelegate.java
----------------------------------------------------------------------
diff --git a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ResourceMgrDelegate.java b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ResourceMgrDelegate.java
index 279c4f1..2b7cd5f 100644
--- a/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ResourceMgrDelegate.java
+++ b/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient/src/main/java/org/apache/hadoop/mapred/ResourceMgrDelegate.java
@@ -58,6 +58,7 @@ import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerReport;
import org.apache.hadoop.yarn.api.records.NodeId;
+import org.apache.hadoop.yarn.api.records.NodeLabel;
import org.apache.hadoop.yarn.api.records.NodeReport;
import org.apache.hadoop.yarn.api.records.NodeState;
import org.apache.hadoop.yarn.api.records.QueueUserACLInfo;
@@ -461,7 +462,7 @@ public class ResourceMgrDelegate extends YarnClient {
}
@Override
- public Set<String> getClusterNodeLabels()
+ public List<NodeLabel> getClusterNodeLabels()
throws YarnException, IOException {
return client.getClusterNodeLabels();
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetClusterNodeLabelsResponse.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetClusterNodeLabelsResponse.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetClusterNodeLabelsResponse.java
index 7bd8223..cf6e683 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetClusterNodeLabelsResponse.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/GetClusterNodeLabelsResponse.java
@@ -18,16 +18,17 @@
package org.apache.hadoop.yarn.api.protocolrecords;
-import java.util.Set;
+import java.util.List;
import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Evolving;
+import org.apache.hadoop.yarn.api.records.NodeLabel;
import org.apache.hadoop.yarn.util.Records;
@Public
@Evolving
public abstract class GetClusterNodeLabelsResponse {
- public static GetClusterNodeLabelsResponse newInstance(Set<String> labels) {
+ public static GetClusterNodeLabelsResponse newInstance(List<NodeLabel> labels) {
GetClusterNodeLabelsResponse request =
Records.newRecord(GetClusterNodeLabelsResponse.class);
request.setNodeLabels(labels);
@@ -36,9 +37,9 @@ public abstract class GetClusterNodeLabelsResponse {
@Public
@Evolving
- public abstract void setNodeLabels(Set<String> labels);
+ public abstract void setNodeLabels(List<NodeLabel> labels);
@Public
@Evolving
- public abstract Set<String> getNodeLabels();
+ public abstract List<NodeLabel> getNodeLabels();
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeLabel.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeLabel.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeLabel.java
index 23da1f4..aba6962 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeLabel.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/api/records/NodeLabel.java
@@ -18,6 +18,7 @@
package org.apache.hadoop.yarn.api.records;
+import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability.Stable;
import org.apache.hadoop.classification.InterfaceStability.Unstable;
@@ -25,31 +26,73 @@ import org.apache.hadoop.yarn.util.Records;
@Public
@Unstable
-public abstract class NodeLabel {
- @Public
+public abstract class NodeLabel implements Comparable<NodeLabel> {
+ /**
+ * By default, node label is exclusive or not
+ */
+ @Private
+ @Unstable
+ public static final boolean DEFAULT_NODE_LABEL_EXCLUSIVITY = true;
+
+ @Private
+ @Unstable
+ public static NodeLabel newInstance(String name) {
+ return newInstance(name, DEFAULT_NODE_LABEL_EXCLUSIVITY);
+ }
+
+ @Private
@Unstable
- public static NodeLabel newInstance(String nodeLabel,
- boolean isExclusive) {
- NodeLabel request =
- Records.newRecord(NodeLabel.class);
- request.setNodeLabel(nodeLabel);
- request.setIsExclusive(isExclusive);
+ public static NodeLabel newInstance(String name, boolean isExclusive) {
+ NodeLabel request = Records.newRecord(NodeLabel.class);
+ request.setName(name);
+ request.setExclusivity(isExclusive);
return request;
}
-
+
@Public
@Stable
- public abstract String getNodeLabel();
-
- @Public
+ public abstract String getName();
+
+ @Private
@Unstable
- public abstract void setNodeLabel(String nodeLabel);
-
+ public abstract void setName(String name);
+
@Public
@Stable
- public abstract boolean getIsExclusive();
-
- @Public
+ public abstract boolean isExclusive();
+
+ @Private
@Unstable
- public abstract void setIsExclusive(boolean isExclusive);
+ public abstract void setExclusivity(boolean isExclusive);
+
+ @Override
+ public int compareTo(NodeLabel other) {
+ return getName().compareTo(other.getName());
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof NodeLabel) {
+ NodeLabel nl = (NodeLabel) obj;
+ return nl.getName().equals(getName())
+ && nl.isExclusive() == isExclusive();
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("<");
+ sb.append(getName());
+ sb.append(":exclusivity=");
+ sb.append(isExclusive());
+ sb.append(">");
+ return sb.toString();
+ }
+
+ @Override
+ public int hashCode() {
+ return (getName().hashCode() << 16) + (isExclusive() ? 1 : 0);
+ }
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/ResourceManagerAdministrationProtocol.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/ResourceManagerAdministrationProtocol.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/ResourceManagerAdministrationProtocol.java
index a23f1fb..0cfa8ce 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/ResourceManagerAdministrationProtocol.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/ResourceManagerAdministrationProtocol.java
@@ -50,8 +50,6 @@ import org.apache.hadoop.yarn.server.api.protocolrecords.RemoveFromClusterNodeLa
import org.apache.hadoop.yarn.server.api.protocolrecords.RemoveFromClusterNodeLabelsResponse;
import org.apache.hadoop.yarn.server.api.protocolrecords.ReplaceLabelsOnNodeRequest;
import org.apache.hadoop.yarn.server.api.protocolrecords.ReplaceLabelsOnNodeResponse;
-import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeLabelsRequest;
-import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeLabelsResponse;
import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeResourceRequest;
import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeResourceResponse;
@@ -142,12 +140,6 @@ public interface ResourceManagerAdministrationProtocol extends GetUserMappingsPr
@Public
@Evolving
@Idempotent
- public UpdateNodeLabelsResponse updateNodeLabels(
- UpdateNodeLabelsRequest request) throws YarnException, IOException;
-
- @Public
- @Evolving
- @Idempotent
public CheckForDecommissioningNodesResponse checkForDecommissioningNodes(
CheckForDecommissioningNodesRequest checkForDecommissioningNodesRequest)
throws YarnException, IOException;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/AddToClusterNodeLabelsRequest.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/AddToClusterNodeLabelsRequest.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/AddToClusterNodeLabelsRequest.java
index 68fe995..c1ea07d 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/AddToClusterNodeLabelsRequest.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/AddToClusterNodeLabelsRequest.java
@@ -18,27 +18,31 @@
package org.apache.hadoop.yarn.server.api.protocolrecords;
-import java.util.Set;
+import java.util.List;
import org.apache.hadoop.classification.InterfaceAudience.Public;
-import org.apache.hadoop.classification.InterfaceStability.Evolving;
+import org.apache.hadoop.classification.InterfaceStability.Unstable;
+import org.apache.hadoop.yarn.api.records.NodeLabel;
import org.apache.hadoop.yarn.util.Records;
@Public
-@Evolving
+@Unstable
public abstract class AddToClusterNodeLabelsRequest {
- public static AddToClusterNodeLabelsRequest newInstance(Set<String> labels) {
+ @Public
+ @Unstable
+ public static AddToClusterNodeLabelsRequest newInstance(
+ List<NodeLabel> NodeLabels) {
AddToClusterNodeLabelsRequest request =
- Records.newRecord(AddToClusterNodeLabelsRequest.class);
- request.setNodeLabels(labels);
+ Records.newRecord(AddToClusterNodeLabelsRequest.class);
+ request.setNodeLabels(NodeLabels);
return request;
}
@Public
- @Evolving
- public abstract void setNodeLabels(Set<String> labels);
+ @Unstable
+ public abstract void setNodeLabels(List<NodeLabel> NodeLabels);
@Public
- @Evolving
- public abstract Set<String> getNodeLabels();
+ @Unstable
+ public abstract List<NodeLabel> getNodeLabels();
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/UpdateNodeLabelsRequest.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/UpdateNodeLabelsRequest.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/UpdateNodeLabelsRequest.java
deleted file mode 100644
index 44bdc65..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/UpdateNodeLabelsRequest.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * 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.server.api.protocolrecords;
-
-import java.util.List;
-
-import org.apache.hadoop.classification.InterfaceAudience.Public;
-import org.apache.hadoop.classification.InterfaceStability.Unstable;
-import org.apache.hadoop.yarn.api.records.NodeLabel;
-import org.apache.hadoop.yarn.util.Records;
-
-@Public
-@Unstable
-public abstract class UpdateNodeLabelsRequest {
- @Public
- @Unstable
- public static UpdateNodeLabelsRequest newInstance(
- List<NodeLabel> NodeLabels) {
- UpdateNodeLabelsRequest request =
- Records.newRecord(UpdateNodeLabelsRequest.class);
- request.setNodeLabels(NodeLabels);
- return request;
- }
-
- @Public
- @Unstable
- public abstract void setNodeLabels(
- List<NodeLabel> NodeLabels);
-
- @Public
- @Unstable
- public abstract List<NodeLabel> getNodeLabels();
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/UpdateNodeLabelsResponse.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/UpdateNodeLabelsResponse.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/UpdateNodeLabelsResponse.java
deleted file mode 100644
index eb704c0..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java/org/apache/hadoop/yarn/server/api/protocolrecords/UpdateNodeLabelsResponse.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * 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.server.api.protocolrecords;
-
-import org.apache.hadoop.classification.InterfaceAudience.Private;
-import org.apache.hadoop.classification.InterfaceAudience.Public;
-import org.apache.hadoop.classification.InterfaceStability.Unstable;
-import org.apache.hadoop.yarn.util.Records;
-
-@Public
-@Unstable
-public class UpdateNodeLabelsResponse {
-
- @Private
- @Unstable
- public static UpdateNodeLabelsResponse newInstance() {
- UpdateNodeLabelsResponse response =
- Records.newRecord(UpdateNodeLabelsResponse.class);
- return response;
- }
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/server/resourcemanager_administration_protocol.proto
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/server/resourcemanager_administration_protocol.proto b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/server/resourcemanager_administration_protocol.proto
index c7be907..5097084 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/server/resourcemanager_administration_protocol.proto
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/server/resourcemanager_administration_protocol.proto
@@ -42,6 +42,5 @@ service ResourceManagerAdministrationProtocolService {
rpc addToClusterNodeLabels(AddToClusterNodeLabelsRequestProto) returns (AddToClusterNodeLabelsResponseProto);
rpc removeFromClusterNodeLabels(RemoveFromClusterNodeLabelsRequestProto) returns (RemoveFromClusterNodeLabelsResponseProto);
rpc replaceLabelsOnNodes(ReplaceLabelsOnNodeRequestProto) returns (ReplaceLabelsOnNodeResponseProto);
- rpc updateNodeLabels(UpdateNodeLabelsRequestProto) returns (UpdateNodeLabelsResponseProto);
rpc checkForDecommissioningNodes(CheckForDecommissioningNodesRequestProto) returns (CheckForDecommissioningNodesResponseProto);
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/server/yarn_server_resourcemanager_service_protos.proto
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/server/yarn_server_resourcemanager_service_protos.proto b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/server/yarn_server_resourcemanager_service_protos.proto
index cf6fe3f..d6d8713 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/server/yarn_server_resourcemanager_service_protos.proto
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/server/yarn_server_resourcemanager_service_protos.proto
@@ -77,7 +77,7 @@ message UpdateNodeResourceResponseProto {
}
message AddToClusterNodeLabelsRequestProto {
- repeated string nodeLabels = 1;
+ repeated NodeLabelProto nodeLabels = 1;
}
message AddToClusterNodeLabelsResponseProto {
@@ -98,11 +98,6 @@ message ReplaceLabelsOnNodeResponseProto {
}
-message UpdateNodeLabelsRequestProto {
- repeated NodeLabelProto nodeLabels = 1;
-}
-
-
message UpdateNodeLabelsResponseProto {
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto
index 50d7165..c45081a 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_protos.proto
@@ -262,7 +262,7 @@ message LabelsToNodeIdsProto {
}
message NodeLabelProto {
- optional string nodeLabel = 1;
+ optional string name = 1;
optional bool isExclusive = 2 [default = true];
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_service_protos.proto
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_service_protos.proto b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_service_protos.proto
index 33d1207..410b663 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_service_protos.proto
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/proto/yarn_service_protos.proto
@@ -213,7 +213,7 @@ message GetClusterNodeLabelsRequestProto {
}
message GetClusterNodeLabelsResponseProto {
- repeated string nodeLabels = 1;
+ repeated NodeLabelProto nodeLabels = 1;
}
//////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/test/java/org/apache/hadoop/yarn/applications/distributedshell/TestDistributedShellWithNodeLabels.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/test/java/org/apache/hadoop/yarn/applications/distributedshell/TestDistributedShellWithNodeLabels.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/test/java/org/apache/hadoop/yarn/applications/distributedshell/TestDistributedShellWithNodeLabels.java
index c04b7fe..b62b091 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/test/java/org/apache/hadoop/yarn/applications/distributedshell/TestDistributedShellWithNodeLabels.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-distributedshell/src/test/java/org/apache/hadoop/yarn/applications/distributedshell/TestDistributedShellWithNodeLabels.java
@@ -54,7 +54,7 @@ public class TestDistributedShellWithNodeLabels {
RMNodeLabelsManager labelsMgr = rmContext.getNodeLabelManager();
Set<String> labels = new HashSet<String>();
labels.add("x");
- labelsMgr.addToCluserNodeLabels(labels);
+ labelsMgr.addToCluserNodeLabelsWithDefaultExclusivity(labels);
// Setup queue access to node labels
distShellTest.conf.set("yarn.scheduler.capacity.root.accessible-node-labels", "x");
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/YarnClient.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/YarnClient.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/YarnClient.java
index aa49d86..5ce626c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/YarnClient.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/YarnClient.java
@@ -46,6 +46,7 @@ import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext;
import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerReport;
import org.apache.hadoop.yarn.api.records.NodeId;
+import org.apache.hadoop.yarn.api.records.NodeLabel;
import org.apache.hadoop.yarn.api.records.NodeReport;
import org.apache.hadoop.yarn.api.records.NodeState;
import org.apache.hadoop.yarn.api.records.QueueInfo;
@@ -663,6 +664,6 @@ public abstract class YarnClient extends AbstractService {
*/
@Public
@Unstable
- public abstract Set<String> getClusterNodeLabels()
+ public abstract List<NodeLabel> getClusterNodeLabels()
throws YarnException, IOException;
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/YarnClientImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/YarnClientImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/YarnClientImpl.java
index 5eda2c8..42dd5cd 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/YarnClientImpl.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/api/impl/YarnClientImpl.java
@@ -86,6 +86,7 @@ import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerLaunchContext;
import org.apache.hadoop.yarn.api.records.ContainerReport;
import org.apache.hadoop.yarn.api.records.NodeId;
+import org.apache.hadoop.yarn.api.records.NodeLabel;
import org.apache.hadoop.yarn.api.records.NodeReport;
import org.apache.hadoop.yarn.api.records.NodeState;
import org.apache.hadoop.yarn.api.records.QueueInfo;
@@ -815,7 +816,7 @@ public class YarnClientImpl extends YarnClient {
}
@Override
- public Set<String> getClusterNodeLabels() throws YarnException, IOException {
+ public List<NodeLabel> getClusterNodeLabels() throws YarnException, IOException {
return rmClient.getClusterNodeLabels(
GetClusterNodeLabelsRequest.newInstance()).getNodeLabels();
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ClusterCLI.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ClusterCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ClusterCLI.java
index 3924803..8765e41 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ClusterCLI.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/ClusterCLI.java
@@ -25,9 +25,7 @@ import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
-import java.util.Set;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.GnuParser;
@@ -38,6 +36,7 @@ import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.util.ToolRunner;
+import org.apache.hadoop.yarn.api.records.NodeLabel;
import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.exceptions.YarnException;
import org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager;
@@ -113,23 +112,16 @@ public class ClusterCLI extends YarnCLI {
return 0;
}
- private List<String> sortStrSet(Set<String> labels) {
- List<String> list = new ArrayList<String>();
- list.addAll(labels);
- Collections.sort(list);
- return list;
- }
-
void printClusterNodeLabels() throws YarnException, IOException {
- Set<String> nodeLabels = null;
+ List<NodeLabel> nodeLabels = null;
if (accessLocal) {
nodeLabels =
- getNodeLabelManagerInstance(getConf()).getClusterNodeLabels();
+ new ArrayList<>(getNodeLabelManagerInstance(getConf()).getClusterNodeLabels());
} else {
- nodeLabels = client.getClusterNodeLabels();
+ nodeLabels = new ArrayList<>(client.getClusterNodeLabels());
}
sysout.println(String.format("Node Labels: %s",
- StringUtils.join(sortStrSet(nodeLabels).iterator(), ",")));
+ StringUtils.join(nodeLabels.iterator(), ",")));
}
@VisibleForTesting
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java
index b2ed730..44abe6e 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/main/java/org/apache/hadoop/yarn/client/cli/RMAdminCLI.java
@@ -40,6 +40,7 @@ import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.util.ToolRunner;
import org.apache.hadoop.yarn.api.records.DecommissionType;
import org.apache.hadoop.yarn.api.records.NodeId;
+import org.apache.hadoop.yarn.api.records.NodeLabel;
import org.apache.hadoop.yarn.client.ClientRMProxy;
import org.apache.hadoop.yarn.client.RMHAServiceTarget;
import org.apache.hadoop.yarn.conf.HAUtil;
@@ -65,6 +66,7 @@ import org.apache.hadoop.yarn.util.ConverterUtils;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
@Private
@Unstable
@@ -80,6 +82,9 @@ public class RMAdminCLI extends HAAdmin {
"No node-to-labels mappings are specified";
private static final String INVALID_TIMEOUT_ERR_MSG =
"Invalid timeout specified : ";
+ private static final String ADD_LABEL_FORMAT_ERR_MSG =
+ "Input format for adding node-labels is not correct, it should be "
+ + "labelName1[(exclusive=true/false)],LabelName2[] ..";
protected final static Map<String, UsageInfo> ADMIN_USAGE =
ImmutableMap.<String, UsageInfo>builder()
@@ -104,7 +109,8 @@ public class RMAdminCLI extends HAAdmin {
.put("-getGroups", new UsageInfo("[username]",
"Get the groups which given user belongs to."))
.put("-addToClusterNodeLabels",
- new UsageInfo("[label1,label2,label3] (label splitted by \",\")",
+ new UsageInfo("[label1(exclusive=true),"
+ + "label2(exclusive=false),label3]",
"add to cluster node labels "))
.put("-removeFromClusterNodeLabels",
new UsageInfo("[label1,label2,label3] (label splitted by \",\")",
@@ -407,7 +413,66 @@ public class RMAdminCLI extends HAAdmin {
return localNodeLabelsManager;
}
- private Set<String> buildNodeLabelsSetFromStr(String args) {
+ private List<NodeLabel> buildNodeLabelsFromStr(String args) {
+ List<NodeLabel> nodeLabels = new ArrayList<>();
+ for (String p : args.split(",")) {
+ if (!p.trim().isEmpty()) {
+ String labelName = p;
+
+ // Try to parse exclusive
+ boolean exclusive = NodeLabel.DEFAULT_NODE_LABEL_EXCLUSIVITY;
+ int leftParenthesisIdx = p.indexOf("(");
+ int rightParenthesisIdx = p.indexOf(")");
+
+ if ((leftParenthesisIdx == -1 && rightParenthesisIdx != -1)
+ || (leftParenthesisIdx != -1 && rightParenthesisIdx == -1)) {
+ // Parenthese not match
+ throw new IllegalArgumentException(ADD_LABEL_FORMAT_ERR_MSG);
+ }
+
+ if (leftParenthesisIdx > 0 && rightParenthesisIdx > 0) {
+ if (leftParenthesisIdx > rightParenthesisIdx) {
+ // Parentese not match
+ throw new IllegalArgumentException(ADD_LABEL_FORMAT_ERR_MSG);
+ }
+
+ String property = p.substring(p.indexOf("(") + 1, p.indexOf(")"));
+ if (property.contains("=")) {
+ String key = property.substring(0, property.indexOf("=")).trim();
+ String value =
+ property
+ .substring(property.indexOf("=") + 1, property.length())
+ .trim();
+
+ // Now we only support one property, which is exclusive, so check if
+ // key = exclusive and value = {true/false}
+ if (key.equals("exclusive")
+ && ImmutableSet.of("true", "false").contains(value)) {
+ exclusive = Boolean.parseBoolean(value);
+ } else {
+ throw new IllegalArgumentException(ADD_LABEL_FORMAT_ERR_MSG);
+ }
+ } else if (!property.trim().isEmpty()) {
+ throw new IllegalArgumentException(ADD_LABEL_FORMAT_ERR_MSG);
+ }
+ }
+
+ // Try to get labelName if there's "(..)"
+ if (labelName.contains("(")) {
+ labelName = labelName.substring(0, labelName.indexOf("(")).trim();
+ }
+
+ nodeLabels.add(NodeLabel.newInstance(labelName, exclusive));
+ }
+ }
+
+ if (nodeLabels.isEmpty()) {
+ throw new IllegalArgumentException(NO_LABEL_ERR_MSG);
+ }
+ return nodeLabels;
+ }
+
+ private Set<String> buildNodeLabelNamesFromStr(String args) {
Set<String> labels = new HashSet<String>();
for (String p : args.split(",")) {
if (!p.trim().isEmpty()) {
@@ -423,7 +488,7 @@ public class RMAdminCLI extends HAAdmin {
private int addToClusterNodeLabels(String args) throws IOException,
YarnException {
- Set<String> labels = buildNodeLabelsSetFromStr(args);
+ List<NodeLabel> labels = buildNodeLabelsFromStr(args);
if (directlyAccessNodeLabelStore) {
getNodeLabelManagerInstance(getConf()).addToCluserNodeLabels(labels);
@@ -439,7 +504,7 @@ public class RMAdminCLI extends HAAdmin {
private int removeFromClusterNodeLabels(String args) throws IOException,
YarnException {
- Set<String> labels = buildNodeLabelsSetFromStr(args);
+ Set<String> labels = buildNodeLabelNamesFromStr(args);
if (directlyAccessNodeLabelStore) {
getNodeLabelManagerInstance(getConf()).removeFromClusterNodeLabels(
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestClusterCLI.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestClusterCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestClusterCLI.java
index f9ccf87..d9c7de9 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestClusterCLI.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestClusterCLI.java
@@ -27,8 +27,10 @@ import static org.mockito.Mockito.when;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
-import java.util.HashSet;
+import java.util.ArrayList;
+import java.util.Arrays;
+import org.apache.hadoop.yarn.api.records.NodeLabel;
import org.apache.hadoop.yarn.client.api.YarnClient;
import org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager;
import org.junit.Before;
@@ -55,7 +57,8 @@ public class TestClusterCLI {
public void testGetClusterNodeLabels() throws Exception {
YarnClient client = mock(YarnClient.class);
when(client.getClusterNodeLabels()).thenReturn(
- ImmutableSet.of("label1", "label2"));
+ Arrays.asList(NodeLabel.newInstance("label1"),
+ NodeLabel.newInstance("label2")));
ClusterCLI cli = new ClusterCLI();
cli.setClient(client);
cli.setSysOutPrintStream(sysOut);
@@ -67,7 +70,7 @@ public class TestClusterCLI {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintWriter pw = new PrintWriter(baos);
- pw.print("Node Labels: label1,label2");
+ pw.print("Node Labels: <label1:exclusivity=true>,<label2:exclusivity=true>");
pw.close();
verify(sysOut).println(baos.toString("UTF-8"));
}
@@ -76,14 +79,16 @@ public class TestClusterCLI {
public void testGetClusterNodeLabelsWithLocalAccess() throws Exception {
YarnClient client = mock(YarnClient.class);
when(client.getClusterNodeLabels()).thenReturn(
- ImmutableSet.of("remote1", "remote2"));
+ Arrays.asList(NodeLabel.newInstance("remote1"),
+ NodeLabel.newInstance("remote2")));
ClusterCLI cli = new ClusterCLI();
cli.setClient(client);
cli.setSysOutPrintStream(sysOut);
cli.setSysErrPrintStream(sysErr);
ClusterCLI.localNodeLabelsManager = mock(CommonNodeLabelsManager.class);
- when(ClusterCLI.localNodeLabelsManager.getClusterNodeLabels())
- .thenReturn(ImmutableSet.of("local1", "local2"));
+ when(ClusterCLI.localNodeLabelsManager.getClusterNodeLabels()).thenReturn(
+ Arrays.asList(NodeLabel.newInstance("local1"),
+ NodeLabel.newInstance("local2")));
int rc =
cli.run(new String[] { ClusterCLI.CMD,
@@ -94,7 +99,7 @@ public class TestClusterCLI {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintWriter pw = new PrintWriter(baos);
// it should return local* instead of remote*
- pw.print("Node Labels: local1,local2");
+ pw.print("Node Labels: <local1:exclusivity=true>,<local2:exclusivity=true>");
pw.close();
verify(sysOut).println(baos.toString("UTF-8"));
}
@@ -102,7 +107,7 @@ public class TestClusterCLI {
@Test
public void testGetEmptyClusterNodeLabels() throws Exception {
YarnClient client = mock(YarnClient.class);
- when(client.getClusterNodeLabels()).thenReturn(new HashSet<String>());
+ when(client.getClusterNodeLabels()).thenReturn(new ArrayList<NodeLabel>());
ClusterCLI cli = new ClusterCLI();
cli.setClient(client);
cli.setSysOutPrintStream(sysOut);
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestRMAdminCLI.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestRMAdminCLI.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestRMAdminCLI.java
index f64a1f0..f8f23f4 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestRMAdminCLI.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-client/src/test/java/org/apache/hadoop/yarn/client/cli/TestRMAdminCLI.java
@@ -454,7 +454,7 @@ public class TestRMAdminCLI {
String[] args =
{ "-addToClusterNodeLabels", "x,y", "-directlyAccessNodeLabelStore" };
assertEquals(0, rmAdminCLI.run(args));
- assertTrue(dummyNodeLabelsManager.getClusterNodeLabels().containsAll(
+ assertTrue(dummyNodeLabelsManager.getClusterNodeLabelNames().containsAll(
ImmutableSet.of("x", "y")));
// reset localNodeLabelsManager
@@ -466,7 +466,7 @@ public class TestRMAdminCLI {
new String[] { "-addToClusterNodeLabels",
"-directlyAccessNodeLabelStore", "x,y" };
assertEquals(0, rmAdminCLI.run(args));
- assertTrue(dummyNodeLabelsManager.getClusterNodeLabels().containsAll(
+ assertTrue(dummyNodeLabelsManager.getClusterNodeLabelNames().containsAll(
ImmutableSet.of("x", "y")));
// local node labels manager will be close after running
@@ -480,7 +480,7 @@ public class TestRMAdminCLI {
assertEquals(0, rmAdminCLI.run(args));
// localNodeLabelsManager shouldn't accessed
- assertTrue(dummyNodeLabelsManager.getClusterNodeLabels().isEmpty());
+ assertTrue(dummyNodeLabelsManager.getClusterNodeLabelNames().isEmpty());
// remote node labels manager accessed
assertTrue(remoteAdminServiceAccessed);
@@ -492,7 +492,7 @@ public class TestRMAdminCLI {
String[] args =
{ "-addToClusterNodeLabels", "x", "-directlyAccessNodeLabelStore" };
assertEquals(0, rmAdminCLI.run(args));
- assertTrue(dummyNodeLabelsManager.getClusterNodeLabels().containsAll(
+ assertTrue(dummyNodeLabelsManager.getClusterNodeLabelNames().containsAll(
ImmutableSet.of("x")));
// no labels, should fail
@@ -518,19 +518,61 @@ public class TestRMAdminCLI {
new String[] { "-addToClusterNodeLabels", ",x,,",
"-directlyAccessNodeLabelStore" };
assertEquals(0, rmAdminCLI.run(args));
- assertTrue(dummyNodeLabelsManager.getClusterNodeLabels().containsAll(
+ assertTrue(dummyNodeLabelsManager.getClusterNodeLabelNames().containsAll(
ImmutableSet.of("x")));
}
@Test
+ public void testAddToClusterNodeLabelsWithExclusivitySetting()
+ throws Exception {
+ // Parenthese not match
+ String[] args = new String[] { "-addToClusterNodeLabels", "x(" };
+ assertTrue(0 != rmAdminCLI.run(args));
+
+ args = new String[] { "-addToClusterNodeLabels", "x)" };
+ assertTrue(0 != rmAdminCLI.run(args));
+
+ // Not expected key=value specifying inner parentese
+ args = new String[] { "-addToClusterNodeLabels", "x(key=value)" };
+ assertTrue(0 != rmAdminCLI.run(args));
+
+ // Not key is expected, but value not
+ args = new String[] { "-addToClusterNodeLabels", "x(exclusive=)" };
+ assertTrue(0 != rmAdminCLI.run(args));
+
+ // key=value both set
+ args =
+ new String[] { "-addToClusterNodeLabels",
+ "w,x(exclusive=true), y(exclusive=false),z()",
+ "-directlyAccessNodeLabelStore" };
+ assertTrue(0 == rmAdminCLI.run(args));
+
+ assertTrue(dummyNodeLabelsManager.isExclusiveNodeLabel("w"));
+ assertTrue(dummyNodeLabelsManager.isExclusiveNodeLabel("x"));
+ assertFalse(dummyNodeLabelsManager.isExclusiveNodeLabel("y"));
+ assertTrue(dummyNodeLabelsManager.isExclusiveNodeLabel("z"));
+
+ // key=value both set, and some spaces need to be handled
+ args =
+ new String[] { "-addToClusterNodeLabels",
+ "a (exclusive= true) , b( exclusive =false),c ",
+ "-directlyAccessNodeLabelStore" };
+ assertTrue(0 == rmAdminCLI.run(args));
+
+ assertTrue(dummyNodeLabelsManager.isExclusiveNodeLabel("a"));
+ assertFalse(dummyNodeLabelsManager.isExclusiveNodeLabel("b"));
+ assertTrue(dummyNodeLabelsManager.isExclusiveNodeLabel("c"));
+ }
+
+ @Test
public void testRemoveFromClusterNodeLabels() throws Exception {
// Successfully remove labels
- dummyNodeLabelsManager.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
+ dummyNodeLabelsManager.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y"));
String[] args =
{ "-removeFromClusterNodeLabels", "x,,y",
"-directlyAccessNodeLabelStore" };
assertEquals(0, rmAdminCLI.run(args));
- assertTrue(dummyNodeLabelsManager.getClusterNodeLabels().isEmpty());
+ assertTrue(dummyNodeLabelsManager.getClusterNodeLabelNames().isEmpty());
// no labels, should fail
args = new String[] { "-removeFromClusterNodeLabels" };
@@ -555,7 +597,7 @@ public class TestRMAdminCLI {
public void testReplaceLabelsOnNode() throws Exception {
// Successfully replace labels
dummyNodeLabelsManager
- .addToCluserNodeLabels(ImmutableSet.of("x", "y", "Y"));
+ .addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y", "Y"));
String[] args =
{ "-replaceLabelsOnNode",
"node1:8000,x node2:8000=y node3,x node4=Y",
@@ -590,7 +632,7 @@ public class TestRMAdminCLI {
@Test
public void testReplaceMultipleLabelsOnSingleNode() throws Exception {
// Successfully replace labels
- dummyNodeLabelsManager.addToCluserNodeLabels(ImmutableSet.of("x", "y"));
+ dummyNodeLabelsManager.addToCluserNodeLabelsWithDefaultExclusivity(ImmutableSet.of("x", "y"));
String[] args =
{ "-replaceLabelsOnNode", "node1,x,y",
"-directlyAccessNodeLabelStore" };
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/GetClusterNodeLabelsResponsePBImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/GetClusterNodeLabelsResponsePBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/GetClusterNodeLabelsResponsePBImpl.java
index 8d8331f..f569fb2 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/GetClusterNodeLabelsResponsePBImpl.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/protocolrecords/impl/pb/GetClusterNodeLabelsResponsePBImpl.java
@@ -18,22 +18,26 @@
package org.apache.hadoop.yarn.api.protocolrecords.impl.pb;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodeLabelsResponse;
+import org.apache.hadoop.yarn.api.records.NodeLabel;
+import org.apache.hadoop.yarn.api.records.impl.pb.NodeLabelPBImpl;
+import org.apache.hadoop.yarn.proto.YarnProtos.NodeLabelProto;
import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetClusterNodeLabelsResponseProto;
import org.apache.hadoop.yarn.proto.YarnServiceProtos.GetClusterNodeLabelsResponseProtoOrBuilder;
public class GetClusterNodeLabelsResponsePBImpl extends
GetClusterNodeLabelsResponse {
- Set<String> labels;
GetClusterNodeLabelsResponseProto proto = GetClusterNodeLabelsResponseProto
.getDefaultInstance();
GetClusterNodeLabelsResponseProto.Builder builder = null;
+ private List<NodeLabel> updatedNodeLabels;
boolean viaProto = false;
public GetClusterNodeLabelsResponsePBImpl() {
- this.builder = GetClusterNodeLabelsResponseProto.newBuilder();
+ builder = GetClusterNodeLabelsResponseProto.newBuilder();
}
public GetClusterNodeLabelsResponsePBImpl(
@@ -42,18 +46,11 @@ public class GetClusterNodeLabelsResponsePBImpl extends
viaProto = true;
}
- private void maybeInitBuilder() {
- if (viaProto || builder == null) {
- builder = GetClusterNodeLabelsResponseProto.newBuilder(proto);
- }
- viaProto = false;
- }
-
- private void mergeLocalToBuilder() {
- if (this.labels != null && !this.labels.isEmpty()) {
- builder.clearNodeLabels();
- builder.addAllNodeLabels(this.labels);
- }
+ public GetClusterNodeLabelsResponseProto getProto() {
+ mergeLocalToProto();
+ proto = viaProto ? proto : builder.build();
+ viaProto = true;
+ return proto;
}
private void mergeLocalToProto() {
@@ -64,35 +61,30 @@ public class GetClusterNodeLabelsResponsePBImpl extends
viaProto = true;
}
- public GetClusterNodeLabelsResponseProto getProto() {
- mergeLocalToProto();
- proto = viaProto ? proto : builder.build();
- viaProto = true;
- return proto;
- }
-
- private void initNodeLabels() {
- if (this.labels != null) {
- return;
+ private void mergeLocalToBuilder() {
+ if (this.updatedNodeLabels != null) {
+ addNodeLabelsToProto();
}
- GetClusterNodeLabelsResponseProtoOrBuilder p = viaProto ? proto : builder;
- this.labels = new HashSet<String>();
- this.labels.addAll(p.getNodeLabelsList());
}
- @Override
- public void setNodeLabels(Set<String> labels) {
+ private void addNodeLabelsToProto() {
maybeInitBuilder();
- if (labels == null || labels.isEmpty()) {
- builder.clearNodeLabels();
+ builder.clearNodeLabels();
+ List<NodeLabelProto> protoList = new ArrayList<NodeLabelProto>();
+ for (NodeLabel r : this.updatedNodeLabels) {
+ protoList.add(convertToProtoFormat(r));
}
- this.labels = labels;
+ builder.addAllNodeLabels(protoList);
}
@Override
- public Set<String> getNodeLabels() {
- initNodeLabels();
- return this.labels;
+ public boolean equals(Object other) {
+ if (other == null)
+ return false;
+ if (other.getClass().isAssignableFrom(this.getClass())) {
+ return this.getProto().equals(this.getClass().cast(other).getProto());
+ }
+ return false;
}
@Override
@@ -100,14 +92,53 @@ public class GetClusterNodeLabelsResponsePBImpl extends
assert false : "hashCode not designed";
return 0;
}
-
+
+ private void maybeInitBuilder() {
+ if (viaProto || builder == null) {
+ builder = GetClusterNodeLabelsResponseProto.newBuilder(proto);
+ }
+ viaProto = false;
+ }
+
@Override
- public boolean equals(Object other) {
- if (other == null)
- return false;
- if (other.getClass().isAssignableFrom(this.getClass())) {
- return this.getProto().equals(this.getClass().cast(other).getProto());
+ public void setNodeLabels(List<NodeLabel> updatedNodeLabels) {
+ maybeInitBuilder();
+ this.updatedNodeLabels = new ArrayList<>();
+ if (updatedNodeLabels == null) {
+ builder.clearNodeLabels();
+ return;
}
- return false;
+ this.updatedNodeLabels.addAll(updatedNodeLabels);
+ }
+
+ private void initLocalNodeLabels() {
+ GetClusterNodeLabelsResponseProtoOrBuilder p = viaProto ? proto : builder;
+ List<NodeLabelProto> attributesProtoList = p.getNodeLabelsList();
+ this.updatedNodeLabels = new ArrayList<NodeLabel>();
+ for (NodeLabelProto r : attributesProtoList) {
+ this.updatedNodeLabels.add(convertFromProtoFormat(r));
+ }
+ }
+
+ @Override
+ public List<NodeLabel> getNodeLabels() {
+ if (this.updatedNodeLabels != null) {
+ return this.updatedNodeLabels;
+ }
+ initLocalNodeLabels();
+ return this.updatedNodeLabels;
+ }
+
+ private NodeLabel convertFromProtoFormat(NodeLabelProto p) {
+ return new NodeLabelPBImpl(p);
+ }
+
+ private NodeLabelProto convertToProtoFormat(NodeLabel t) {
+ return ((NodeLabelPBImpl) t).getProto();
+ }
+
+ @Override
+ public String toString() {
+ return getProto().toString();
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/NodeLabelPBImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/NodeLabelPBImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/NodeLabelPBImpl.java
index 661359e..1283f36 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/NodeLabelPBImpl.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/records/impl/pb/NodeLabelPBImpl.java
@@ -73,32 +73,32 @@ public class NodeLabelPBImpl extends NodeLabel {
}
@Override
- public String getNodeLabel() {
+ public String getName() {
NodeLabelProtoOrBuilder p = viaProto ? proto : builder;
- if (!p.hasNodeLabel()) {
+ if (!p.hasName()) {
return null;
}
- return (p.getNodeLabel());
+ return (p.getName());
}
@Override
- public void setNodeLabel(String nodeLabel) {
+ public void setName(String name) {
maybeInitBuilder();
- if (nodeLabel == null) {
- builder.clearNodeLabel();
+ if (name == null) {
+ builder.clearName();
return;
}
- builder.setNodeLabel(nodeLabel);
+ builder.setName(name);
}
@Override
- public boolean getIsExclusive() {
+ public boolean isExclusive() {
NodeLabelProtoOrBuilder p = viaProto ? proto : builder;
return p.getIsExclusive();
}
@Override
- public void setIsExclusive(boolean isExclusive) {
+ public void setExclusivity(boolean isExclusive) {
maybeInitBuilder();
builder.setIsExclusive(isExclusive);
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/CommonNodeLabelsManager.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/CommonNodeLabelsManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/CommonNodeLabelsManager.java
index fe38164..7493169 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/CommonNodeLabelsManager.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/CommonNodeLabelsManager.java
@@ -19,6 +19,7 @@
package org.apache.hadoop.yarn.nodelabels;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumSet;
@@ -47,13 +48,11 @@ import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.event.AsyncDispatcher;
import org.apache.hadoop.yarn.event.Dispatcher;
import org.apache.hadoop.yarn.event.EventHandler;
-import org.apache.hadoop.yarn.exceptions.YarnException;
import org.apache.hadoop.yarn.exceptions.YarnRuntimeException;
import org.apache.hadoop.yarn.nodelabels.event.NodeLabelsStoreEvent;
import org.apache.hadoop.yarn.nodelabels.event.NodeLabelsStoreEventType;
import org.apache.hadoop.yarn.nodelabels.event.RemoveClusterNodeLabels;
import org.apache.hadoop.yarn.nodelabels.event.StoreNewClusterNodeLabels;
-import org.apache.hadoop.yarn.nodelabels.event.StoreUpdateNodeLabelsEvent;
import org.apache.hadoop.yarn.nodelabels.event.UpdateNodeToLabelsMappingsEvent;
import org.apache.hadoop.yarn.util.resource.Resources;
@@ -185,13 +184,6 @@ public class CommonNodeLabelsManager extends AbstractService {
store.updateNodeToLabelsMappings(updateNodeToLabelsMappingsEvent
.getNodeToLabels());
break;
- case UPDATE_NODE_LABELS:
- StoreUpdateNodeLabelsEvent
- storeSetNodeLabelsEventEvent =
- (StoreUpdateNodeLabelsEvent) event;
- store.updateNodeLabels(storeSetNodeLabelsEventEvent
- .getUpdatedNodeLabels());
- break;
}
} catch (IOException e) {
LOG.error("Failed to store label modification to storage");
@@ -274,14 +266,9 @@ public class CommonNodeLabelsManager extends AbstractService {
}
}
- /**
- * Add multiple node labels to repository
- *
- * @param labels
- * new node labels added
- */
@SuppressWarnings("unchecked")
- public void addToCluserNodeLabels(Set<String> labels) throws IOException {
+ public void addToCluserNodeLabels(Collection<NodeLabel> labels)
+ throws IOException {
if (!nodeLabelsEnabled) {
LOG.error(NODE_LABELS_NOT_ENABLED_ERR);
throw new IOException(NODE_LABELS_NOT_ENABLED_ERR);
@@ -289,19 +276,19 @@ public class CommonNodeLabelsManager extends AbstractService {
if (null == labels || labels.isEmpty()) {
return;
}
- Set<String> newLabels = new HashSet<String>();
- labels = normalizeLabels(labels);
+ List<NodeLabel> newLabels = new ArrayList<NodeLabel>();
+ normalizeNodeLabels(labels);
// do a check before actual adding them, will throw exception if any of them
// doesn't meet label name requirement
- for (String label : labels) {
- checkAndThrowLabelName(label);
+ for (NodeLabel label : labels) {
+ checkAndThrowLabelName(label.getName());
}
- for (String label : labels) {
+ for (NodeLabel label : labels) {
// shouldn't overwrite it to avoid changing the Label.resource
- if (this.labelCollections.get(label) == null) {
- this.labelCollections.put(label, new RMNodeLabel(label));
+ if (this.labelCollections.get(label.getName()) == null) {
+ this.labelCollections.put(label.getName(), new RMNodeLabel(label));
newLabels.add(label);
}
}
@@ -312,6 +299,22 @@ public class CommonNodeLabelsManager extends AbstractService {
LOG.info("Add labels: [" + StringUtils.join(labels.iterator(), ",") + "]");
}
+
+ /**
+ * Add multiple node labels to repository
+ *
+ * @param labels
+ * new node labels added
+ */
+ @VisibleForTesting
+ public void addToCluserNodeLabelsWithDefaultExclusivity(Set<String> labels)
+ throws IOException {
+ Set<NodeLabel> nodeLabels = new HashSet<NodeLabel>();
+ for (String label : labels) {
+ nodeLabels.add(NodeLabel.newInstance(label));
+ }
+ addToCluserNodeLabels(nodeLabels);
+ }
protected void checkAddLabelsToNode(
Map<NodeId, Set<String>> addedLabelsToNode) throws IOException {
@@ -780,7 +783,7 @@ public class CommonNodeLabelsManager extends AbstractService {
*
* @return existing valid labels in repository
*/
- public Set<String> getClusterNodeLabels() {
+ public Set<String> getClusterNodeLabelNames() {
try {
readLock.lock();
Set<String> labels = new HashSet<String>(labelCollections.keySet());
@@ -791,39 +794,17 @@ public class CommonNodeLabelsManager extends AbstractService {
}
}
- private void checkUpdateNodeLabels(
- List<NodeLabel> updatedNodeLabels) throws YarnException {
- // pre-check
- for (NodeLabel label : updatedNodeLabels) {
- if (!labelCollections.containsKey(label.getNodeLabel())) {
- String message =
- String.format(
- "Trying to update a non-existing node-label=%s",
- label.getNodeLabel());
- LOG.error(message);
- throw new YarnException(message);
- }
- }
- }
-
- @SuppressWarnings("unchecked")
- public void updateNodeLabels(
- List<NodeLabel> updatedNodeLabels) throws YarnException {
+ public List<NodeLabel> getClusterNodeLabels() {
try {
- writeLock.lock();
- checkUpdateNodeLabels(updatedNodeLabels);
-
- for (NodeLabel label : updatedNodeLabels) {
- RMNodeLabel rmLabel = labelCollections.get(label.getNodeLabel());
- rmLabel.setIsExclusive(label.getIsExclusive());
- }
-
- if (null != dispatcher && !updatedNodeLabels.isEmpty()) {
- dispatcher.getEventHandler().handle(
- new StoreUpdateNodeLabelsEvent(updatedNodeLabels));
+ readLock.lock();
+ List<NodeLabel> nodeLabels = new ArrayList<>();
+ for (RMNodeLabel label : labelCollections.values()) {
+ nodeLabels.add(NodeLabel.newInstance(label.getLabelName(),
+ label.getIsExclusive()));
}
+ return nodeLabels;
} finally {
- writeLock.unlock();
+ readLock.unlock();
}
}
@@ -876,6 +857,12 @@ public class CommonNodeLabelsManager extends AbstractService {
return newLabels;
}
+ private void normalizeNodeLabels(Collection<NodeLabel> labels) {
+ for (NodeLabel label : labels) {
+ label.setName(normalizeLabel(label.getName()));
+ }
+ }
+
protected Node getNMInNodeSet(NodeId nodeId) {
return getNMInNodeSet(nodeId, nodeCollections);
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/FileSystemNodeLabelsStore.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/FileSystemNodeLabelsStore.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/FileSystemNodeLabelsStore.java
index 0c7192f..ea185f2 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/FileSystemNodeLabelsStore.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/FileSystemNodeLabelsStore.java
@@ -41,15 +41,12 @@ import org.apache.hadoop.yarn.exceptions.YarnException;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.AddToClusterNodeLabelsRequestProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.RemoveFromClusterNodeLabelsRequestProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.ReplaceLabelsOnNodeRequestProto;
-import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeLabelsRequestProto;
import org.apache.hadoop.yarn.server.api.protocolrecords.AddToClusterNodeLabelsRequest;
import org.apache.hadoop.yarn.server.api.protocolrecords.RemoveFromClusterNodeLabelsRequest;
import org.apache.hadoop.yarn.server.api.protocolrecords.ReplaceLabelsOnNodeRequest;
-import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeLabelsRequest;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.AddToClusterNodeLabelsRequestPBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.RemoveFromClusterNodeLabelsRequestPBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.ReplaceLabelsOnNodeRequestPBImpl;
-import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.UpdateNodeLabelsRequestPBImpl;
import com.google.common.collect.Sets;
@@ -66,7 +63,7 @@ public class FileSystemNodeLabelsStore extends NodeLabelsStore {
protected static final String EDITLOG_FILENAME = "nodelabel.editlog";
protected enum SerializedLogType {
- ADD_LABELS, NODE_TO_LABELS, REMOVE_LABELS, UPDATE_NODE_LABELS
+ ADD_LABELS, NODE_TO_LABELS, REMOVE_LABELS
}
Path fsWorkingPath;
@@ -138,12 +135,12 @@ public class FileSystemNodeLabelsStore extends NodeLabelsStore {
}
@Override
- public void storeNewClusterNodeLabels(Set<String> labels)
+ public void storeNewClusterNodeLabels(List<NodeLabel> labels)
throws IOException {
ensureAppendEditlogFile();
editlogOs.writeInt(SerializedLogType.ADD_LABELS.ordinal());
- ((AddToClusterNodeLabelsRequestPBImpl) AddToClusterNodeLabelsRequest.newInstance(labels)).getProto()
- .writeDelimitedTo(editlogOs);
+ ((AddToClusterNodeLabelsRequestPBImpl) AddToClusterNodeLabelsRequest
+ .newInstance(labels)).getProto().writeDelimitedTo(editlogOs);
ensureCloseEditlogFile();
}
@@ -156,16 +153,6 @@ public class FileSystemNodeLabelsStore extends NodeLabelsStore {
.newHashSet(labels.iterator()))).getProto().writeDelimitedTo(editlogOs);
ensureCloseEditlogFile();
}
-
- @Override
- public void updateNodeLabels(List<NodeLabel> updatedNodeLabels)
- throws IOException {
- ensureAppendEditlogFile();
- editlogOs.writeInt(SerializedLogType.UPDATE_NODE_LABELS.ordinal());
- ((UpdateNodeLabelsRequestPBImpl) UpdateNodeLabelsRequest
- .newInstance(updatedNodeLabels)).getProto().writeDelimitedTo(editlogOs);
- ensureCloseEditlogFile();
- }
@Override
public void recover() throws YarnException, IOException {
@@ -192,7 +179,7 @@ public class FileSystemNodeLabelsStore extends NodeLabelsStore {
}
if (null != is) {
- Set<String> labels =
+ List<NodeLabel> labels =
new AddToClusterNodeLabelsRequestPBImpl(
AddToClusterNodeLabelsRequestProto.parseDelimitedFrom(is)).getNodeLabels();
Map<NodeId, Set<String>> nodeToLabels =
@@ -216,10 +203,11 @@ public class FileSystemNodeLabelsStore extends NodeLabelsStore {
switch (type) {
case ADD_LABELS: {
- Collection<String> labels =
- AddToClusterNodeLabelsRequestProto.parseDelimitedFrom(is)
- .getNodeLabelsList();
- mgr.addToCluserNodeLabels(Sets.newHashSet(labels.iterator()));
+ List<NodeLabel> labels =
+ new AddToClusterNodeLabelsRequestPBImpl(
+ AddToClusterNodeLabelsRequestProto.parseDelimitedFrom(is))
+ .getNodeLabels();
+ mgr.addToCluserNodeLabels(labels);
break;
}
case REMOVE_LABELS: {
@@ -237,14 +225,6 @@ public class FileSystemNodeLabelsStore extends NodeLabelsStore {
mgr.replaceLabelsOnNode(map);
break;
}
- case UPDATE_NODE_LABELS: {
- List<NodeLabel> attributes =
- new UpdateNodeLabelsRequestPBImpl(
- UpdateNodeLabelsRequestProto.parseDelimitedFrom(is))
- .getNodeLabels();
- mgr.updateNodeLabels(attributes);
- break;
- }
}
} catch (EOFException e) {
// EOF hit, break
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/NodeLabelsStore.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/NodeLabelsStore.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/NodeLabelsStore.java
index 6bd90db..47b7370 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/NodeLabelsStore.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/NodeLabelsStore.java
@@ -46,7 +46,7 @@ public abstract class NodeLabelsStore implements Closeable {
/**
* Store new labels
*/
- public abstract void storeNewClusterNodeLabels(Set<String> label)
+ public abstract void storeNewClusterNodeLabels(List<NodeLabel> label)
throws IOException;
/**
@@ -54,13 +54,7 @@ public abstract class NodeLabelsStore implements Closeable {
*/
public abstract void removeClusterNodeLabels(Collection<String> labels)
throws IOException;
-
- /**
- * Update node labels
- */
- public abstract void updateNodeLabels(
- List<NodeLabel> updatedNodeLabels) throws IOException;
-
+
/**
* Recover labels and node to labels mappings from store
*/
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/RMNodeLabel.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/RMNodeLabel.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/RMNodeLabel.java
index 7638e21..1c4fd17 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/RMNodeLabel.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/RMNodeLabel.java
@@ -20,9 +20,12 @@ package org.apache.hadoop.yarn.nodelabels;
import java.util.HashSet;
import java.util.Set;
+
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.yarn.api.records.NodeId;
+import org.apache.hadoop.yarn.api.records.NodeLabel;
import org.apache.hadoop.yarn.api.records.Resource;
+import org.apache.hadoop.yarn.conf.YarnConfiguration;
import org.apache.hadoop.yarn.util.resource.Resources;
public class RMNodeLabel implements Comparable<RMNodeLabel> {
@@ -30,17 +33,25 @@ public class RMNodeLabel implements Comparable<RMNodeLabel> {
private int numActiveNMs;
private String labelName;
private Set<NodeId> nodeIds;
- private boolean exclusive = true;
+ private boolean exclusive;
+
+ public RMNodeLabel(NodeLabel nodeLabel) {
+ this(nodeLabel.getName(), Resource.newInstance(0, 0), 0,
+ nodeLabel.isExclusive());
+ }
public RMNodeLabel(String labelName) {
- this(labelName, Resource.newInstance(0, 0), 0);
+ this(labelName, Resource.newInstance(0, 0), 0,
+ NodeLabel.DEFAULT_NODE_LABEL_EXCLUSIVITY);
}
- protected RMNodeLabel(String labelName, Resource res, int activeNMs) {
+ protected RMNodeLabel(String labelName, Resource res, int activeNMs,
+ boolean exclusive) {
this.labelName = labelName;
this.resource = res;
this.numActiveNMs = activeNMs;
this.nodeIds = new HashSet<NodeId>();
+ this.exclusive = exclusive;
}
public void addNodeId(NodeId node) {
@@ -86,7 +97,7 @@ public class RMNodeLabel implements Comparable<RMNodeLabel> {
}
public RMNodeLabel getCopy() {
- return new RMNodeLabel(labelName, resource, numActiveNMs);
+ return new RMNodeLabel(labelName, resource, numActiveNMs, exclusive);
}
@Override
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/NodeLabelsStoreEventType.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/NodeLabelsStoreEventType.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/NodeLabelsStoreEventType.java
index ce29176..efa2dbe 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/NodeLabelsStoreEventType.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/NodeLabelsStoreEventType.java
@@ -21,6 +21,5 @@ package org.apache.hadoop.yarn.nodelabels.event;
public enum NodeLabelsStoreEventType {
REMOVE_LABELS,
ADD_LABELS,
- STORE_NODE_TO_LABELS,
- UPDATE_NODE_LABELS
+ STORE_NODE_TO_LABELS
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/StoreNewClusterNodeLabels.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/StoreNewClusterNodeLabels.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/StoreNewClusterNodeLabels.java
index b478c6b..c5a7d01 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/StoreNewClusterNodeLabels.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/StoreNewClusterNodeLabels.java
@@ -18,17 +18,19 @@
package org.apache.hadoop.yarn.nodelabels.event;
-import java.util.Set;
+import java.util.List;
+
+import org.apache.hadoop.yarn.api.records.NodeLabel;
public class StoreNewClusterNodeLabels extends NodeLabelsStoreEvent {
- private Set<String> labels;
+ private List<NodeLabel> labels;
- public StoreNewClusterNodeLabels(Set<String> labels) {
+ public StoreNewClusterNodeLabels(List<NodeLabel> labels) {
super(NodeLabelsStoreEventType.ADD_LABELS);
this.labels = labels;
}
- public Set<String> getLabels() {
+ public List<NodeLabel> getLabels() {
return labels;
}
}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/StoreUpdateNodeLabelsEvent.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/StoreUpdateNodeLabelsEvent.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/StoreUpdateNodeLabelsEvent.java
deleted file mode 100644
index 7c05012..0000000
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/nodelabels/event/StoreUpdateNodeLabelsEvent.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * 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.nodelabels.event;
-
-import java.util.List;
-
-import org.apache.hadoop.yarn.api.records.NodeLabel;
-
-public class StoreUpdateNodeLabelsEvent extends NodeLabelsStoreEvent {
- private List<NodeLabel> updatedNodeLabels;
-
- public StoreUpdateNodeLabelsEvent(List<NodeLabel> updateNodeLabels) {
- super(NodeLabelsStoreEventType.UPDATE_NODE_LABELS);
- this.updatedNodeLabels = updateNodeLabels;
- }
-
- public List<NodeLabel> getUpdatedNodeLabels() {
- return updatedNodeLabels;
- }
-}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/impl/pb/client/ResourceManagerAdministrationProtocolPBClientImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/impl/pb/client/ResourceManagerAdministrationProtocolPBClientImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/impl/pb/client/ResourceManagerAdministrationProtocolPBClientImpl.java
index c6adfd8..02bf045 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/impl/pb/client/ResourceManagerAdministrationProtocolPBClientImpl.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/impl/pb/client/ResourceManagerAdministrationProtocolPBClientImpl.java
@@ -41,7 +41,6 @@ import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.Refre
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.RefreshUserToGroupsMappingsRequestProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.RemoveFromClusterNodeLabelsRequestProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.ReplaceLabelsOnNodeRequestProto;
-import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeLabelsRequestProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeResourceRequestProto;
import org.apache.hadoop.yarn.server.api.ResourceManagerAdministrationProtocol;
import org.apache.hadoop.yarn.server.api.ResourceManagerAdministrationProtocolPB;
@@ -65,8 +64,6 @@ import org.apache.hadoop.yarn.server.api.protocolrecords.RemoveFromClusterNodeLa
import org.apache.hadoop.yarn.server.api.protocolrecords.RemoveFromClusterNodeLabelsResponse;
import org.apache.hadoop.yarn.server.api.protocolrecords.ReplaceLabelsOnNodeRequest;
import org.apache.hadoop.yarn.server.api.protocolrecords.ReplaceLabelsOnNodeResponse;
-import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeLabelsRequest;
-import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeLabelsResponse;
import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeResourceRequest;
import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeResourceResponse;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.AddToClusterNodeLabelsRequestPBImpl;
@@ -89,8 +86,6 @@ import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.RemoveFromClust
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.RemoveFromClusterNodeLabelsResponsePBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.ReplaceLabelsOnNodeRequestPBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.ReplaceLabelsOnNodeResponsePBImpl;
-import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.UpdateNodeLabelsRequestPBImpl;
-import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.UpdateNodeLabelsResponsePBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.UpdateNodeResourceRequestPBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.UpdateNodeResourceResponsePBImpl;
@@ -275,20 +270,6 @@ public class ResourceManagerAdministrationProtocolPBClientImpl implements Resour
}
@Override
- public UpdateNodeLabelsResponse updateNodeLabels(
- UpdateNodeLabelsRequest request) throws YarnException, IOException {
- UpdateNodeLabelsRequestProto requestProto =
- ((UpdateNodeLabelsRequestPBImpl) request).getProto();
- try {
- return new UpdateNodeLabelsResponsePBImpl(
- proxy.updateNodeLabels(null, requestProto));
- } catch (ServiceException e) {
- RPCUtil.unwrapAndThrowException(e);
- return null;
- }
- }
-
- @Override
public CheckForDecommissioningNodesResponse checkForDecommissioningNodes(
CheckForDecommissioningNodesRequest checkForDecommissioningNodesRequest)
throws YarnException, IOException {
@@ -303,4 +284,4 @@ public class ResourceManagerAdministrationProtocolPBClientImpl implements Resour
return null;
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/f5fe35e2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/impl/pb/service/ResourceManagerAdministrationProtocolPBServiceImpl.java
----------------------------------------------------------------------
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/impl/pb/service/ResourceManagerAdministrationProtocolPBServiceImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/impl/pb/service/ResourceManagerAdministrationProtocolPBServiceImpl.java
index adeca3c..0989347 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/impl/pb/service/ResourceManagerAdministrationProtocolPBServiceImpl.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/server/api/impl/pb/service/ResourceManagerAdministrationProtocolPBServiceImpl.java
@@ -44,8 +44,6 @@ import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.Remov
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.RemoveFromClusterNodeLabelsResponseProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.ReplaceLabelsOnNodeRequestProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.ReplaceLabelsOnNodeResponseProto;
-import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeLabelsRequestProto;
-import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeLabelsResponseProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeResourceRequestProto;
import org.apache.hadoop.yarn.proto.YarnServerResourceManagerServiceProtos.UpdateNodeResourceResponseProto;
import org.apache.hadoop.yarn.server.api.ResourceManagerAdministrationProtocol;
@@ -61,8 +59,6 @@ import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshSuperUserGroupsC
import org.apache.hadoop.yarn.server.api.protocolrecords.RefreshUserToGroupsMappingsResponse;
import org.apache.hadoop.yarn.server.api.protocolrecords.RemoveFromClusterNodeLabelsResponse;
import org.apache.hadoop.yarn.server.api.protocolrecords.ReplaceLabelsOnNodeResponse;
-import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeLabelsRequest;
-import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeLabelsResponse;
import org.apache.hadoop.yarn.server.api.protocolrecords.UpdateNodeResourceResponse;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.AddToClusterNodeLabelsRequestPBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.AddToClusterNodeLabelsResponsePBImpl;
@@ -84,8 +80,6 @@ import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.RemoveFromClust
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.RemoveFromClusterNodeLabelsResponsePBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.ReplaceLabelsOnNodeRequestPBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.ReplaceLabelsOnNodeResponsePBImpl;
-import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.UpdateNodeLabelsRequestPBImpl;
-import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.UpdateNodeLabelsResponsePBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.UpdateNodeResourceRequestPBImpl;
import org.apache.hadoop.yarn.server.api.protocolrecords.impl.pb.UpdateNodeResourceResponsePBImpl;
@@ -282,23 +276,6 @@ public class ResourceManagerAdministrationProtocolPBServiceImpl implements Resou
}
@Override
- public UpdateNodeLabelsResponseProto updateNodeLabels(
- RpcController controller, UpdateNodeLabelsRequestProto proto)
- throws ServiceException {
- UpdateNodeLabelsRequest request =
- new UpdateNodeLabelsRequestPBImpl(proto);
- try {
- UpdateNodeLabelsResponse response =
- real.updateNodeLabels(request);
- return ((UpdateNodeLabelsResponsePBImpl) response).getProto();
- } catch (YarnException e) {
- throw new ServiceException(e);
- } catch (IOException e) {
- throw new ServiceException(e);
- }
- }
-
- @Override
public CheckForDecommissioningNodesResponseProto checkForDecommissioningNodes(
RpcController controller, CheckForDecommissioningNodesRequestProto proto)
throws ServiceException {