summaryrefslogtreecommitdiff
path: root/zuul/driver/gerrit/gerritconnection.py
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2021-09-18 00:37:45 +0000
committerGerrit Code Review <review@openstack.org>2021-09-18 00:37:45 +0000
commita5f74cfe2aa1b2416e634a7e0999d4f91d8d9e42 (patch)
treeea3c787a5d31c0197dd13fd8a8fba8a57f9c5816 /zuul/driver/gerrit/gerritconnection.py
parent010bf70c8bff8caf00cd4734bb2bff70f61ab21e (diff)
parent88f84bc5d59814533bd5896881516941ce54cc57 (diff)
downloadzuul-a5f74cfe2aa1b2416e634a7e0999d4f91d8d9e42.tar.gz
Merge "Reference change dependencies by key"
Diffstat (limited to 'zuul/driver/gerrit/gerritconnection.py')
-rw-r--r--zuul/driver/gerrit/gerritconnection.py27
1 files changed, 18 insertions, 9 deletions
diff --git a/zuul/driver/gerrit/gerritconnection.py b/zuul/driver/gerrit/gerritconnection.py
index 2a9db8af4..d8d90b125 100644
--- a/zuul/driver/gerrit/gerritconnection.py
+++ b/zuul/driver/gerrit/gerritconnection.py
@@ -41,7 +41,7 @@ from zuul.driver.gerrit.gcloudauth import GCloudAuth
from zuul.driver.gerrit.gerritmodel import GerritChange, GerritTriggerEvent
from zuul.driver.git.gitwatcher import GitWatcher
from zuul.lib.logutil import get_annotated_logger
-from zuul.model import Ref, Tag, Branch, Project
+from zuul.model import Ref, Tag, Branch, Project, CacheStat
from zuul.zk.event_queues import ConnectionEventQueue, EventReceiverElection
# HTTP timeout in seconds
@@ -791,6 +791,8 @@ class GerritConnection(BaseConnection):
change = GerritChange(None)
change.number = number
change.patchset = patchset
+ change.cache_stat = CacheStat((change.number, change.patchset),
+ None, None)
self._change_cache.setdefault(change.number, {})
self._change_cache[change.number][change.patchset] = change
try:
@@ -895,8 +897,8 @@ class GerritConnection(BaseConnection):
# already merged. So even if it is "ABANDONED", we should not
# ignore it.
if (not dep.is_merged) and dep not in needs_changes:
- git_needs_changes.append(dep)
- needs_changes.add(dep)
+ git_needs_changes.append(dep.cache_key)
+ needs_changes.add(dep.cache_key)
change.git_needs_changes = git_needs_changes
compat_needs_changes = []
@@ -907,8 +909,8 @@ class GerritConnection(BaseConnection):
dep = self._getChange(dep_num, dep_ps, history=history,
event=event)
if dep.open and dep not in needs_changes:
- compat_needs_changes.append(dep)
- needs_changes.add(dep)
+ compat_needs_changes.append(dep.cache_key)
+ needs_changes.add(dep.cache_key)
change.compat_needs_changes = compat_needs_changes
needed_by_changes = set()
@@ -921,8 +923,8 @@ class GerritConnection(BaseConnection):
event=event)
if (dep.open and dep.is_current_patchset and
dep not in needed_by_changes):
- git_needed_by_changes.append(dep)
- needed_by_changes.add(dep)
+ git_needed_by_changes.append(dep.cache_key)
+ needed_by_changes.add(dep.cache_key)
except Exception:
log.exception("Failed to get git-needed change %s,%s",
dep_num, dep_ps)
@@ -945,13 +947,20 @@ class GerritConnection(BaseConnection):
event=event)
if (dep.open and dep.is_current_patchset
and dep not in needed_by_changes):
- compat_needed_by_changes.append(dep)
- needed_by_changes.add(dep)
+ compat_needed_by_changes.append(dep.cache_key)
+ needed_by_changes.add(dep.cache_key)
except Exception:
log.exception("Failed to get commit-needed change %s,%s",
dep_num, dep_ps)
change.compat_needed_by_changes = compat_needed_by_changes
+ def getChangeByKey(self, key):
+ try:
+ number, patchset = key
+ return self._change_cache[number][patchset]
+ except (KeyError, ValueError):
+ return None
+
def isMerged(self, change, head=None):
self.log.debug("Checking if change %s is merged" % change)
if not change.number: