Update merge status after merge:merge is submitted
When preparing a reference, we set the merge state to PENDING before
emitting the merge:merge function. If any exception occurs when
submitting the merge:merge job, the buildset is left PENDING and is
never retried because prepareRef() early exit in such case.
Move the merge_state change after the job has been submitted. An
exception would let the state as is (ie NEW) and thus indicate it should
be retried.
Closes-Bug: #1358517
Change-Id: I4d91a15aaae878ed231d50ab5f4f7a65f0d0e830
diff --git a/zuul/scheduler.py b/zuul/scheduler.py
index e1aa0c2..28b42d3 100644
--- a/zuul/scheduler.py
+++ b/zuul/scheduler.py
@@ -1441,7 +1441,6 @@
return True
if build_set.merge_state == build_set.PENDING:
return False
- build_set.merge_state = build_set.PENDING
ref = build_set.ref
if hasattr(item.change, 'refspec') and not ref:
self.log.debug("Preparing ref for: %s" % item.change)
@@ -1459,6 +1458,8 @@
self.sched.merger.updateRepo(item.change.project.name,
url, build_set,
self.pipeline.precedence)
+ # merge:merge has been emitted properly:
+ build_set.merge_state = build_set.PENDING
return False
def _launchJobs(self, item, jobs):