From 2e9cfd0ce60b9bc3dcc8ed32ea7d99f095cb6683 Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Fri, 4 Jan 2019 16:08:04 -0800 Subject: [PATCH] DefaultRefFilter: Avoid Repository#getAllRefs Change-Id: I4817ffd75e7d3ec05ced085f10c0d4ef8f8816b2 --- .../gerrit/server/permissions/DefaultRefFilter.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/java/com/google/gerrit/server/permissions/DefaultRefFilter.java b/java/com/google/gerrit/server/permissions/DefaultRefFilter.java index 75652d1c5c..d36cbd68e2 100644 --- a/java/com/google/gerrit/server/permissions/DefaultRefFilter.java +++ b/java/com/google/gerrit/server/permissions/DefaultRefFilter.java @@ -20,6 +20,7 @@ import static com.google.gerrit.reviewdb.client.RefNames.REFS_CHANGES; import static com.google.gerrit.reviewdb.client.RefNames.REFS_CONFIG; import static com.google.gerrit.reviewdb.client.RefNames.REFS_USERS_SELF; import static java.util.Objects.requireNonNull; +import static java.util.stream.Collectors.toMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; @@ -248,7 +249,7 @@ class DefaultRefFilter { repo, opts.filterTagsSeparately() ? filter( - repo.getAllRefs(), + getAllRefsMap(repo), repo, opts.toBuilder().setFilterTagsSeparately(false).build()) .values() @@ -263,6 +264,14 @@ class DefaultRefFilter { return result; } + private static Map getAllRefsMap(Repository repo) throws PermissionBackendException { + try { + return repo.getRefDatabase().getRefs().stream().collect(toMap(Ref::getName, r -> r)); + } catch (IOException e) { + throw new PermissionBackendException(e); + } + } + private Map fastHideRefsMetaConfig(Map refs) throws PermissionBackendException { if (refs.containsKey(REFS_CONFIG) && !canReadRef(REFS_CONFIG)) {