Closed Bug 710221 Opened 14 years ago Closed 14 years ago

Implement AggregatingScheduler

Categories

(Release Engineering :: General, defect, P2)

defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: rail, Assigned: rail)

References

Details

Attachments

(1 file, 1 obsolete file)

Attached patch AggregatingScheduler (obsolete) — Splinter Review
AggregatingScheduler should wait for upstream builders and generate a buildset when they are finished successfully. The current implementation is done by catlee. I've removed maxTriggers TODO, and changed SourceStamp() to use revision=genBuildUID() so it doesn't ignores the buildsets with the same branch created before the actual builds are started. We talked about making this scheduler triggerable, but I'm not sure if we need this. This would make the scheduler more harmful during reconfigs and would require additional run time steps to trigger it. bhearsum suggested to switch all Dependant schedulers to use this one, so we can move release schedulers to the scheduler master and release builders across all build masters. The only downside of this is the fact that we can't use a single waterfall to watch release builders (I watch them! :) ).
Attachment #581274 - Flags: review?(catlee)
Attachment #581274 - Flags: review?(bhearsum)
Assignee: nobody → rail
Attachment #581274 - Flags: review?(bhearsum) → review+
* fixed the docstring * removed unique revision parameter interdiff: diff -u b/scheduler.py b/scheduler.py --- b/scheduler.py +++ b/scheduler.py @@ -21,7 +21,6 @@ import util.tuxedo reload(util.tuxedo) from util.tuxedo import get_release_uptake -from buildbotcustom.common import genBuildUID import time @@ -345,9 +344,7 @@ class AggregatingScheduler(BaseScheduler): """This scheduler waits until at least one build of each of `upstreamBuilders` completes with a result in `okResults`. Once this - happens, it triggers builds on `builderNames` with `properties` set. The - sourcestamp for the new builds will be the result of merging all the - sourcestamps from `upstreamBuilders`. + happens, it triggers builds on `builderNames` with `properties` set. `okResults` should be a tuple of acceptable result codes, and defaults to (SUCCESS,WARNINGS).""" @@ -406,12 +403,8 @@ if remainingBuilders: state['remainingBuilders'] = remainingBuilders - self.set_state(t, state) - return - - if not remainingBuilders: - # generate a unique revision so every new buildset generates a build - ss = SourceStamp(branch=self.branch, revision=genBuildUID()) + else: + ss = SourceStamp(branch=self.branch) ssid = db.get_sourcestampid(ss, t) # Start a build! @@ -419,7 +412,8 @@ # Reset the list of builders we're waiting for state['remainingBuilders'] = self.upstreamBuilders - self.set_state(t, state) + + self.set_state(t, state) def makePropertiesScheduler(base_class, propfuncs, *args, **kw):
Attachment #581274 - Attachment is obsolete: true
Attachment #581274 - Flags: review?(catlee)
Attachment #581373 - Flags: review?(catlee)
Attachment #581373 - Flags: review?(catlee) → review+
Status: ASSIGNED → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Is this code suitable for upstreaming?
I reconfig-ed with the landed changes from this bug today.
(In reply to Ben Hearsum [:bhearsum] from comment #3) > Is this code suitable for upstreaming? Let's test it for a couple of months, then sure!
Product: mozilla.org → Release Engineering
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: