Merge changes I946a69e4,I45103f0e
* changes:
Add metric to record latency for resolving code owner references
Document resolve_path_code_owners metric
diff --git a/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerResolver.java b/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerResolver.java
index e7e18e5..a1f1c34 100644
--- a/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerResolver.java
+++ b/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerResolver.java
@@ -225,42 +225,45 @@
requireNonNull(codeOwnerReferences, "codeOwnerReferences");
requireNonNull(unresolvedImports, "unresolvedImports");
requireNonNull(pathCodeOwnersMessages, "pathCodeOwnersMessages");
- AtomicBoolean ownedByAllUsers = new AtomicBoolean(false);
- AtomicBoolean hasUnresolvedCodeOwners = new AtomicBoolean(false);
- List<String> messages = new ArrayList<>(pathCodeOwnersMessages);
- unresolvedImports.forEach(
- unresolvedImport -> messages.add(unresolvedImportFormatter.format(unresolvedImport)));
- ImmutableSet<CodeOwner> codeOwners =
- codeOwnerReferences.stream()
- .filter(
- codeOwnerReference -> {
- if (ALL_USERS_WILDCARD.equals(codeOwnerReference.email())) {
- ownedByAllUsers.set(true);
- return false;
- }
- return true;
- })
- .map(this::resolveWithMessages)
- .filter(
- resolveResult -> {
- messages.addAll(resolveResult.messages());
- if (!resolveResult.isPresent()) {
- hasUnresolvedCodeOwners.set(true);
- return false;
- }
- return true;
- })
- .map(OptionalResultWithMessages::get)
- .collect(toImmutableSet());
- CodeOwnerResolverResult codeOwnerResolverResult =
- CodeOwnerResolverResult.create(
- codeOwners,
- ownedByAllUsers.get(),
- hasUnresolvedCodeOwners.get(),
- !unresolvedImports.isEmpty(),
- messages);
- logger.atFine().log("resolve result = %s", codeOwnerResolverResult);
- return codeOwnerResolverResult;
+
+ try (Timer0.Context ctx = codeOwnerMetrics.resolveCodeOwnerReferences.start()) {
+ AtomicBoolean ownedByAllUsers = new AtomicBoolean(false);
+ AtomicBoolean hasUnresolvedCodeOwners = new AtomicBoolean(false);
+ List<String> messages = new ArrayList<>(pathCodeOwnersMessages);
+ unresolvedImports.forEach(
+ unresolvedImport -> messages.add(unresolvedImportFormatter.format(unresolvedImport)));
+ ImmutableSet<CodeOwner> codeOwners =
+ codeOwnerReferences.stream()
+ .filter(
+ codeOwnerReference -> {
+ if (ALL_USERS_WILDCARD.equals(codeOwnerReference.email())) {
+ ownedByAllUsers.set(true);
+ return false;
+ }
+ return true;
+ })
+ .map(this::resolveWithMessages)
+ .filter(
+ resolveResult -> {
+ messages.addAll(resolveResult.messages());
+ if (!resolveResult.isPresent()) {
+ hasUnresolvedCodeOwners.set(true);
+ return false;
+ }
+ return true;
+ })
+ .map(OptionalResultWithMessages::get)
+ .collect(toImmutableSet());
+ CodeOwnerResolverResult codeOwnerResolverResult =
+ CodeOwnerResolverResult.create(
+ codeOwners,
+ ownedByAllUsers.get(),
+ hasUnresolvedCodeOwners.get(),
+ !unresolvedImports.isEmpty(),
+ messages);
+ logger.atFine().log("resolve result = %s", codeOwnerResolverResult);
+ return codeOwnerResolverResult;
+ }
}
/**
diff --git a/java/com/google/gerrit/plugins/codeowners/metrics/CodeOwnerMetrics.java b/java/com/google/gerrit/plugins/codeowners/metrics/CodeOwnerMetrics.java
index cf847df..4e952be 100644
--- a/java/com/google/gerrit/plugins/codeowners/metrics/CodeOwnerMetrics.java
+++ b/java/com/google/gerrit/plugins/codeowners/metrics/CodeOwnerMetrics.java
@@ -45,6 +45,7 @@
public final Timer0 resolveCodeOwnerConfig;
public final Timer0 resolveCodeOwnerConfigImport;
public final Timer0 resolveCodeOwnerConfigImports;
+ public final Timer0 resolveCodeOwnerReferences;
public final Timer0 resolvePathCodeOwners;
public final Timer0 runCodeOwnerSubmitRule;
@@ -117,6 +118,9 @@
createLatencyTimer(
"resolve_code_owner_config_imports",
"Latency for resolving all imports of a code owner config file");
+ this.resolveCodeOwnerReferences =
+ createLatencyTimer(
+ "resolve_code_owner_references", "Latency for resolving the code owner references");
this.resolvePathCodeOwners =
createLatencyTimer(
"resolve_path_code_owners", "Latency for resolving the code owners of a path");
diff --git a/resources/Documentation/metrics.md b/resources/Documentation/metrics.md
index 0fc2673..00659f7 100644
--- a/resources/Documentation/metrics.md
+++ b/resources/Documentation/metrics.md
@@ -37,6 +37,10 @@
Latency for resolving an import of a code owner config file.
* `resolve_code_owner_config_imports`:
Latency for resolving all imports of a code owner config file.
+* `resolve_code_owner_references`:
+ Latency for resolving the code owner references.
+* `resolve_path_code_owners`:
+ Latency for resolving the code owners of a path.
* `run_code_owner_submit_rule`:
Latency for running the code owner submit rule.