ReviewerUtil: Keep only AccountLoader.Factory
Instead of instantiating the account loader in the constructor, keep
the factory and instantiate the loader as it's needed. Also keep the
fill options as a member initialized in the constructor rather than
instantiating the same enum set every time.
Change-Id: I50ad806a137623e25d49198538a675645c1dbce4
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/ReviewersUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/ReviewersUtil.java
index 1d83316..d210f5a 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/ReviewersUtil.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/ReviewersUtil.java
@@ -105,7 +105,7 @@
// give the ranking algorithm a good set of candidates it can work with
private static final int CANDIDATE_LIST_MULTIPLIER = 2;
- private final AccountLoader accountLoader;
+ private final AccountLoader.Factory accountLoaderFactory;
private final AccountQueryBuilder accountQueryBuilder;
private final Provider<AccountQueryProcessor> queryProvider;
private final GroupBackend groupBackend;
@@ -113,6 +113,7 @@
private final Provider<CurrentUser> currentUser;
private final ReviewerRecommender reviewerRecommender;
private final Metrics metrics;
+ private final EnumSet<FillOptions> fillOptions;
@Inject
ReviewersUtil(
@@ -124,9 +125,9 @@
Provider<CurrentUser> currentUser,
ReviewerRecommender reviewerRecommender,
Metrics metrics) {
- Set<FillOptions> fillOptions = EnumSet.of(FillOptions.SECONDARY_EMAILS);
- fillOptions.addAll(AccountLoader.DETAILED_OPTIONS);
- this.accountLoader = accountLoaderFactory.create(fillOptions);
+ this.fillOptions = EnumSet.of(FillOptions.SECONDARY_EMAILS);
+ this.fillOptions.addAll(AccountLoader.DETAILED_OPTIONS);
+ this.accountLoaderFactory = accountLoaderFactory;
this.accountQueryBuilder = accountQueryBuilder;
this.queryProvider = queryProvider;
this.currentUser = currentUser;
@@ -222,6 +223,7 @@
private List<SuggestedReviewerInfo> loadAccounts(List<Account.Id> accountIds)
throws OrmException {
try (Timer0.Context ctx = metrics.loadAccountsLatency.start()) {
+ AccountLoader accountLoader = accountLoaderFactory.create(fillOptions);
List<SuggestedReviewerInfo> reviewer =
accountIds.stream()
.map(accountLoader::get)