Merge "MergeMetrics: Add debug logs"
diff --git a/java/com/google/gerrit/server/query/change/MagicLabelPredicates.java b/java/com/google/gerrit/server/query/change/MagicLabelPredicates.java
index 82d8717..9ee4852 100644
--- a/java/com/google/gerrit/server/query/change/MagicLabelPredicates.java
+++ b/java/com/google/gerrit/server/query/change/MagicLabelPredicates.java
@@ -16,6 +16,7 @@
 
 import static com.google.gerrit.server.query.change.EqualsLabelPredicates.type;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.common.Nullable;
 import com.google.gerrit.entities.Account;
 import com.google.gerrit.entities.Change;
@@ -30,6 +31,8 @@
 import java.util.Optional;
 
 public class MagicLabelPredicates {
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
   public static class PostFilterMagicLabelPredicate extends PostFilterPredicate<ChangeData> {
     private static class PostFilterMatcher extends Matcher {
       public PostFilterMatcher(
@@ -177,6 +180,7 @@
     }
 
     public boolean ignoresUploaderApprovals() {
+      logger.atFine().log("account = %d", account.get());
       return account.equals(ChangeQueryBuilder.NON_UPLOADER_ACCOUNT_ID)
           || account.equals(ChangeQueryBuilder.NON_CONTRIBUTOR_ACCOUNT_ID);
     }
diff --git a/java/com/google/gerrit/server/submit/MergeMetrics.java b/java/com/google/gerrit/server/submit/MergeMetrics.java
index e9832fd..4c7a197 100644
--- a/java/com/google/gerrit/server/submit/MergeMetrics.java
+++ b/java/com/google/gerrit/server/submit/MergeMetrics.java
@@ -14,6 +14,7 @@
 
 package com.google.gerrit.server.submit;
 
+import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.entities.SubmitRequirement;
 import com.google.gerrit.index.query.Predicate;
 import com.google.gerrit.index.query.QueryParseException;
@@ -28,6 +29,8 @@
 
 /** Metrics are recorded when a change is merged (aka submitted). */
 public class MergeMetrics {
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
   private final Provider<SubmitRequirementChangeQueryBuilder> submitRequirementChangequeryBuilder;
 
   // TODO: This metric is for measuring the impact of allowing users to rebase changes on behalf of
@@ -81,12 +84,19 @@
     // impersonated. Impersonating the uploader is only allowed on rebase by rebasing on behalf of
     // the uploader. Hence if the current patch set has different accounts as uploader and real
     // uploader we can assume that it was created by rebase on behalf of the uploader.
-    return !cd.currentPatchSet().uploader().equals(cd.currentPatchSet().realUploader());
+    boolean isRebaseOnBehalfOfUploader =
+        !cd.currentPatchSet().uploader().equals(cd.currentPatchSet().realUploader());
+    logger.atFine().log("isRebaseOnBehalfOfUploader = %s", isRebaseOnBehalfOfUploader);
+    return isRebaseOnBehalfOfUploader;
   }
 
   private boolean hasCodeReviewApprovalOfRealUploader(ChangeData cd) {
-    return cd.currentApprovals().stream()
-        .anyMatch(psa -> psa.accountId().equals(cd.currentPatchSet().realUploader()));
+    boolean hasCodeReviewApprovalOfRealUploader =
+        cd.currentApprovals().stream()
+            .anyMatch(psa -> psa.accountId().equals(cd.currentPatchSet().realUploader()));
+    logger.atFine().log(
+        "hasCodeReviewApprovalOfRealUploader = %s", hasCodeReviewApprovalOfRealUploader);
+    return hasCodeReviewApprovalOfRealUploader;
   }
 
   private boolean ignoresCodeReviewApprovalsOfUploader(ChangeData cd) {
@@ -105,6 +115,9 @@
   }
 
   private boolean ignoresCodeReviewApprovalsOfUploader(Predicate<ChangeData> predicate) {
+    logger.atFine().log(
+        "predicate = (%s) %s (child count = %d)",
+        predicate.getClass().getName(), predicate, predicate.getChildCount());
     if (predicate.getChildCount() == 0) {
       // Submit requirements may require a Code-Review approval but ignore approvals by the
       // uploader. This is done by using a label predicate with 'user=non_uploader' or