Merge branch 'stable-3.0' into stable-3.1 * stable-3.0: CommentsIT#postCommentsUnreachableData: Remove unnecessary setApiUser call ChangeDraftUpdate: Remove unused local variable Fix deletion of draft comment refs Upgrade testcontainers to 1.12.4 Change-Id: I4972ec18dc832cb5b782714a42ea847e09066db6
diff --git a/java/com/google/gerrit/server/notedb/ChangeDraftUpdate.java b/java/com/google/gerrit/server/notedb/ChangeDraftUpdate.java index 877022e..b55ce49 100644 --- a/java/com/google/gerrit/server/notedb/ChangeDraftUpdate.java +++ b/java/com/google/gerrit/server/notedb/ChangeDraftUpdate.java
@@ -205,7 +205,6 @@ Map<ObjectId, RevisionNoteBuilder> builders = cache.getBuilders(); boolean touchedAnyRevs = false; - boolean hasComments = false; for (Map.Entry<ObjectId, RevisionNoteBuilder> e : builders.entrySet()) { updatedCommits.add(e.getKey()); ObjectId id = e.getKey(); @@ -216,7 +215,6 @@ if (data.length == 0) { rnm.noteMap.remove(id); } else { - hasComments = true; ObjectId dataBlob = ins.insert(OBJ_BLOB, data); rnm.noteMap.set(id, dataBlob); } @@ -229,10 +227,9 @@ return NO_OP_UPDATE; } - // If we touched every revision and there are no comments left, tell the + // If there are no comments left, tell the // caller to delete the entire ref. - boolean touchedAllRevs = updatedCommits.equals(rnm.revisionNotes.keySet()); - if (touchedAllRevs && !hasComments) { + if (!rnm.noteMap.iterator().hasNext()) { return null; }
diff --git a/javatests/com/google/gerrit/acceptance/server/change/CommentsIT.java b/javatests/com/google/gerrit/acceptance/server/change/CommentsIT.java index d3a0cb4..b1194b1 100644 --- a/javatests/com/google/gerrit/acceptance/server/change/CommentsIT.java +++ b/javatests/com/google/gerrit/acceptance/server/change/CommentsIT.java
@@ -32,6 +32,7 @@ import com.google.gerrit.acceptance.testsuite.request.RequestScopeOperations; import com.google.gerrit.entities.Change; import com.google.gerrit.entities.Patch; +import com.google.gerrit.entities.RefNames; import com.google.gerrit.extensions.api.changes.DeleteCommentInput; import com.google.gerrit.extensions.api.changes.DraftInput; import com.google.gerrit.extensions.api.changes.ReviewInput; @@ -68,6 +69,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.eclipse.jgit.lib.ObjectReader; +import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.notes.NoteMap; import org.eclipse.jgit.revwalk.RevCommit; @@ -314,6 +316,45 @@ } @Test + public void postCommentsUnreachableData() throws Exception { + String file = "file"; + PushOneCommit push = + pushFactory.create(admin.newIdent(), testRepo, "first subject", file, "l1\nl2\n"); + + String dest = "refs/for/master"; + PushOneCommit.Result r1 = push.to(dest); + r1.assertOkStatus(); + String changeId = r1.getChangeId(); + String revId = r1.getCommit().getName(); + + PushOneCommit.Result r2 = amendChange(r1.getChangeId()); + r2.assertOkStatus(); + + String draftRefName = RefNames.refsDraftComments(r1.getChange().getId(), admin.id()); + + DraftInput draft = newDraft(file, Side.REVISION, 1, "comment"); + addDraft(changeId, "1", draft); + ReviewInput reviewInput = new ReviewInput(); + reviewInput.drafts = DraftHandling.PUBLISH; + reviewInput.message = "foo"; + gApi.changes().id(r1.getChangeId()).revision(1).review(reviewInput); + + addDraft(changeId, "2", newDraft(file, Side.REVISION, 2, "comment2")); + reviewInput = new ReviewInput(); + reviewInput.drafts = DraftHandling.PUBLISH_ALL_REVISIONS; + reviewInput.message = "bar"; + gApi.changes().id(r1.getChangeId()).revision(2).review(reviewInput); + + Map<String, List<CommentInfo>> drafts = getDraftComments(changeId, revId); + assertThat(drafts.isEmpty()).isTrue(); + + try (Repository repo = repoManager.openRepository(allUsers)) { + Ref ref = repo.exactRef(draftRefName); + assertThat(ref).isNull(); + } + } + + @Test public void listComments() throws Exception { String file = "file"; PushOneCommit push =
diff --git a/tools/nongoogle.bzl b/tools/nongoogle.bzl index 1112c50..eb1372a 100644 --- a/tools/nongoogle.bzl +++ b/tools/nongoogle.bzl
@@ -170,18 +170,18 @@ sha1 = "3e83394258ae2089be7219b971ec21a8288528ad", ) - TESTCONTAINERS_VERSION = "1.12.3" + TESTCONTAINERS_VERSION = "1.12.4" maven_jar( name = "testcontainers", artifact = "org.testcontainers:testcontainers:" + TESTCONTAINERS_VERSION, - sha1 = "e424a4549640e120acceac641ac909fcda58bf62", + sha1 = "456b6facac12c4b67130d9056a43c011679e9f0c", ) maven_jar( name = "testcontainers-elasticsearch", artifact = "org.testcontainers:elasticsearch:" + TESTCONTAINERS_VERSION, - sha1 = "c0796de5032070b8768ce78c78949b48f13c30db", + sha1 = "9e210c277a35a95a76d03a79e2812575bd07391c", ) maven_jar(