Only validate non-empty queries that do not match all changes
Empty and * queries will just make the reviewer filter apply
in later processing. So they are always valid.
This change is a latency improvement since trying to construct a
query with `*` on servers that have account visibility checking will
cause Gerrit to lookup many accounts (through ChangeQueryBuilder ->
default -> parseAccount -> AccountResolver -> check).
Google-Bug: b/267202984
Change-Id: If9f5e879b05044e23b527d65838da6900a378956
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewers/config/ReviewerFilterCollection.java b/src/main/java/com/googlesource/gerrit/plugins/reviewers/config/ReviewerFilterCollection.java
index 91b49e8..c0babc4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/config/ReviewerFilterCollection.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/config/ReviewerFilterCollection.java
@@ -18,6 +18,7 @@
import static com.googlesource.gerrit.plugins.reviewers.config.ForProject.KEY_REVIEWER;
import static com.googlesource.gerrit.plugins.reviewers.config.ForProject.SECTION_FILTER;
+import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
@@ -89,7 +90,9 @@
* ValidationError to the ValidationError.Sink and returns the error. */
private Optional<String> checkForErrors(String filterQuery) {
try {
- queryValidator.validateQuery(filterQuery);
+ if (!Strings.isNullOrEmpty(filterQuery) && !"*".equals(filterQuery)) {
+ queryValidator.validateQuery(filterQuery);
+ }
} catch (QueryParseException qpe) {
validationErrorSink.ifPresent(ves -> ves.error(ValidationError.create(qpe.getMessage())));
return Optional.of(qpe.getMessage());