2013-07-19 12:47:29-0700 [-] Shutting down, but these builders have someone waiting for them: [] --- master.py.orig 2013-07-22 15:53:32.423654578 -0700 +++ master.py 2013-07-22 15:55:23.143645334 -0700 @@ -161,9 +161,21 @@ return sorted(builders, self._sortfunc) def _get_processors(self): - if self.shuttingDown: - return [] - builders = self.builders.values() + if not self.shuttingDown: + builders = self.builders.values() + else: + # Allow builders to run if they have something waiting on them. + # SMELL: this is pretty tightly coupled to the Triggerable scheduler implementation. + builders = list(set( + self.builders[bname] + for builder in self.builders.values() + for currentBuild in builder.building + if getattr(currentBuild.currentStep, 'waitForFinish', None) + for schedname in getattr(currentBuild.currentStep, 'schedulerNames', ()) + for bname in self.parent.scheduler_manager.namedServices[schedname].builderNames + )) + if builders: + log.msg("Shutting down, but these builders have someone waiting for them: %r" % builders) sorter = self.prioritizeBuilders or self._sort_builders try: builders = sorter(self.parent, builders)