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.
"""
log = get_annotated_logger(self.log, zuul_event_id)
task = self.update(connection_name, project_name,
zuul_event_id=zuul_event_id)
task.wait()
if not task.success:
msg = "Update of '{}' failed".format(project_name)
log.error(msg)
raise Exception(msg)
def executeJob(self, job):
args = json.loads(job.arguments)

View File

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

View File

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