diff --git a/zuul/manager/__init__.py b/zuul/manager/__init__.py index 7287acc5c2..55b6801065 100644 --- a/zuul/manager/__init__.py +++ b/zuul/manager/__init__.py @@ -218,13 +218,17 @@ class PipelineManager(metaclass=ABCMeta): if not isinstance(change, model.Change): return + change_in_pipeline = False for item in self.pipeline.getAllItems(): for dep_change_ref in item.change.commit_needs_changes: + if item.change.equals(change): + change_in_pipeline = True dep_change_key = ChangeKey.fromReference(dep_change_ref) if dep_change_key.isSameChange(change.cache_stat.key): self.updateCommitDependencies(item.change, None, event) - self.updateCommitDependencies(change, None, event) + if change_in_pipeline: + self.updateCommitDependencies(change, None, event) def reportEnqueue(self, item): if not self.pipeline._disabled: diff --git a/zuul/scheduler.py b/zuul/scheduler.py index b52a684847..e2739dc855 100644 --- a/zuul/scheduler.py +++ b/zuul/scheduler.py @@ -1748,15 +1748,16 @@ class Scheduler(threading.Thread): e.change, project.source) return + if event.isPatchsetCreated(): + pipeline.manager.removeOldVersionsOfChange(change, event) + elif event.isChangeAbandoned(): + pipeline.manager.removeAbandonedChange(change, event) + # Let the pipeline update any dependencies that may need # refreshing if this change has updated. if event.isPatchsetCreated() or event.isMessageChanged(): pipeline.manager.refreshDeps(change, event) - if event.isPatchsetCreated(): - pipeline.manager.removeOldVersionsOfChange(change, event) - elif event.isChangeAbandoned(): - pipeline.manager.removeAbandonedChange(change, event) if pipeline.manager.eventMatches(event, change): pipeline.manager.addChange(change, event)