Merge "Defer setting build pause to event queue"

This commit is contained in:
Zuul 2021-02-27 00:37:11 +00:00 committed by Gerrit Code Review
commit 6098cb066c
2 changed files with 8 additions and 5 deletions

View File

@ -488,11 +488,9 @@ class ExecutorClient(object):
build.worker.updateFromData(data) build.worker.updateFromData(data)
build.__gearman_worker = build.worker.name build.__gearman_worker = build.worker.name
if 'paused' in data and build.paused != data['paused']: if 'paused' in data:
build.paused = data['paused'] result_data = data.get('data', {})
if build.paused: self.sched.onBuildPaused(build, result_data)
result_data = data.get('data', {})
self.sched.onBuildPaused(build, result_data)
if not started: if not started:
self.log.info("Build %s started" % job) self.log.info("Build %s started" % job)

View File

@ -1445,6 +1445,11 @@ class Scheduler(threading.Thread):
def _doBuildPausedEvent(self, event): def _doBuildPausedEvent(self, event):
build = event.build build = event.build
# Setting paused is deferred to event processing stage to avoid a race
# with child job skipping.
build.paused = True
log = get_annotated_logger(self.log, build.zuul_event_id) log = get_annotated_logger(self.log, build.zuul_event_id)
if build.build_set is not build.build_set.item.current_build_set: if build.build_set is not build.build_set.item.current_build_set:
log.warning("Build %s is not in the current build set", build) log.warning("Build %s is not in the current build set", build)