Add Preloader statistics to query outputs Change-Id: Ie0ca5a3581c1063b8cbbde8f6d8c64b2f3ffe9fe
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/Preloader.java b/src/main/java/com/googlesource/gerrit/plugins/task/Preloader.java index b240c3b..1de4c76 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/task/Preloader.java +++ b/src/main/java/com/googlesource/gerrit/plugins/task/Preloader.java
@@ -29,9 +29,17 @@ /** Use to pre-load a task definition with values from its preload-task definition. */ public class Preloader { + public static class Statistics { + protected long hits; + protected long misses; + protected long preloaded; + } + protected final TaskConfigFactory taskConfigFactory; protected final Map<TaskExpressionKey, Optional<Task>> optionalTaskByExpression = new HashMap<>(); + protected Statistics statistics; + @Inject public Preloader(TaskConfigFactory taskConfigFactory) { this.taskConfigFactory = taskConfigFactory; @@ -68,9 +76,15 @@ throws ConfigInvalidException, IOException { Optional<Task> task = optionalTaskByExpression.get(expression.key); if (task == null) { + if (statistics != null) { + statistics.misses++; + } task = preloadOptionalTask(expression); optionalTaskByExpression.put(expression.key, task); } + if (statistics != null) { + statistics.hits++; + } return task; } @@ -83,6 +97,9 @@ public Task preload(Task definition) throws ConfigInvalidException, IOException { String expression = definition.preloadTask; if (expression != null) { + if (statistics != null) { + statistics.preloaded++; + } Optional<Task> preloadFrom = getOptionalTask(new TaskExpression(definition.file(), expression)); if (preloadFrom.isPresent()) { @@ -195,4 +212,12 @@ extended.putAll(map); return extended; } + + public void initStatistics() { + statistics = new Statistics(); + } + + public Statistics getStatistics() { + return statistics; + } }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/TaskAttributeFactory.java b/src/main/java/com/googlesource/gerrit/plugins/task/TaskAttributeFactory.java index 0c6a05c..e683034 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/task/TaskAttributeFactory.java +++ b/src/main/java/com/googlesource/gerrit/plugins/task/TaskAttributeFactory.java
@@ -55,6 +55,7 @@ public long numberOfNodes; public long numberOfTaskPluginAttributes; public PredicateCache.Statistics predicateCache; + public Preloader.Statistics preloader; } public static class TaskAttribute { @@ -317,6 +318,7 @@ if (options.includeStatistics) { statistics = new Statistics(); predicateCache.initStatistics(); + definitions.preloader.initStatistics(); } } @@ -326,6 +328,7 @@ statistics.numberOfTaskPluginAttributes = pluginInfosByChange.values().stream().filter(tpa -> tpa != null).count(); statistics.predicateCache = predicateCache.getStatistics(); + statistics.preloader = definitions.preloader.getStatistics(); } return statistics; }