YARN-9685: NPE when rendering the info table of leaf queue in non-accessible partitions. Contributed by Tao Yang.

This commit is contained in:
Eric E Payne 2019-08-08 12:37:50 +00:00
parent 397a5633af
commit 3b38f2019e
2 changed files with 18 additions and 9 deletions

View File

@ -157,10 +157,12 @@ private void renderQueueCapacityInfo(ResponseInfo ri, String label) {
: resourceUsages.getAmUsed();
ri.
__("Used Capacity:",
appendPercent(resourceUsages.getUsed().toString(),
appendPercent(resourceUsages.getUsed(),
capacities.getUsedCapacity() / 100))
.__("Configured Capacity:",
capacities.getConfiguredMinResource().toString())
capacities.getConfiguredMinResource() == null ?
Resources.none().toString() :
capacities.getConfiguredMinResource().toString())
.__("Configured Max Capacity:",
(capacities.getConfiguredMaxResource() == null
|| capacities.getConfiguredMaxResource().getResource()
@ -168,10 +170,10 @@ private void renderQueueCapacityInfo(ResponseInfo ri, String label) {
? "unlimited"
: capacities.getConfiguredMaxResource().toString())
.__("Effective Capacity:",
appendPercent(capacities.getEffectiveMinResource().toString(),
appendPercent(capacities.getEffectiveMinResource(),
capacities.getCapacity() / 100))
.__("Effective Max Capacity:",
appendPercent(capacities.getEffectiveMaxResource().toString(),
appendPercent(capacities.getEffectiveMaxResource(),
capacities.getMaxCapacity() / 100))
.__("Absolute Used Capacity:",
percent(capacities.getAbsoluteUsedCapacity() / 100))
@ -320,6 +322,8 @@ public void render(Block html) {
boolean isAutoCreatedLeafQueue = info.isLeafQueue() ?
((CapacitySchedulerLeafQueueInfo) info).isAutoCreatedLeafQueue()
: false;
float capPercent = absMaxCap == 0 ? 0 : absCap/absMaxCap;
float usedCapPercent = absMaxCap == 0 ? 0 : absUsedCap/absMaxCap;
String Q_WIDTH = width(absMaxCap * Q_MAX_WIDTH);
LI<UL<Hamlet>> li = ul.
@ -328,9 +332,9 @@ public void render(Block html) {
Q_WIDTH)
: Q_WIDTH).
$title(join("Absolute Capacity:", percent(absCap))).
span().$style(join(Q_GIVEN, ";font-size:1px;", width(absCap/absMaxCap))).
span().$style(join(Q_GIVEN, ";font-size:1px;", width(capPercent))).
__('.').__().
span().$style(join(width(absUsedCap/absMaxCap),
span().$style(join(width(usedCapPercent),
";font-size:1px;left:0%;", absUsedCap > absCap ? Q_OVER : Q_UNDER)).
__('.').__().
span(".q", "Queue: "+info.getQueuePath().substring(5)).__().
@ -658,8 +662,12 @@ public void render(HtmlBlock.Block html) {
return QueuesBlock.class;
}
static String appendPercent(String message, float f) {
return message + " (" + StringUtils.formatPercent(f, 1) + ")";
static String appendPercent(ResourceInfo resourceInfo, float f) {
if (resourceInfo == null) {
return "";
}
return resourceInfo.toString() + " ("
+ StringUtils.formatPercent(f, 1) + ")";
}
static String percent(float f) {

View File

@ -136,7 +136,8 @@ public ResourceInfo getConfiguredMinResource() {
}
public ResourceInfo getConfiguredMaxResource() {
if (configuredMaxResource.getResource().equals(Resources.none())) {
if (configuredMaxResource == null
|| configuredMaxResource.getResource().equals(Resources.none())) {
return null;
}
return configuredMaxResource;