-
Notifications
You must be signed in to change notification settings - Fork 120
Collapse buildrequests regardless of clean(_obj) property #660
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
Currently we only ignore differences in the What you're doing is:
Did I understand correctly? |
|
My original PR for reference - #266 |
|
What this does:
This is different from the mechnism that #266 introduced in that it is able to set the This PR also ignores the buildrequest
Since it checks
Please read the background section in the summary. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I understand this now. A lot of my confusion was that my previous change definitely did do something for some of the builders, but I do now see how this PR expands on that.
Looks fine to me, but since this interacts with the database, Galina should be the approver.
And for them, the inspiration for the new setter method is here - https://github.com/buildbot/buildbot/blob/0aee5e842fcbb8b98e90fce01ea871e675445ce8/master/buildbot/db/builds.py#L320
|
Note that as part of #648, I am trying to encourage to make as many decisions as possible, including whether to do an incremental build, into the build script. That is, an incremental builder can be changed to be non-incremental without a master restart, and vice versa. The master itself wouldn't have the information anymore. |
With this PR, the
cleanandclean_objproperties are ignored when considering whether to collapse two buildrequests. The collapsed request will have that property if either of the original requests has.clean, respectivelyclean_obj, not being set never guaranteed pre-populated build guranteed anyway.Background:
cleanproperty is set in the Force Build dialog: "Clean source code and build directory". It is never set by LLVMPoller.clean_objproperty is set in the Force Build dialog: "Clean build directory", or when LLVMPoller adds a buildrequest for a new llvm-project commit that changes a CMake file or contains the string "Require[...]clean build" in the commit message.cleanoption. Instead, those builders enable the cleaning step independent of theclean/clean_objproperties inherited from the buildrequest.Two buildrequests were only collapsed when their properties are equal, including the
clean_objproperty. Since the value of the property changes dependending on whether a CMakeLists.txt file is touched, a typical sequence of buildrequests after collapsing becomesHence, slow builders with
collapseRequestsenabled in practice it still does two builds per CMakeLists.txt change. This may lead to high response latency during times of high commit volume or the slowest builders not being able to keep up at all.