Sorry if I'm just being dense here..
100% is all of parent's capacitY, UNDEFINED is effectively unlimited (infinity i.e. Float.MAX_VALUE).
I don't see how that lines up with previous comments:
Tom: If the leaf queues maximum-capacity is not configured, then it can use 100% of the cluster.
Arun: That isn't true. It just means there is no max-cap for the child and it can use as much capacity as the parent queue gets, which might be capped by the parent/grandparent capacity/max-capacity and so on. This seems like the correct behaviour. Right?
I think it works the way this last exchange describes it. Given the following queue configuration (cap,maxcap):
a.a1 gets 25% of the cluster and nothing more.
I believe it works this way because the resources in the 'a' subtree are exhausted when it's trying to assign containers to that subtree(ParentQueue.assignToQueue).
I actually think it's correct that a leaf queue should not be able to break out of the limits set by its ancestors. However, if this is the case then UNDEFINED is the same as 100%.