From f2918e9355cf25012c434a09f834d6f2f83b3083 Mon Sep 17 00:00:00 2001 From: Shawn Pearce Date: Fri, 6 Sep 2013 13:20:58 -0700 Subject: Avoid opening the branch twice during submit Create only one RefUpdate object per pass through the submit loop. For the trivial case of performing only one attempt merge there is no need to initialize the RefUpdate twice. Change-Id: Ib4cb4207ab84d521a6876d90d23c5f8492843326 (cherry picked from commit d9a6178f6b3d8a5cc6f360f6ab45ebf8d8eb6263) Reviewed-by: Ismo Haataja Reviewed-by: Oswald Buddenhagen --- .../src/main/java/com/google/gerrit/server/git/MergeOp.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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 020899243f..70a1b8233d 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 @@ -267,10 +267,12 @@ public class MergeOp { try { openSchema(); openRepository(); - openBranch(); + + RefUpdate branchUpdate = openBranch(); + boolean reopen = false; + final ListMultimap toSubmit = validateChangeList(db.changes().submitted(destBranch).toList()); - final ListMultimap toMergeNextTurn = ArrayListMultimap.create(); final List potentiallyStillSubmittableOnNextRun = @@ -280,10 +282,14 @@ public class MergeOp { final Set submitTypes = new HashSet(toMerge.keySet()); for (final SubmitType submitType : submitTypes) { - final RefUpdate branchUpdate = openBranch(); + if (reopen) { + branchUpdate = openBranch(); + } final SubmitStrategy strategy = createStrategy(submitType); preMerge(strategy, toMerge.get(submitType)); updateBranch(strategy, branchUpdate); + reopen = true; + updateChangeStatus(toSubmit.get(submitType)); updateSubscriptions(toSubmit.get(submitType)); -- cgit v1.2.3