summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Hiesel <hiesel@google.com>2022-05-11 12:07:33 +0200
committerPatrick Hiesel <hiesel@google.com>2022-05-12 11:45:55 +0000
commitc3c8b313e86edb75cd535c04c0dd2c03576c5a9e (patch)
treea486c8a6323fc662f9411832a8bc484adef30d7f
parent4b59f3c317fc3e2bc5997722057ef4a021137da2 (diff)
Load change notes eagerly to omit unparsable changes from results
When checking ref visibility, we need to parse change metadata. To preserve existing behavior, we pretend that such change refs are not visible. Release-Notes: skip Change-Id: I65331af8e5e8d66669d6a87f24fc945cafad01f7 (cherry picked from commit 766062542fe670ac514a96fbae129a79d185210f)
-rw-r--r--java/com/google/gerrit/server/permissions/GitVisibleChangeFilter.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/java/com/google/gerrit/server/permissions/GitVisibleChangeFilter.java b/java/com/google/gerrit/server/permissions/GitVisibleChangeFilter.java
index 5a7b3cb2dc..506d292e3a 100644
--- a/java/com/google/gerrit/server/permissions/GitVisibleChangeFilter.java
+++ b/java/com/google/gerrit/server/permissions/GitVisibleChangeFilter.java
@@ -100,7 +100,11 @@ public class GitVisibleChangeFilter {
.map(
id -> {
try {
- return changeDataFactory.create(projectName, id);
+ ChangeData cd = changeDataFactory.create(projectName, id);
+ cd.notes(); // Make sure notes are available. This will trigger loading notes and
+ // throw an exception in case the change is corrupt and can't be loaded. It will
+ // then be omitted from the result.
+ return cd;
} catch (Exception e) {
// We drop changes that we can't load. The repositories contain 'dead' change refs
// and we want to overall operation to continue.