Details
Description
CapacitySchedulerConfiguration#getNonLabeledQueueCapacity handles root in the following way:
if (absoluteResourceConfigured || configuredWeightAsCapacity( configuredCapacity)) { // Return capacity in percentage as 0 for non-root queues and 100 for // root.From AbstractCSQueue, absolute resource will be parsed and // updated. Once nodes are added/removed in cluster, capacity in // percentage will also be re-calculated. return queue.equals("root") ? 100.0f : 0f; }
CapacitySchedulerConfiguration#internalGetLabeledQueueCapacity on the other hand does not take root queue into consideration:
if (absoluteResourceConfigured || configuredWeightAsCapacity( configuredCapacity)) { // Return capacity in percentage as 0 for non-root queues and 100 for // root.From AbstractCSQueue, absolute resource, and weight will be parsed // and updated separately. Once nodes are added/removed in cluster, // capacity is percentage will also be re-calculated. return defaultValue; } float capacity = getFloat(capacityPropertyName, defaultValue);
Due to this, labeled root capacity is 0, which is not set in in AbstractCSQueue#derivedCapacityFromAbsoluteConfigurations, because root is never in Absolute mode.
Attachments
Attachments
Issue Links
- is blocked by
-
YARN-10780 Optimise retrieval of configured node labels in CS queues
- Resolved
- is related to
-
YARN-10823 Expose all node labels for root without explicit configurations
- Resolved