Skip to content

Commit 09897bc

Browse files
author
skalva
committed
NPE fix while accessing nodelables
1 parent b406060 commit 09897bc

File tree

1 file changed

+9
-3
lines changed
  • hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity

1 file changed

+9
-3
lines changed

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/QueueNodeLabelsSettings.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,15 @@ private void initializeNodeLabels(CapacitySchedulerConfiguration configuration,
5353
}
5454

5555
private void initializeAccessibleLabels(CapacitySchedulerConfiguration configuration) {
56-
this.accessibleLabels = configuration.getAccessibleNodeLabels(queuePath.getFullPath());
57-
// Inherit labels from parent if not set
58-
if (this.accessibleLabels == null && parent != null) {
56+
Set<String> nodeLabels = configuration.getAccessibleNodeLabels(queuePath.getFullPath());
57+
if (null != nodeLabels) {
58+
// Reading "accessibleLabels" can cause NPE without ReadLock.
59+
// Since getAccessibleNodeLabels() can return null, If someone access
60+
// "accessibleLabels" before assigning it from parent can cause NPE.
61+
// So use local instance and assign it only if not null
62+
this.accessibleLabels = nodeLabels;
63+
} else if (null != parent) {
64+
// Inherit labels from parent if not set
5965
this.accessibleLabels = parent.getAccessibleNodeLabels();
6066
}
6167
}

0 commit comments

Comments
 (0)