diff --git a/java/com/google/gerrit/metrics/dropwizard/BucketedCallback.java b/java/com/google/gerrit/metrics/dropwizard/BucketedCallback.java
index 68f8021..b3860f7 100644
--- a/java/com/google/gerrit/metrics/dropwizard/BucketedCallback.java
+++ b/java/com/google/gerrit/metrics/dropwizard/BucketedCallback.java
@@ -21,8 +21,8 @@
 import com.google.common.collect.Maps;
 import com.google.gerrit.metrics.Description;
 import com.google.gerrit.metrics.Field;
+import java.util.Iterator;
 import java.util.Map;
-import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
 /** Abstract callback metric broken down into buckets. */
@@ -67,10 +67,11 @@
   }
 
   void doPrune() {
-    Set<Map.Entry<Object, BucketedCallback<V>.ValueGauge>> entries = cells.entrySet();
-    for (Map.Entry<Object, ValueGauge> e : entries) {
+    Iterator<Map.Entry<Object, ValueGauge>> it = cells.entrySet().iterator();
+    while (it.hasNext()) {
+      Map.Entry<Object, ValueGauge> e = it.next();
       if (!e.getValue().set) {
-        entries.remove(e);
+        it.remove();
         registry.remove(submetric(e.getKey()));
       }
     }
diff --git a/java/com/google/gerrit/server/account/UniversalGroupBackend.java b/java/com/google/gerrit/server/account/UniversalGroupBackend.java
index e1ee09d..fddbd2b 100644
--- a/java/com/google/gerrit/server/account/UniversalGroupBackend.java
+++ b/java/com/google/gerrit/server/account/UniversalGroupBackend.java
@@ -60,7 +60,7 @@
   private GroupBackend backend(AccountGroup.UUID uuid) {
     if (uuid != null) {
       for (PluginSetEntryContext<GroupBackend> c : backends) {
-        if (c.call(b -> b.handles(uuid))) {
+        if (Boolean.TRUE.equals(c.call(b -> b.handles(uuid)))) {
           return c.get();
         }
       }
@@ -116,6 +116,7 @@
           }
         }
       }
+      logger.atFine().log("Unknown GroupMembership for UUID: %s", uuid);
       return null;
     }
 
@@ -126,7 +127,6 @@
       }
       GroupMembership m = membership(uuid);
       if (m == null) {
-        logger.atFine().log("Unknown GroupMembership for UUID: %s", uuid);
         return false;
       }
       return m.contains(uuid);
@@ -142,7 +142,6 @@
         }
         GroupMembership m = membership(uuid);
         if (m == null) {
-          logger.atFine().log("Unknown GroupMembership for UUID: %s", uuid);
           continue;
         }
         lookups.put(m, uuid);
@@ -198,7 +197,7 @@
   @Override
   public boolean isVisibleToAll(AccountGroup.UUID uuid) {
     for (PluginSetEntryContext<GroupBackend> c : backends) {
-      if (c.call(b -> b.handles(uuid))) {
+      if (Boolean.TRUE.equals(c.call(b -> b.handles(uuid)))) {
         return c.call(b -> b.isVisibleToAll(uuid));
       }
     }
