161 |
161 |
return sorted(builders, self._sortfunc) |
162 |
162 |
|
163 |
163 |
def _get_processors(self): |
164 |
|
if self.shuttingDown: |
165 |
|
return [] |
166 |
|
builders = self.builders.values() |
|
164 |
if not self.shuttingDown: |
|
165 |
builders = self.builders.values() |
|
166 |
else: |
|
167 |
# Allow builders to run if they have something waiting on them. |
|
168 |
# SMELL: this is pretty tightly coupled to the Triggerable scheduler implementation. |
|
169 |
builders = list(set( |
|
170 |
self.builders[bname] |
|
171 |
for builder in self.builders.values() |
|
172 |
for currentBuild in builder.building |
|
173 |
if getattr(currentBuild.currentStep, 'waitForFinish', None) |
|
174 |
for schedname in getattr(currentBuild.currentStep, 'schedulerNames', ()) |
|
175 |
for bname in self.parent.scheduler_manager.namedServices[schedname].builderNames |
|
176 |
)) |
|
177 |
if builders: |
|
178 |
log.msg("Shutting down, but these builders have someone waiting for them: %r" % builders) |
167 |
179 |
sorter = self.prioritizeBuilders or self._sort_builders |
168 |
180 |
try: |
169 |
181 |
builders = sorter(self.parent, builders) |