2013-07-19 12:47:29-0700 [-] Shutting down, but these builders have someone waiting for them: [] --- master.py 2013-07-19 12:53:29.542900626 -0700 +++ master_fixed.py 2013-07-19 12:53:22.811653814 -0700 @@ -161,9 +161,19 @@ 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 waiting in self.parent.allSchedulers() + for bname in waiting.builderNames + if getattr(waiting, '_waiters', None) + )) + 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)