Merge "Update change deps on refresh after cache miss"
This commit is contained in:
commit
467af580cd
|
@ -211,8 +211,7 @@ class TestScaleOutScheduler(ZuulTestCase):
|
|||
self.executor_server.hold_jobs_in_build = True
|
||||
|
||||
A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
|
||||
A.addApproval('Code-Review', 2)
|
||||
self.fake_gerrit.addEvent(A.addApproval('Approved', 1))
|
||||
self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
|
||||
self.waitUntilSettled()
|
||||
|
||||
# Delete the change cache
|
||||
|
@ -220,6 +219,12 @@ class TestScaleOutScheduler(ZuulTestCase):
|
|||
if hasattr(connection, '_change_cache'):
|
||||
connection.maintainCache([], max_age=0)
|
||||
|
||||
B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
|
||||
B.data["commitMessage"] = "{}\n\nDepends-On: {}\n".format(
|
||||
B.subject, A.data["url"]
|
||||
)
|
||||
self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(1))
|
||||
|
||||
# Release
|
||||
self.executor_server.hold_jobs_in_build = False
|
||||
self.executor_server.release()
|
||||
|
@ -229,6 +234,9 @@ class TestScaleOutScheduler(ZuulTestCase):
|
|||
dict(name='project-merge', result='SUCCESS', changes='1,1'),
|
||||
dict(name='project-test1', result='SUCCESS', changes='1,1'),
|
||||
dict(name='project-test2', result='SUCCESS', changes='1,1'),
|
||||
dict(name='project-merge', result='SUCCESS', changes='1,1 2,1'),
|
||||
dict(name='project-test1', result='SUCCESS', changes='1,1 2,1'),
|
||||
dict(name='project-test2', result='SUCCESS', changes='1,1 2,1'),
|
||||
], ordered=False)
|
||||
|
||||
def test_pipeline_summary(self):
|
||||
|
|
|
@ -1662,10 +1662,16 @@ class TenantParser(object):
|
|||
|
||||
tenant.layout = self._parseLayout(
|
||||
tenant, parsed_config, loading_errors, layout_uuid)
|
||||
|
||||
if self.scheduler:
|
||||
tenant.semaphore_handler = SemaphoreHandler(
|
||||
self.zk_client, self.statsd, tenant.name, tenant.layout
|
||||
)
|
||||
# Only call the postConfig hook if we have a scheduler as this will
|
||||
# change data in ZooKeeper. In case we are in a zuul-web context,
|
||||
# we don't want to do that.
|
||||
for pipeline in tenant.layout.pipelines.values():
|
||||
pipeline.manager._postConfig()
|
||||
|
||||
return tenant
|
||||
|
||||
|
@ -2355,16 +2361,7 @@ class TenantParser(object):
|
|||
layout = model.Layout(tenant, layout_uuid)
|
||||
layout.loading_errors = loading_errors
|
||||
self.log.debug("Created layout id %s", layout.uuid)
|
||||
|
||||
self._addLayoutItems(layout, tenant, data)
|
||||
|
||||
# Only call the postConfig hook if we have a scheduler as this will
|
||||
# change data in ZooKeeper. In case we are in a zuul-web context,
|
||||
# we don't want to do that.
|
||||
if self.scheduler:
|
||||
for pipeline in layout.pipelines.values():
|
||||
pipeline.manager._postConfig(layout)
|
||||
|
||||
return layout
|
||||
|
||||
|
||||
|
|
|
@ -91,7 +91,8 @@ class PipelineManager(metaclass=ABCMeta):
|
|||
finally:
|
||||
self.current_context = None
|
||||
|
||||
def _postConfig(self, layout):
|
||||
def _postConfig(self):
|
||||
layout = self.pipeline.tenant.layout
|
||||
# If our layout UUID already matches the UUID in ZK, we don't
|
||||
# need to make any changes in ZK. But we do still need to
|
||||
# update our local object pointers. Note that our local queue
|
||||
|
@ -227,6 +228,8 @@ class PipelineManager(metaclass=ABCMeta):
|
|||
change = source.getChange(key)
|
||||
if change is None:
|
||||
self.log.error("Unable to resolve change from key %s", key)
|
||||
if isinstance(change, model.Change):
|
||||
self.updateCommitDependencies(change, None, event=None)
|
||||
self._change_cache[change.cache_key] = change
|
||||
resolved_changes.append(change)
|
||||
return resolved_changes
|
||||
|
|
Loading…
Reference in New Issue