[Buildbot-devel] Re: merging builds

Brian Warner warner-buildbot at lothar.com
Mon Nov 28 05:47:52 UTC 2005

> So basically your saying that if 3 commits are all spaced out longer
> than treeStableTimer, only two builds will result - as the first change
> starts a build and then the second two are combined (as long as the
> first build doesn't complete first).

Yup, exactly as your timeline describes.

> Strangely this does not seem to be the behaviour I'm seeing.  How about
> when a build is waiting for a lock?

Oh, yeah, Locks could mess this up. Basically the first Build starts.. and is
immediately stalled waiting for the Lock to become available. The Lock
acquisition/release occurs "inside" the Build. Once a given Build starts,
even if it then waits half an hour to acquire a Lock, it is off the Builder's
queue and can no longer be merged with anything.

I can't immediately think of how this could create more than one additional
build to be run. But yeah, it would be nice if there were a clean way to have
Build-wide Locks evaluated "outside" the de-queueing.. this would improve
utilization of buildslaves, and would make the Waterfall display nicer too
(since at the moment you get this long yellow strip at the start of the build
while it waits for a Lock). I couldn't come up with a clean way to do it when
I wrote this stuff originally.

> Will all the commits made during this time be merged? Are changes submitted
> by svn_buildbot.py mergeable?

Yes, and yes. BuildRequests that arrive while a Build is running (regardless
of whether it is waiting for a Lock or actually doing useful work) will be
merged when the buildslave next becomes free. Changes that arrive from
svn_buildbot.py (and hence though a PBChangeSource) are just as mergeable as
any other potential Changes, as long as they are on the same branch. (the
SourceStamps used for "try" builds have patches associated with them and are
not mergeable, likewise if a build is forced with a specific revision [for
which there is no UI yet, but eventually there will be a "buildbot force
--revision=1234" command] then it may not be merged with anything else).

hope that helps,

More information about the devel mailing list