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 eb...@apache.org on 2021/04/23 22:55:43 UTC
[hadoop] branch branch-3.2 updated: YARN-10479. Can't remove all
node labels after add node label without nodemanager port,
broken by YARN-10647. Contributed by D M Murali Krishna Reddy
This is an automated email from the ASF dual-hosted git repository.
ebadger pushed a commit to branch branch-3.2
in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/branch-3.2 by this push:
new 951ce9b YARN-10479. Can't remove all node labels after add node label without nodemanager port, broken by YARN-10647. Contributed by D M Murali Krishna Reddy
951ce9b is described below
commit 951ce9b371aea66df139287d46705ddf613b1eaf
Author: Eric Badger <eb...@verizonmedia.com>
AuthorDate: Fri Apr 23 22:55:25 2021 +0000
YARN-10479. Can't remove all node labels after add node label without
nodemanager port, broken by YARN-10647. Contributed by D M Murali Krishna Reddy
(cherry picked from commit 6857a05d6ac566a60336c0a28951f09ecda39f24)
---
.../hadoop/yarn/nodelabels/CommonNodeLabelsManager.java | 15 ++++++++++++---
.../resourcemanager/nodelabels/RMNodeLabelsManager.java | 2 +-
2 files changed, 13 insertions(+), 4 deletions(-)
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 17a5a4b..73df2e8 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
@@ -94,6 +94,8 @@ public class CommonNodeLabelsManager extends AbstractService {
new ConcurrentHashMap<String, RMNodeLabel>();
protected ConcurrentMap<String, Host> nodeCollections =
new ConcurrentHashMap<String, Host>();
+ private ConcurrentMap<NodeId, Boolean> isNodeLabelFromHost =
+ new ConcurrentHashMap<NodeId, Boolean>();
protected RMNodeLabel noNodeLabel;
@@ -602,6 +604,11 @@ public class CommonNodeLabelsManager extends AbstractService {
addLabelsToNodeInHost(node, newLabels);
}
+ protected boolean isNodeLabelExplicit(NodeId nodeId) {
+ return !isNodeLabelFromHost.containsKey(nodeId) ||
+ isNodeLabelFromHost.get(nodeId);
+ }
+
@SuppressWarnings("unchecked")
protected void internalUpdateLabelsOnNodes(
Map<NodeId, Set<String>> nodeToLabels, NodeLabelUpdateOperation op)
@@ -636,6 +643,7 @@ public class CommonNodeLabelsManager extends AbstractService {
node.labels.addAll(labels);
}
addNodeToLabels(node.nodeId, labels);
+ isNodeLabelFromHost.put(node.nodeId, true);
}
break;
case REPLACE:
@@ -645,10 +653,9 @@ public class CommonNodeLabelsManager extends AbstractService {
host.labels.addAll(labels);
for (Node node : host.nms.values()) {
replaceNodeForLabels(node.nodeId, node.labels, labels);
- if (node.labels != null) {
- replaceLabelsForNode(node.nodeId, node.labels, labels);
- }
+ replaceLabelsForNode(node.nodeId, node.labels, labels);
node.labels = null;
+ isNodeLabelFromHost.put(node.nodeId, true);
}
break;
default:
@@ -668,6 +675,7 @@ public class CommonNodeLabelsManager extends AbstractService {
nm.labels = new HashSet<String>();
}
nm.labels.addAll(labels);
+ isNodeLabelFromHost.put(nm.nodeId, false);
break;
case REPLACE:
oldLabels = getLabelsByNode(nodeId);
@@ -678,6 +686,7 @@ public class CommonNodeLabelsManager extends AbstractService {
}
nm.labels.clear();
nm.labels.addAll(labels);
+ isNodeLabelFromHost.put(nm.nodeId, false);
break;
default:
break;
diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/RMNodeLabelsManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/RMNodeLabelsManager.java
index 507f696..df4f63c 100644
--- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/RMNodeLabelsManager.java
+++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/nodelabels/RMNodeLabelsManager.java
@@ -280,7 +280,7 @@ public class RMNodeLabelsManager extends CommonNodeLabelsManager {
Map<String, Host> before = cloneNodeMap(ImmutableSet.of(nodeId));
Node nm = getNMInNodeSet(nodeId);
if (null != nm) {
- if (null == nm.labels) {
+ if (isNodeLabelExplicit(nm.nodeId)) {
// When node deactivated, remove the nm from node collection if no
// labels explicitly set for this particular nm
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org