From b6c4880383cda518131ce9bd24bdb48d7f759588 Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Thu, 2 Jun 2016 13:03:27 -0400 Subject: [PATCH] NoteDbChangeState: Protect against zeroIds for draft SHA-1s. We found a few of these in the wild on gerrit-review. Still not sure how they cropped up, but they're confusing DraftCommentNotes, so filter them out. Change-Id: I922730b2a79802e8fa1908eb186660929a452e69 --- .../com/google/gerrit/server/notedb/NoteDbChangeState.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/NoteDbChangeState.java b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/NoteDbChangeState.java index c08bdd88cf..2f1e0bdc95 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/notedb/NoteDbChangeState.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/notedb/NoteDbChangeState.java @@ -22,6 +22,7 @@ import static com.google.gerrit.reviewdb.client.RefNames.refsDraftComments; import com.google.auto.value.AutoValue; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Optional; +import com.google.common.base.Predicates; import com.google.common.base.Splitter; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; @@ -181,7 +182,8 @@ public class NoteDbChangeState { Map draftIds) { this.changeId = checkNotNull(changeId); this.changeMetaId = checkNotNull(changeMetaId); - this.draftIds = ImmutableMap.copyOf(draftIds); + this.draftIds = ImmutableMap.copyOf(Maps.filterValues( + draftIds, Predicates.not(Predicates.equalTo(ObjectId.zeroId())))); } public boolean isChangeUpToDate(RefCache changeRepoRefs) throws IOException {