Propagate IOException in TagMatcher
This causes a 500 rather than silently omitting a tag from the ref
advertisement.
Change-Id: I868dd65b285a9b5cd8ce37152d89f086e692f605
diff --git a/java/com/google/gerrit/server/git/TagMatcher.java b/java/com/google/gerrit/server/git/TagMatcher.java
index 58b4b8b..f003b6f 100644
--- a/java/com/google/gerrit/server/git/TagMatcher.java
+++ b/java/com/google/gerrit/server/git/TagMatcher.java
@@ -51,13 +51,8 @@
this.updated = updated;
}
- public boolean isReachable(Ref tagRef) {
- try {
- tagRef = db.getRefDatabase().peel(tagRef);
- } catch (IOException e) {
- // Ignore
- }
-
+ public boolean isReachable(Ref tagRef) throws IOException {
+ tagRef = db.getRefDatabase().peel(tagRef);
ObjectId tagObj = tagRef.getPeeledObjectId();
if (tagObj == null) {
tagObj = tagRef.getObjectId();
diff --git a/java/com/google/gerrit/server/permissions/DefaultRefFilter.java b/java/com/google/gerrit/server/permissions/DefaultRefFilter.java
index d36cbd6..662ba37 100644
--- a/java/com/google/gerrit/server/permissions/DefaultRefFilter.java
+++ b/java/com/google/gerrit/server/permissions/DefaultRefFilter.java
@@ -255,8 +255,12 @@
.values()
: result.values());
for (Ref tag : deferredTags) {
- if (tags.isReachable(tag)) {
- result.put(tag.getName(), tag);
+ try {
+ if (tags.isReachable(tag)) {
+ result.put(tag.getName(), tag);
+ }
+ } catch (IOException e) {
+ throw new PermissionBackendException(e);
}
}
}