You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yarn-dev@hadoop.apache.org by "Phil D'Amore (JIRA)" <ji...@apache.org> on 2014/10/22 15:09:33 UTC

[jira] [Created] (YARN-2726) CapacityScheduler should explicitly log when an accessible label has no capacity

Phil D'Amore created YARN-2726:
----------------------------------

             Summary: CapacityScheduler should explicitly log when an accessible label has no capacity
                 Key: YARN-2726
                 URL: https://issues.apache.org/jira/browse/YARN-2726
             Project: Hadoop YARN
          Issue Type: Improvement
          Components: capacityscheduler
            Reporter: Phil D'Amore
            Priority: Minor


Given:

- Node label defined: test-label
- Two queues defined: a, b
- label accessibility and and capacity defined as follows (properties abbreviated for readability):

root.a.accessible-node-labels = test-label
root.a.accessible-node-labels.test-label.capacity = 100

If you restart the RM or do a 'rmadmin -refreshQueues' you will get a stack trace with the following error buried within:

"Illegal capacity of -1.0 for label=test-label in queue=root.b"

This of course occurs because test-label is accessible to b due to inheritance from the root, and -1 is the UNDEFINED value.  To my mind this might not be obvious to the admin, and the error message which results does not help guide someone to the source of the issue.

I propose that this situation be updated so that when the capacity on an accessible label is undefined, it is explicitly called out instead of falling through to the illegal capacity check.  Something like:

{code}
if (capacity == UNDEFINED) {
    throw new IllegalArgumentException("Configuration issue: " + " label=" + label + " is accessible from queue=" + queue + " but has no capacity set.");
}
{code}

I'll leave it to better judgement than mine as to whether I'm throwing the appropriate exception there.  I think this check should be added to both getNodeLabelCapacities and getMaximumNodeLabelCapacities in CapacitySchedulerConfiguration.java.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)