If one split cannot be assigned, we fail the entire operation?

This could result in queries never making progress. E.g., let's say you have a batch of 1000 splits, there are 10 nodes available and the max splits per task is set to 5. At most, you can assign 50 splits, so the caller will loop forever trying to assign the entire batch. 

We should make a best effort and assign as much as possible. The caller can then try later with whatever was left unassigned.