Merge "Discard pipeline trigger events when discarding tenant triggers"
This commit is contained in:
commit
c495a9e12c
2 files changed
+43
-1
No files matched your search
@@ -4190,6 +4190,44 @@ class TestTenantScopedWebApi(BaseTestWeb):
|
||||
dict(name='project-test2', result='SUCCESS', changes='2,1'),
|
||||
], ordered=False)
|
||||
|
||||
def test_state_post_timer(self):
|
||||
self.executor_server.hold_jobs_in_build = False
|
||||
|
||||
authz = {'iss': 'zuul_operator',
|
||||
'aud': 'zuul.example.com',
|
||||
'sub': 'testuser',
|
||||
'zuul': {
|
||||
'admin': ['tenant-one', ],
|
||||
},
|
||||
'exp': int(time.time()) + 3600,
|
||||
'iat': int(time.time())}
|
||||
token = jwt.encode(authz, key='ThisIsABadSecretOnlyUsedForTesting',
|
||||
algorithm='HS256')
|
||||
args = {
|
||||
'trigger_queue_discarding': True,
|
||||
'reason': 'test discarding',
|
||||
}
|
||||
req = self.post_url(
|
||||
'api/tenant/tenant-one/state',
|
||||
headers={'Authorization': 'Bearer %s' % token},
|
||||
json=args)
|
||||
self.assertEqual(200, req.status_code, req.text)
|
||||
|
||||
self.commitConfigUpdate('common-config', 'layouts/timer.yaml')
|
||||
self.scheds.execute(lambda app: app.sched.reconfigure(app.config))
|
||||
self.waitUntilSettled()
|
||||
|
||||
# The pipeline triggers every second, so we should have seen
|
||||
# several by now.
|
||||
time.sleep(5)
|
||||
self.waitUntilSettled()
|
||||
|
||||
self.commitConfigUpdate('common-config',
|
||||
'layouts/no-timer.yaml')
|
||||
self.scheds.execute(lambda app: app.sched.reconfigure(app.config))
|
||||
self.waitUntilSettled()
|
||||
self.assertHistory([])
|
||||
|
||||
@simple_layout('layouts/parameterized-builds.yaml')
|
||||
def test_web_parameterized_build(self):
|
||||
token = self._getToken(['tenant-one'])
|
||||
|
||||
+5
-1
@@ -2715,6 +2715,7 @@ class Scheduler(threading.Thread):
|
||||
].put(event.driver_name, event)
|
||||
|
||||
def process_pipeline_trigger_queue(self, tenant, tenant_lock, manager):
|
||||
tenant_state = self.event_watcher.tenant_state[tenant.name]
|
||||
for event in self.pipeline_trigger_events[tenant.name][
|
||||
manager.pipeline.name]:
|
||||
log = get_annotated_logger(self.log, event.zuul_event_id)
|
||||
@@ -2739,7 +2740,10 @@ class Scheduler(threading.Thread):
|
||||
if isinstance(event, SupercedeEvent):
|
||||
self._doSupercedeEvent(event)
|
||||
else:
|
||||
self._process_trigger_event(tenant, manager, event)
|
||||
if not tenant_state.trigger_queue_discarding:
|
||||
self._process_trigger_event(tenant, manager, event)
|
||||
else:
|
||||
log.debug("Discarding trigger event %s", event)
|
||||
except Exception:
|
||||
log.exception("Failed to process trigger event %s", event)
|
||||
finally:
|
||||
|
||||
Reference in new issue
Block a user