Optimise the way that `SubmitRuleEvaluator.evaluate` loads objects
The `ProjectState` retrieval is performed only when needed (previously
it was always performed).
Release-Notes: skip
Change-Id: Ifaf6ead5c869ba705967256ab419ea59f87e1eae
diff --git a/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java b/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java
index eba05fe..c5928f6 100644
--- a/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java
+++ b/java/com/google/gerrit/server/project/SubmitRuleEvaluator.java
@@ -121,15 +121,6 @@
throw new StorageException("Change not found");
}
- ProjectState projectState =
- projectCache
- .get(cd.project())
- .orElseThrow(
- () ->
- new IllegalStateException(
- "Unable to find project while evaluating submit rule",
- new NoSuchProjectException(cd.project())));
-
if (cd.change().isClosed()
&& (!opts.recomputeOnClosedChanges() || OnlineReindexMode.isActive())) {
return cd.notes().getSubmitRecords().stream()
@@ -145,6 +136,15 @@
.collect(toImmutableList());
}
+ ProjectState projectState =
+ projectCache
+ .get(cd.project())
+ .orElseThrow(
+ () ->
+ new IllegalStateException(
+ "Unable to find project while evaluating submit rule",
+ new NoSuchProjectException(cd.project())));
+
// We evaluate all the plugin-defined evaluators,
// and then we collect the results in one list.
return Streams.stream(submitRules)