From eb05714f884d0754a7a84156be415d84f78804ec Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Mon, 15 Oct 2012 22:51:50 -0700 Subject: [PATCH] Fail on LOCK_FAILURE during merge even if we plan to retry Not failing the current merge attempt on LOCK_FAILURE means the change state will get updated even though the merge commit failed. This is bad. I suspect this was the original intent of leaving the throw outside the inner switch block in I9a16e969, but of course that was a bug. Id2771bad went too far in fixing this bug. I think this one gets it right. Change-Id: I91c05ed9a2d826a650cb1bed07dec3ba90c0f117 --- .../src/main/java/com/google/gerrit/server/git/MergeOp.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java index 612e3fbb50..c80b3e6674 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java @@ -650,11 +650,15 @@ public class MergeOp { break; case LOCK_FAILURE: + String msg; if (strategy.retryOnLockFailure()) { mergeQueue.recheckAfter(destBranch, random.nextInt(1000), MILLISECONDS); + msg = "will retry"; + } else { + msg = "will not retry"; } - break; + throw new IOException(branchUpdate.getResult().name() + ", " + msg); default: throw new IOException(branchUpdate.getResult().name()); }