diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java index 3c6fd71a61..2ae09f229f 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectControl.java @@ -16,6 +16,7 @@ package com.google.gerrit.server.project; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import com.google.gerrit.common.Nullable; import com.google.gerrit.common.PageLinks; import com.google.gerrit.common.data.AccessSection; @@ -525,7 +526,8 @@ public class ProjectControl { try { Repository repo = openRepository(); try { - return isMergedIntoVisibleRef(repo, db, rw, commit, repo.getAllRefs()); + return isMergedIntoVisibleRef(repo, db, rw, commit, + repo.getAllRefs().values()); } finally { repo.close(); } @@ -539,10 +541,14 @@ public class ProjectControl { } boolean isMergedIntoVisibleRef(Repository repo, ReviewDb db, RevWalk rw, - RevCommit commit, Map unfilteredRefs) throws IOException { + RevCommit commit, Collection unfilteredRefs) throws IOException { VisibleRefFilter filter = new VisibleRefFilter(tagCache, changeCache, repo, this, db, true); - Map refs = filter.filter(unfilteredRefs, true); + Map m = Maps.newHashMapWithExpectedSize(unfilteredRefs.size()); + for (Ref r : unfilteredRefs) { + m.put(r.getName(), r); + } + Map refs = filter.filter(m, true); return !refs.isEmpty() && IncludedInResolver.includedInOne(repo, rw, commit, refs.values()); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/RefControl.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/RefControl.java index f13b4111df..9848faa251 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/RefControl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/RefControl.java @@ -324,9 +324,9 @@ public class RefControl { try { Repository repo = projectControl.openRepository(); try { - Map refs = - repo.getRefDatabase().getRefs(Constants.R_HEADS); - refs.putAll(repo.getRefDatabase().getRefs(Constants.R_TAGS)); + List refs = new ArrayList<>( + repo.getRefDatabase().getRefs(Constants.R_HEADS).values()); + refs.addAll(repo.getRefDatabase().getRefs(Constants.R_TAGS).values()); return projectControl.isMergedIntoVisibleRef( repo, db, rw, commit, refs); } finally {