QueryProcessor: Don't overflow limit
This allows us to use Integer.MAX_VALUE as a sentinel to return as
many results as possible. This actually causes a new bug whereby a
limit of MAX_VALUE will never return true for moreChanges(), but that
should be hard to hit in practice.
Change-Id: I8b2f0e0e7a2740da110505867f51d0f82397351d
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/QueryProcessor.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/QueryProcessor.java
index 96ca226..100d807 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/QueryProcessor.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/QueryProcessor.java
@@ -125,6 +125,9 @@
// Always bump limit by 1, even if this results in exceeding the permitted
// max for this user. The only way to see if there are more changes is to
// ask for one more result from the query.
+ if (limit == Integer.MAX_VALUE) {
+ limit--;
+ }
Predicate<ChangeData> s = queryRewriter.rewrite(q, start, limit + 1);
if (!(s instanceof ChangeDataSource)) {
q = Predicate.and(open(), q);