DefaultRefFilter: Avoid Repository#getAllRefs

Change-Id: I4817ffd75e7d3ec05ced085f10c0d4ef8f8816b2
diff --git a/java/com/google/gerrit/server/permissions/DefaultRefFilter.java b/java/com/google/gerrit/server/permissions/DefaultRefFilter.java
index 75652d1..d36cbd6 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_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 @@
                   repo,
                   opts.filterTagsSeparately()
                       ? filter(
-                              repo.getAllRefs(),
+                              getAllRefsMap(repo),
                               repo,
                               opts.toBuilder().setFilterTagsSeparately(false).build())
                           .values()
@@ -263,6 +264,14 @@
     return result;
   }
 
+  private static Map<String, Ref> 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<String, Ref> fastHideRefsMetaConfig(Map<String, Ref> refs)
       throws PermissionBackendException {
     if (refs.containsKey(REFS_CONFIG) && !canReadRef(REFS_CONFIG)) {