Add metric to count submit rule errors
Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: I0746546c87f4ef55887c238e0c86f6eb8b72117e
diff --git a/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerSubmitRule.java b/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerSubmitRule.java
index 780e352..c35d1b0 100644
--- a/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerSubmitRule.java
+++ b/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerSubmitRule.java
@@ -100,6 +100,7 @@
changeData.currentPatchSet().id().get(), changeData.change().getId().get()));
return Optional.of(notReady());
} catch (Throwable t) {
+ String cause = t.getClass().getSimpleName();
String errorMessage = "Failed to evaluate code owner statuses";
if (changeData != null) {
errorMessage +=
@@ -112,6 +113,7 @@
Optional<InvalidCodeOwnerConfigException> invalidCodeOwnerConfigException =
CodeOwners.getInvalidCodeOwnerConfigCause(t);
if (invalidPathException.isPresent()) {
+ cause = "invalid_path";
errorMessage += String.format(" (cause: %s)", invalidPathException.get().getMessage());
} else if (invalidCodeOwnerConfigException.isPresent()) {
codeOwnerMetrics.countInvalidCodeOwnerConfigFiles.increment(
@@ -119,6 +121,7 @@
invalidCodeOwnerConfigException.get().getRef(),
invalidCodeOwnerConfigException.get().getCodeOwnerConfigFilePath());
+ cause = "invalid_code_owner_config_file";
errorMessage +=
String.format(" (cause: %s)", invalidCodeOwnerConfigException.get().getMessage());
@@ -133,6 +136,7 @@
}
errorMessage += ".";
logger.atSevere().withCause(t).log(errorMessage);
+ codeOwnerMetrics.countCodeOwnerSubmitRuleErrors.increment(cause);
return Optional.of(ruleError(errorMessage));
}
}
diff --git a/java/com/google/gerrit/plugins/codeowners/metrics/CodeOwnerMetrics.java b/java/com/google/gerrit/plugins/codeowners/metrics/CodeOwnerMetrics.java
index 8660d5c..cf847df 100644
--- a/java/com/google/gerrit/plugins/codeowners/metrics/CodeOwnerMetrics.java
+++ b/java/com/google/gerrit/plugins/codeowners/metrics/CodeOwnerMetrics.java
@@ -15,6 +15,7 @@
package com.google.gerrit.plugins.codeowners.metrics;
import com.google.gerrit.metrics.Counter0;
+import com.google.gerrit.metrics.Counter1;
import com.google.gerrit.metrics.Counter3;
import com.google.gerrit.metrics.Description;
import com.google.gerrit.metrics.Description.Units;
@@ -57,6 +58,7 @@
// counter metrics
public final Counter0 countCodeOwnerConfigReads;
public final Counter0 countCodeOwnerConfigCacheReads;
+ public final Counter1<String> countCodeOwnerSubmitRuleErrors;
public final Counter0 countCodeOwnerSubmitRuleRuns;
public final Counter3<String, String, String> countInvalidCodeOwnerConfigFiles;
@@ -152,6 +154,13 @@
createCounter(
"count_code_owner_config_cache_reads",
"Total number of code owner config reads from cache");
+ this.countCodeOwnerSubmitRuleErrors =
+ createCounter1(
+ "count_code_owner_submit_rule_errors",
+ "Total number of code owner submit rule errors",
+ Field.ofString("cause", Metadata.Builder::cause)
+ .description("The cause of the submit rule error.")
+ .build());
this.countCodeOwnerSubmitRuleRuns =
createCounter(
"count_code_owner_submit_rule_runs", "Total number of code owner submit rule runs");
@@ -195,6 +204,10 @@
return metricMaker.newCounter(name, new Description(description).setRate());
}
+ private <F1> Counter1<F1> createCounter1(String name, String description, Field<F1> field1) {
+ return metricMaker.newCounter(name, new Description(description).setRate(), field1);
+ }
+
private <F1, F2, F3> Counter3<F1, F2, F3> createCounter3(
String name, String description, Field<F1> field1, Field<F2> field2, Field<F3> field3) {
return metricMaker.newCounter(
diff --git a/resources/Documentation/metrics.md b/resources/Documentation/metrics.md
index 7459fb3..5cff902 100644
--- a/resources/Documentation/metrics.md
+++ b/resources/Documentation/metrics.md
@@ -57,6 +57,10 @@
Total number of code owner config reads from backend.
* `count_code_owner_config_cache_reads`:
Total number of code owner config reads from cache.
+* `count_code_owner_submit_rule_errors`:
+ Total number of code owner submit rule errors.
+ * `cause`:
+ The cause of the submit rule error.
* `count_code_owner_submit_rule_runs`:
Total number of code owner submit rule runs.
* `count_invalid_code_owner_config_files`: