|
@@ -1088,6 +1088,26 @@ public class ParentQueue extends AbstractCSQueue {
|
|
|
childQueue.getQueueCapacities().setAbsoluteMaximumCapacity(label,
|
|
|
(float) childQueue.getQueueCapacities().getMaximumCapacity(label)
|
|
|
/ getQueueCapacities().getAbsoluteMaximumCapacity(label));
|
|
|
+
|
|
|
+ // Re-visit max applications for a queue based on absolute capacity if
|
|
|
+ // needed.
|
|
|
+ if (childQueue instanceof LeafQueue) {
|
|
|
+ LeafQueue leafQueue = (LeafQueue) childQueue;
|
|
|
+ CapacitySchedulerConfiguration conf = csContext.getConfiguration();
|
|
|
+ int maxApplications = (int) (conf.getMaximumSystemApplications()
|
|
|
+ * childQueue.getQueueCapacities().getAbsoluteCapacity(label));
|
|
|
+ leafQueue.setMaxApplications(maxApplications);
|
|
|
+
|
|
|
+ int maxApplicationsPerUser = Math.min(maxApplications,
|
|
|
+ (int) (maxApplications
|
|
|
+ * (leafQueue.getUsersManager().getUserLimit() / 100.0f)
|
|
|
+ * leafQueue.getUsersManager().getUserLimitFactor()));
|
|
|
+ leafQueue.setMaxApplicationsPerUser(maxApplicationsPerUser);
|
|
|
+ LOG.info("LeafQueue:" + leafQueue.getQueueName() + ", maxApplications="
|
|
|
+ + maxApplications + ", maxApplicationsPerUser="
|
|
|
+ + maxApplicationsPerUser + ", Abs Cap:"
|
|
|
+ + childQueue.getQueueCapacities().getAbsoluteCapacity(label));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|