maintain() should assign buildable stuff to executors.
This came out of the conversation with Nicolas. When QueueTaskDispatcher vetos the assignment, a buildable item might stay buildable and unexecuted. Ane he found that it doesn't get retried, despite the MaintainTask class that attempts to do so. The issue is that the maintain() method actually doesn't try to assign buildable tasks to executors. That happens inside the pop() method. I think this goes against the original design of the maintain() method, which is a giant synchronized block that moves all the relevant actors from one state to another. So I'm moving this code into the maintain method. In this way, MaintainTask will automatically reattempt to assign buildable items to executors, and scheduleMaintenance() and maintain() will really do the same thing, and it solves the original problem.
Loading
Please register or sign in to comment