Add metric to count the number of code owner suggestions
In particular we are interested in how often resolveAllUsers=true is
set, as we want to understand whether we could remove this option.
Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: I63f4822627a1aa062aa911cdd7d75f67a45f25fa
diff --git a/java/com/google/gerrit/plugins/codeowners/metrics/CodeOwnerMetrics.java b/java/com/google/gerrit/plugins/codeowners/metrics/CodeOwnerMetrics.java
index 4e952be..06664ba 100644
--- a/java/com/google/gerrit/plugins/codeowners/metrics/CodeOwnerMetrics.java
+++ b/java/com/google/gerrit/plugins/codeowners/metrics/CodeOwnerMetrics.java
@@ -61,6 +61,7 @@
public final Counter0 countCodeOwnerConfigCacheReads;
public final Counter1<String> countCodeOwnerSubmitRuleErrors;
public final Counter0 countCodeOwnerSubmitRuleRuns;
+ public final Counter1<Boolean> countCodeOwnerSuggestions;
public final Counter3<String, String, String> countInvalidCodeOwnerConfigFiles;
private final MetricMaker metricMaker;
@@ -168,6 +169,15 @@
this.countCodeOwnerSubmitRuleRuns =
createCounter(
"count_code_owner_submit_rule_runs", "Total number of code owner submit rule runs");
+ this.countCodeOwnerSuggestions =
+ createCounter1(
+ "count_code_owner_suggestions",
+ "Total number of code owner suggestions",
+ Field.ofBoolean("resolve_all_users", (metadataBuilder, resolveAllUsers) -> {})
+ .description(
+ "Whether code ownerships that are assigned to all users are resolved to random"
+ + " users.")
+ .build());
this.countInvalidCodeOwnerConfigFiles =
createCounter3(
"count_invalid_code_owner_config_files",
diff --git a/java/com/google/gerrit/plugins/codeowners/restapi/AbstractGetCodeOwnersForPath.java b/java/com/google/gerrit/plugins/codeowners/restapi/AbstractGetCodeOwnersForPath.java
index 3ad00e8..85db8e3 100644
--- a/java/com/google/gerrit/plugins/codeowners/restapi/AbstractGetCodeOwnersForPath.java
+++ b/java/com/google/gerrit/plugins/codeowners/restapi/AbstractGetCodeOwnersForPath.java
@@ -42,6 +42,7 @@
import com.google.gerrit.plugins.codeowners.backend.CodeOwnerScorings;
import com.google.gerrit.plugins.codeowners.backend.CodeOwnersInternalServerErrorException;
import com.google.gerrit.plugins.codeowners.backend.config.CodeOwnersPluginConfiguration;
+import com.google.gerrit.plugins.codeowners.metrics.CodeOwnerMetrics;
import com.google.gerrit.server.account.AccountControl;
import com.google.gerrit.server.account.AccountDirectory.FillOptions;
import com.google.gerrit.server.account.AccountLoader;
@@ -80,6 +81,7 @@
private final AccountControl.Factory accountControlFactory;
private final PermissionBackend permissionBackend;
private final CheckCodeOwnerCapability checkCodeOwnerCapability;
+ private final CodeOwnerMetrics codeOwnerMetrics;
private final CodeOwnersPluginConfiguration codeOwnersPluginConfiguration;
private final CodeOwnerConfigHierarchy codeOwnerConfigHierarchy;
private final Provider<CodeOwnerResolver> codeOwnerResolver;
@@ -155,6 +157,7 @@
AccountControl.Factory accountControlFactory,
PermissionBackend permissionBackend,
CheckCodeOwnerCapability checkCodeOwnerCapability,
+ CodeOwnerMetrics codeOwnerMetrics,
CodeOwnersPluginConfiguration codeOwnersPluginConfiguration,
CodeOwnerConfigHierarchy codeOwnerConfigHierarchy,
Provider<CodeOwnerResolver> codeOwnerResolver,
@@ -164,6 +167,7 @@
this.accountControlFactory = accountControlFactory;
this.permissionBackend = permissionBackend;
this.checkCodeOwnerCapability = checkCodeOwnerCapability;
+ this.codeOwnerMetrics = codeOwnerMetrics;
this.codeOwnersPluginConfiguration = codeOwnersPluginConfiguration;
this.codeOwnerConfigHierarchy = codeOwnerConfigHierarchy;
this.codeOwnerResolver = codeOwnerResolver;
@@ -185,6 +189,8 @@
seed = getDefaultSeed(rsrc);
}
+ codeOwnerMetrics.countCodeOwnerSuggestions.increment(resolveAllUsers);
+
// The distance that applies to code owners that are defined in the root code owner
// configuration.
int rootDistance = rsrc.getPath().getNameCount();
diff --git a/java/com/google/gerrit/plugins/codeowners/restapi/BUILD b/java/com/google/gerrit/plugins/codeowners/restapi/BUILD
index e938a4c..298b46b 100644
--- a/java/com/google/gerrit/plugins/codeowners/restapi/BUILD
+++ b/java/com/google/gerrit/plugins/codeowners/restapi/BUILD
@@ -9,6 +9,7 @@
"//plugins/code-owners/java/com/google/gerrit/plugins/codeowners/api",
"//plugins/code-owners/java/com/google/gerrit/plugins/codeowners/backend",
"//plugins/code-owners/java/com/google/gerrit/plugins/codeowners/common",
+ "//plugins/code-owners/java/com/google/gerrit/plugins/codeowners/metrics",
"//plugins/code-owners/java/com/google/gerrit/plugins/codeowners/util",
"//plugins/code-owners/java/com/google/gerrit/plugins/codeowners/validation",
"//plugins/code-owners/proto:owners_metadata_java_proto",
diff --git a/java/com/google/gerrit/plugins/codeowners/restapi/GetCodeOwnersForPathInBranch.java b/java/com/google/gerrit/plugins/codeowners/restapi/GetCodeOwnersForPathInBranch.java
index 8a9b85c..446b91e 100644
--- a/java/com/google/gerrit/plugins/codeowners/restapi/GetCodeOwnersForPathInBranch.java
+++ b/java/com/google/gerrit/plugins/codeowners/restapi/GetCodeOwnersForPathInBranch.java
@@ -26,6 +26,7 @@
import com.google.gerrit.plugins.codeowners.backend.CodeOwnerConfigHierarchy;
import com.google.gerrit.plugins.codeowners.backend.CodeOwnerResolver;
import com.google.gerrit.plugins.codeowners.backend.config.CodeOwnersPluginConfiguration;
+import com.google.gerrit.plugins.codeowners.metrics.CodeOwnerMetrics;
import com.google.gerrit.server.account.AccountControl;
import com.google.gerrit.server.account.Accounts;
import com.google.gerrit.server.change.IncludedInResolver;
@@ -75,6 +76,7 @@
AccountControl.Factory accountControlFactory,
PermissionBackend permissionBackend,
CheckCodeOwnerCapability checkCodeOwnerCapability,
+ CodeOwnerMetrics codeOwnerMetrics,
CodeOwnersPluginConfiguration codeOwnersPluginConfiguration,
CodeOwnerConfigHierarchy codeOwnerConfigHierarchy,
Provider<CodeOwnerResolver> codeOwnerResolver,
@@ -86,6 +88,7 @@
accountControlFactory,
permissionBackend,
checkCodeOwnerCapability,
+ codeOwnerMetrics,
codeOwnersPluginConfiguration,
codeOwnerConfigHierarchy,
codeOwnerResolver,
diff --git a/java/com/google/gerrit/plugins/codeowners/restapi/GetCodeOwnersForPathInChange.java b/java/com/google/gerrit/plugins/codeowners/restapi/GetCodeOwnersForPathInChange.java
index 3180fd1..e2aac82 100644
--- a/java/com/google/gerrit/plugins/codeowners/restapi/GetCodeOwnersForPathInChange.java
+++ b/java/com/google/gerrit/plugins/codeowners/restapi/GetCodeOwnersForPathInChange.java
@@ -30,6 +30,7 @@
import com.google.gerrit.plugins.codeowners.backend.CodeOwnerScore;
import com.google.gerrit.plugins.codeowners.backend.CodeOwnerScoring;
import com.google.gerrit.plugins.codeowners.backend.config.CodeOwnersPluginConfiguration;
+import com.google.gerrit.plugins.codeowners.metrics.CodeOwnerMetrics;
import com.google.gerrit.server.account.AccountControl;
import com.google.gerrit.server.account.Accounts;
import com.google.gerrit.server.account.ServiceUserClassifier;
@@ -63,6 +64,7 @@
AccountControl.Factory accountControlFactory,
PermissionBackend permissionBackend,
CheckCodeOwnerCapability checkCodeOwnerCapability,
+ CodeOwnerMetrics codeOwnerMetrics,
CodeOwnersPluginConfiguration codeOwnersPluginConfiguration,
CodeOwnerConfigHierarchy codeOwnerConfigHierarchy,
Provider<CodeOwnerResolver> codeOwnerResolver,
@@ -74,6 +76,7 @@
accountControlFactory,
permissionBackend,
checkCodeOwnerCapability,
+ codeOwnerMetrics,
codeOwnersPluginConfiguration,
codeOwnerConfigHierarchy,
codeOwnerResolver,
diff --git a/resources/Documentation/metrics.md b/resources/Documentation/metrics.md
index 00659f7..d06a9f3 100644
--- a/resources/Documentation/metrics.md
+++ b/resources/Documentation/metrics.md
@@ -69,6 +69,11 @@
The cause of the submit rule error.
* `count_code_owner_submit_rule_runs`:
Total number of code owner submit rule runs.
+* `count_code_owner_suggestions`:
+ Total number of code owner suggestions.
+ * `resolve_all_users`:
+ Whether code ownerships that are assigned to all users are resolved to
+ random users.
* `count_invalid_code_owner_config_files`:
Total number of failed requests caused by an invalid / non-parsable code owner
config file.