[Buildbot-devel] Accumulating Scheduler

Chris Leishman chris at leishman.org
Mon Nov 28 02:28:28 UTC 2005


Hi all,

I'm trying to implement my own Scheduler (derived from
buildbot.scheduler.Scheduler), that manages only a single builder and
continues to accumulate changes after the treeStableTimer has expired
while the builder is still busy.

I have a build system that has:

a) long build times (20min or so)
b) multiple builders for different projects
c) locks between the builds (so only one build can run at a time for
   resource reasons).

The problem I'm having is that there can be quite a long window of time
that a build gets deferred for (because there are no available slaves),
and in that time people continue to commit at greater intervals than
treeStableTimer.  Thus I can end up with very long queues of pending
builds.

What I'd like to do, is continue to accumulate changes whilst the
builder attached to my custom scheduler is busy, and then only create
and submit the build set when it's idle.

I've written the first bit of the class, but I'm trying to figure out
how to:

a) check whether a builder is busy or not (given it's name)
b) wait until it is finished and idle again, preferably by getting
   a defered object and registering for callback (rather than polling).

Any suggestions on where I go looking for the methods/attributes I need
for these?  Can I use self.parent.botmaster.builders.get(name) to get
the builder, and then look at the buildable and building attributes to
see if there's anything going on?  And then how do I delay until they're
done?

cheers,
chris




More information about the devel mailing list