Merge "Correctly fail cat/fileschanges when update fails"

This commit is contained in:
Zuul 2020-08-14 00:01:34 +00:00 committed by Gerrit Code Review
commit 4dcff4d79e
3 changed files with 30 additions and 12 deletions

View File

@ -2962,9 +2962,14 @@ class ExecutorServer(BaseMergeServer):
""" """
The executor overrides _update so it can do the update asynchronously. The executor overrides _update so it can do the update asynchronously.
""" """
log = get_annotated_logger(self.log, zuul_event_id)
task = self.update(connection_name, project_name, task = self.update(connection_name, project_name,
zuul_event_id=zuul_event_id) zuul_event_id=zuul_event_id)
task.wait() task.wait()
if not task.success:
msg = "Update of '{}' failed".format(project_name)
log.error(msg)
raise Exception(msg)
def executeJob(self, job): def executeJob(self, job):
args = json.loads(job.arguments) args = json.loads(job.arguments)

View File

@ -765,6 +765,7 @@ class Merger(object):
except Exception: except Exception:
log.exception("Unable to update %s/%s", log.exception("Unable to update %s/%s",
connection_name, project_name) connection_name, project_name)
raise
def checkoutBranch(self, connection_name, project_name, branch, def checkoutBranch(self, connection_name, project_name, branch,
zuul_event_id=None): zuul_event_id=None):

View File

@ -129,12 +129,17 @@ class BaseMergeServer(metaclass=ABCMeta):
self._update(connection_name, project_name) self._update(connection_name, project_name)
lock = self.repo_locks.getRepoLock(connection_name, project_name) lock = self.repo_locks.getRepoLock(connection_name, project_name)
with lock: try:
files = self.merger.getFiles(connection_name, project_name, self._update(connection_name, project_name)
args['branch'], args['files'], with lock:
args.get('dirs')) files = self.merger.getFiles(connection_name, project_name,
result = dict(updated=True, args['branch'], args['files'],
files=files) args.get('dirs'))
except Exception:
result = dict(update=False)
else:
result = dict(updated=True, files=files)
job.sendWorkComplete(json.dumps(result)) job.sendWorkComplete(json.dumps(result))
def merge(self, job): def merge(self, job):
@ -184,12 +189,19 @@ class BaseMergeServer(metaclass=ABCMeta):
zuul_event_id=zuul_event_id) zuul_event_id=zuul_event_id)
lock = self.repo_locks.getRepoLock(connection_name, project_name) lock = self.repo_locks.getRepoLock(connection_name, project_name)
with lock: try:
files = self.merger.getFilesChanges( self._update(connection_name, project_name,
connection_name, project_name, args['branch'], args['tosha'], zuul_event_id=zuul_event_id)
zuul_event_id=zuul_event_id) with lock:
result = dict(updated=True, files = self.merger.getFilesChanges(
files=files) connection_name, project_name,
args['branch'], args['tosha'],
zuul_event_id=zuul_event_id)
except Exception:
result = dict(update=False)
else:
result = dict(updated=True, files=files)
result['zuul_event_id'] = zuul_event_id result['zuul_event_id'] = zuul_event_id
job.sendWorkComplete(json.dumps(result)) job.sendWorkComplete(json.dumps(result))