Merge "Test for null values in DefaultRefFilter"
diff --git a/java/com/google/gerrit/server/permissions/DefaultRefFilter.java b/java/com/google/gerrit/server/permissions/DefaultRefFilter.java
index 56c22e1..a2a0ef1 100644
--- a/java/com/google/gerrit/server/permissions/DefaultRefFilter.java
+++ b/java/com/google/gerrit/server/permissions/DefaultRefFilter.java
@@ -22,6 +22,7 @@
 import static java.util.stream.Collectors.toMap;
 
 import com.google.common.collect.ImmutableSet;
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.common.Nullable;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.metrics.Counter0;
@@ -62,6 +63,8 @@
 import org.eclipse.jgit.lib.SymbolicRef;
 
 class DefaultRefFilter {
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
   interface Factory {
     DefaultRefFilter create(ProjectControl projectControl);
   }
@@ -311,9 +314,15 @@
 
     Project.NameKey project = projectState.getNameKey();
     try {
-      ChangeData cd =
-          changeCache.getChangeData(
-              project, changeId, repo.exactRef(RefNames.changeMetaRef(changeId)).getObjectId());
+      Ref metaRef = repo.exactRef(RefNames.changeMetaRef(changeId));
+      if (metaRef == null) {
+        logger.atWarning().log(
+            "can't read change meta ref for change %s on project %s", project, changeId);
+        inVisibleChanges.add(changeId);
+        return false;
+      }
+
+      ChangeData cd = changeCache.getChangeData(project, changeId, metaRef.getObjectId());
       ChangeNotes notes = changeNotesFactory.createFromIndexedChange(cd.change());
       try {
         permissionBackendForProject.indexedChange(cd, notes).check(ChangePermission.READ);