summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Pearce <sop@google.com>2013-09-06 13:20:58 -0700
committerOswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>2015-03-03 16:45:54 +0000
commitf2918e9355cf25012c434a09f834d6f2f83b3083 (patch)
tree262658a82ebe1b060a4932d5da5824a8de8154a3
parent49c544fc51f22342fa64c470fa2cdd6c531bae99 (diff)
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 <ismo.haataja@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java12
1 files 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<SubmitType, Change> toSubmit =
validateChangeList(db.changes().submitted(destBranch).toList());
-
final ListMultimap<SubmitType, CodeReviewCommit> toMergeNextTurn =
ArrayListMultimap.create();
final List<CodeReviewCommit> potentiallyStillSubmittableOnNextRun =
@@ -280,10 +282,14 @@ public class MergeOp {
final Set<SubmitType> submitTypes =
new HashSet<Project.SubmitType>(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));