YARN-10226. NPE in Capacity Scheduler while using %primary_group queue mapping. Contributed by Peter Bacsko.

(cherry picked from commit 6fb29d0f17)
This commit is contained in:
Sunil G 2020-04-09 18:51:42 +05:30
parent ef01e9d40e
commit 94df6b513b
2 changed files with 11 additions and 8 deletions

View File

@ -161,17 +161,19 @@ public class UserGroupMappingPlacementRule extends PlacementRule {
String group =
CapacitySchedulerConfiguration.ROOT + "." + getPrimaryGroup(user);
CSQueue parent = queueManager.getQueue(mapping.getParentQueue());
String parent = mapping.getParentQueue();
CSQueue groupQueue = queueManager.getQueue(group);
if (parent instanceof ManagedParentQueue) {
return getPlacementContext(mapping, group);
} else {
CSQueue queue = this.queueManager.getQueue(group);
if ( queue != null) {
return getPlacementContext(mapping, queue.getQueuePath());
if (parent != null) {
CSQueue parentQueue = queueManager.getQueue(parent);
if (parentQueue instanceof ManagedParentQueue) {
return getPlacementContext(mapping, group);
} else {
return null;
return groupQueue == null ? null : getPlacementContext(mapping, group);
}
} else {
return groupQueue == null ? null : getPlacementContext(mapping, group);
}
}

View File

@ -93,6 +93,7 @@ public class TestUserGroupMappingPlacementRule {
when(queueManager.getQueue("bsubgroup2")).thenReturn(bsubgroup2);
when(queueManager.getQueue("asubgroup2")).thenReturn(asubgroup2);
when(queueManager.getQueue("managedParent")).thenReturn(managedParent);
when(queueManager.getQueue(null)).thenThrow(new NullPointerException());
when(queueManager.getQueue("root.agroup")).thenReturn(agroup);
when(queueManager.getQueue("root.bsubgroup2")).thenReturn(bsubgroup2);