From 5989888aa67132043f9474a625d9f6ef4c3c4238 Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Tue, 14 May 2013 17:40:39 -0700 Subject: [PATCH] Move ChangeMessage out of transaction during cherry-pick In the case of CherryPickChange, the ChangeMessage does not belong to the same change, so it cannot be in a transaction against the same root key. This applies to both the new patch set insertion and new change creation code paths. Change-Id: Iae76682a45ec327fef6af25422e459ffd4557e05 --- .../com/google/gerrit/server/change/ChangeInserter.java | 6 +++--- .../com/google/gerrit/server/change/PatchSetInserter.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java index 5c965e22d1..afe3f74c6a 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java @@ -70,13 +70,13 @@ public class ChangeInserter { ChangeUtil.updateTrackingIds(db, change, trackingFooters, commit.getFooterLines()); approvalsUtil.addReviewers(db, labelTypes, change, ps, info, reviewers, Collections. emptySet()); - if (changeMessage != null) { - db.changeMessages().insert(Collections.singleton(changeMessage)); - } db.commit(); } finally { db.rollback(); } + if (changeMessage != null) { + db.changeMessages().insert(Collections.singleton(changeMessage)); + } gitRefUpdated.fire(change.getProject(), ps.getRefName(), ObjectId.zeroId(), commit); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java index 1c25a7cdef..29cadf304f 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java @@ -126,11 +126,11 @@ public class PatchSetInserter { final List footerLines = commit.getFooterLines(); ChangeUtil.updateTrackingIds(db, change, trackingFooters, footerLines); + db.commit(); if (changeMessage != null) { db.changeMessages().insert(Collections.singleton(changeMessage)); } - db.commit(); hooks.doPatchsetCreatedHook(change, patchSet, db); } finally {