Revert "Replace project cache with GerritApi for listing projects" Revert submission 425518 Reason for revert: See Issue 325029893, this metric should go into Gerrit core Reverted changes: /q/submissionid:425518 Change-Id: I8153b52cf2ad975eb002f3b1449a79d882354fd9
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/collectors/NumberOfProjectsCollector.java b/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/collectors/NumberOfProjectsCollector.java index 4e41e1d..27c320b 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/collectors/NumberOfProjectsCollector.java +++ b/src/main/java/com/googlesource/gerrit/plugins/gitrepometrics/collectors/NumberOfProjectsCollector.java
@@ -14,47 +14,21 @@ package com.googlesource.gerrit.plugins.gitrepometrics.collectors; -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.common.flogger.FluentLogger; -import com.google.gerrit.extensions.api.GerritApi; -import com.google.gerrit.extensions.restapi.RestApiException; -import com.google.gerrit.server.util.ManualRequestContext; -import com.google.gerrit.server.util.OneOffRequestContext; +import com.google.gerrit.server.project.ProjectCache; import com.google.inject.Inject; import com.google.inject.Provider; -import com.google.inject.Singleton; -import com.googlesource.gerrit.plugins.gitrepometrics.GitRepoMetricsConfig; -import java.util.concurrent.TimeUnit; -@Singleton public class NumberOfProjectsCollector implements Provider<Long> { public static final String NUM_PROJECTS = "num-projects"; - public static final long MIN_NUM_PROJECTS_GRACE_PERIOD_MS = 1000L; - - private static final FluentLogger logger = FluentLogger.forEnclosingClass(); - private final Supplier<Long> numberOfProjects; + private final ProjectCache projectCache; @Inject - NumberOfProjectsCollector(GerritApi api, OneOffRequestContext ctx, GitRepoMetricsConfig config) { - numberOfProjects = - Suppliers.memoizeWithExpiration( - () -> queryNumberOfProjects(ctx, api), - Math.max(MIN_NUM_PROJECTS_GRACE_PERIOD_MS, config.getGracePeriodMs()), - TimeUnit.MILLISECONDS); - } - - private static long queryNumberOfProjects(OneOffRequestContext ctx, GerritApi api) { - try (ManualRequestContext c = ctx.open()) { - return api.projects().query().get().size(); - } catch (RestApiException e) { - logger.atWarning().withCause(e).log("Unable to query Gerrit projects list"); - throw new IllegalStateException(e); - } + NumberOfProjectsCollector(ProjectCache projectCache) { + this.projectCache = projectCache; } @Override public Long get() { - return numberOfProjects.get(); + return (long) projectCache.all().size(); } }