Currently, the Algorithm assigns a node to a request purely based on if the constraints are met. It is later in the scheduling phase that the Queue capacity and Node capacity are checked. If the request cannot be placed because of unavailable Queue/Node capacity, the request is retried by the Algorithm.
For clusters that are running at high utilization, we can reduce the retries if we perform the Node capacity check in the Algorithm as well. The Queue capacity check and the other user limit checks can still be handled by the scheduler (since queues and other limits are tied to the scheduler, and not scheduler agnostic)