In distributed builds, here's how a build agent get selected: [1] Get the build agent where the project in the project group is currently building
[2] If [1] returns null, check if there's a build agent group attached to the build definition. If none, proceed to [3], otherwise, get the least busy build agent attached to the build agent group. [3] Get the least busy build agent A limitation in distributed builds: all projects in a project group will build on the same build agent because we assumed that they are inter-dependent. What happened with CONTINUUM-2476 was that when the NIGHTLY_BUILD got triggered to run by 11pm, the WINDOWS_BUILD was still running. So when distributed builds go to the process of selecting a build agent, [1] returns the WINDOWS build agent, thus building it in WINDOWS instead of in the LINUX_BUILD. What I propose is to add checks like those in non-distributed build - check if the project is in any prepare build queue - check if the project is in any build queue - check if the project is currently preparing build - check if the project is currently building Thanks, -- Marica
