diff options
author | Patrick Hiesel <hiesel@google.com> | 2022-05-11 12:07:33 +0200 |
---|---|---|
committer | Patrick Hiesel <hiesel@google.com> | 2022-05-12 11:45:55 +0000 |
commit | c3c8b313e86edb75cd535c04c0dd2c03576c5a9e (patch) | |
tree | a486c8a6323fc662f9411832a8bc484adef30d7f | |
parent | 4b59f3c317fc3e2bc5997722057ef4a021137da2 (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.java | 6 |
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. |