diff options
Diffstat (limited to 'zuul')
-rw-r--r-- | zuul/driver/gerrit/gerritsource.py | 4 | ||||
-rw-r--r-- | zuul/driver/github/githubconnection.py | 8 | ||||
-rw-r--r-- | zuul/driver/github/githubsource.py | 2 | ||||
-rw-r--r-- | zuul/manager/dependent.py | 4 |
4 files changed, 13 insertions, 5 deletions
diff --git a/zuul/driver/gerrit/gerritsource.py b/zuul/driver/gerrit/gerritsource.py index 9a75b3eb0..9e327b93a 100644 --- a/zuul/driver/gerrit/gerritsource.py +++ b/zuul/driver/gerrit/gerritsource.py @@ -70,13 +70,15 @@ class GerritSource(BaseSource): return change def getChangesDependingOn(self, change, projects): + changes = [] + if not change.uris: + return changes queries = set() for uri in change.uris: queries.add('message:%s' % uri) query = '(' + ' OR '.join(queries) + ')' results = self.connection.simpleQuery(query) seen = set() - changes = [] for result in results: for match in find_dependency_headers(result['commitMessage']): found = False diff --git a/zuul/driver/github/githubconnection.py b/zuul/driver/github/githubconnection.py index 1957cc247..a7aefe0cd 100644 --- a/zuul/driver/github/githubconnection.py +++ b/zuul/driver/github/githubconnection.py @@ -646,9 +646,12 @@ class GithubConnection(BaseConnection): return self._github def maintainCache(self, relevant): + remove = set() for key, change in self._change_cache.items(): if change not in relevant: - del self._change_cache[key] + remove.add(key) + for key in remove: + del self._change_cache[key] def getChange(self, event, refresh=False): """Get the change representing an event.""" @@ -661,7 +664,6 @@ class GithubConnection(BaseConnection): change.uris = [ '%s/%s/pull/%s' % (self.server, project, change.number), ] - change.updated_at = self._ghTimestampToDate(event.updated_at) change.source_event = event change.is_current_patchset = (change.pr.get('head').get('sha') == event.patch_number) @@ -789,6 +791,8 @@ class GithubConnection(BaseConnection): change.labels = change.pr.get('labels') # ensure message is at least an empty string change.message = change.pr.get('body') or '' + change.updated_at = self._ghTimestampToDate( + change.pr.get('updated_at')) if history is None: history = [] diff --git a/zuul/driver/github/githubsource.py b/zuul/driver/github/githubsource.py index 9834727d7..33f8f7cae 100644 --- a/zuul/driver/github/githubsource.py +++ b/zuul/driver/github/githubsource.py @@ -46,6 +46,8 @@ class GithubSource(BaseSource): if not change.number: # Not a pull request, considering merged. return True + # We don't need to perform another query because the API call + # to perform the merge will ensure this is updated. return change.is_merged def canMerge(self, change, allow_needs): diff --git a/zuul/manager/dependent.py b/zuul/manager/dependent.py index 23c2cdb75..20b376d6a 100644 --- a/zuul/manager/dependent.py +++ b/zuul/manager/dependent.py @@ -166,7 +166,6 @@ class DependentPipelineManager(PipelineManager): # Return true if okay to proceed enqueing this change, # false if the change should not be enqueued. self.log.debug("Checking for changes needed by %s:" % change) - source = change.project.source if (hasattr(change, 'commit_needs_changes') and (change.refresh_deps or change.commit_needs_changes is None)): self.updateCommitDependencies(change, change_queue) @@ -201,7 +200,8 @@ class DependentPipelineManager(PipelineManager): self.log.debug(" Needed change is already ahead " "in the queue") continue - if source.canMerge(needed_change, self.getSubmitAllowNeeds()): + if needed_change.project.source.canMerge( + needed_change, self.getSubmitAllowNeeds()): self.log.debug(" Change %s is needed" % needed_change) if needed_change not in changes_needed: changes_needed.append(needed_change) |