I'm working on a culprit-finding plugin. If a build has failed, and it covered multiple changes, the intermediate changes are automatically queued for rebuild.
However, some of the queued builds are often removed from the queue by the "Build queue optimizer":
[2015-09-25 10:59:43,461] INFO - jetbrains.buildServer.SERVER - Build queue optimizer substituted 2 builds in the queue with builds containing more changes
[2015-09-25 10:59:43,461] INFO - tbrains.buildServer.ACTIVITIES - Build removed from queue: 475217, comment: substituted by build with more changes
[2015-09-25 10:59:43,465] INFO - tbrains.buildServer.ACTIVITIES - Build removed from queue: 475216, comment: substituted by build with more changes
Can this be prevented somehow?
I imagine the Build queue optimizer can be fooled by making the queued builds look different to him. How? Currently, they only differ in their change number (BuildCustomizer.setChangesUpTo()). Would it help if they differed in their build parameters for example?
Are the rules of the queue optimization described anywhere?