Yeah, for simplicity I decided not to recompute it. Technically we could optimize things a bit by jumping straight to the next locality level when we exhaust stuff at one level (for example, if we had some process-local tasks and some that could only be node-local, we should jump to the latter as soon as we're done scheduling the process-local ones). I don't think the number of levels ever needs to increase, since even if nodes fail, tasks will only be added to a subset of the previous levels or the noPrefs list (e.g. a task that had both process- and node-local locations might now only have node). I'll look into this.