Use SharedRefDatabaseWrapper in MultisiteReplicationPushFilter

Every interaction with shared-ref db should go through the wrapper.
This will allow us centrally capture those interactions in logs.

Change-Id: Ieb22ee45b8e8f9584c50141667880e82fa1cf299
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/MultisiteReplicationPushFilter.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/MultisiteReplicationPushFilter.java
index 6b4f4cc..f55a458 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/MultisiteReplicationPushFilter.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/MultisiteReplicationPushFilter.java
@@ -14,8 +14,10 @@
 
 package com.googlesource.gerrit.plugins.multisite.validation;
 
+import com.google.gerrit.extensions.registration.DynamicItem;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
+import com.googlesource.gerrit.plugins.multisite.SharedRefDatabaseWrapper;
 import com.googlesource.gerrit.plugins.multisite.validation.dfsrefdb.SharedLockException;
 import com.googlesource.gerrit.plugins.multisite.validation.dfsrefdb.SharedRefDatabase;
 import com.googlesource.gerrit.plugins.replication.ReplicationPushFilter;
@@ -33,10 +35,10 @@
   static final String REPLICATION_LOG_NAME = "replication_log";
   static final Logger repLog = LoggerFactory.getLogger(REPLICATION_LOG_NAME);
 
-  private final SharedRefDatabase sharedRefDb;
+  private final SharedRefDatabaseWrapper sharedRefDb;
 
   @Inject
-  public MultisiteReplicationPushFilter(SharedRefDatabase sharedRefDb) {
+  public MultisiteReplicationPushFilter(SharedRefDatabaseWrapper sharedRefDb) {
     this.sharedRefDb = sharedRefDb;
   }
 
@@ -50,8 +52,10 @@
                 refUpdate -> {
                   String ref = refUpdate.getSrcRef();
                   try {
-                    if (sharedRefDb.isUpToDate(
-                        projectName, SharedRefDatabase.newRef(ref, refUpdate.getNewObjectId()))) {
+                    if (sharedRefDb
+                        .isUpToDate(
+                            projectName,
+                            SharedRefDatabase.newRef(ref, refUpdate.getNewObjectId()))) {
                       return true;
                     }
                     repLog.warn(
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/dfsrefdb/MultisiteReplicationPushFilterTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/dfsrefdb/MultisiteReplicationPushFilterTest.java
index 1332dd1..91459d8 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/dfsrefdb/MultisiteReplicationPushFilterTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/dfsrefdb/MultisiteReplicationPushFilterTest.java
@@ -19,12 +19,18 @@
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
 
+import com.google.gerrit.extensions.registration.DynamicItem;
+import com.googlesource.gerrit.plugins.multisite.SharedRefDatabaseWrapper;
+import com.googlesource.gerrit.plugins.multisite.validation.DisabledSharedRefLogger;
 import com.googlesource.gerrit.plugins.multisite.validation.MultisiteReplicationPushFilter;
+import com.googlesource.gerrit.plugins.multisite.validation.ZkConnectionConfig;
+import com.googlesource.gerrit.plugins.multisite.validation.dfsrefdb.zookeeper.ZkSharedRefDatabase;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import org.apache.curator.retry.RetryNTimes;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectIdRef;
 import org.eclipse.jgit.lib.Ref;
@@ -37,7 +43,7 @@
 @RunWith(MockitoJUnitRunner.class)
 public class MultisiteReplicationPushFilterTest {
 
-  @Mock SharedRefDatabase sharedRefDatabaseMock;
+  @Mock SharedRefDatabaseWrapper sharedRefDatabaseMock;
 
   String project = "fooProject";
 
@@ -48,7 +54,8 @@
     doReturn(true).when(sharedRefDatabaseMock).isUpToDate(eq(project), any());
 
     MultisiteReplicationPushFilter pushFilter =
-        new MultisiteReplicationPushFilter(sharedRefDatabaseMock);
+        new MultisiteReplicationPushFilter(
+          sharedRefDatabaseMock);
     List<RemoteRefUpdate> filteredRefUpdates = pushFilter.filter(project, refUpdates);
 
     assertThat(filteredRefUpdates).containsExactlyElementsIn(refUpdates);
@@ -59,10 +66,11 @@
     RemoteRefUpdate refUpToDate = refUpdate("refs/heads/uptodate");
     RemoteRefUpdate outdatedRef = refUpdate("refs/heads/outdated");
     List<RemoteRefUpdate> refUpdates = Arrays.asList(refUpToDate, outdatedRef);
-    SharedRefDatabase sharedRefDatabase = newSharedRefDatabase(outdatedRef.getSrcRef());
+    SharedRefDatabaseWrapper sharedRefDatabase = newSharedRefDatabase(outdatedRef.getSrcRef());
 
     MultisiteReplicationPushFilter pushFilter =
-        new MultisiteReplicationPushFilter(sharedRefDatabase);
+        new MultisiteReplicationPushFilter(
+ sharedRefDatabase);
     List<RemoteRefUpdate> filteredRefUpdates = pushFilter.filter(project, refUpdates);
 
     assertThat(filteredRefUpdates).containsExactly(refUpToDate);
@@ -76,7 +84,7 @@
     RemoteRefUpdate changeRef = refUpdate("refs/changes/12/4512/1");
     List<RemoteRefUpdate> refUpdates =
         Arrays.asList(refUpToDate, refChangeUpToDate, changeMetaRef, changeRef);
-    SharedRefDatabase sharedRefDatabase = newSharedRefDatabase(changeMetaRef.getSrcRef());
+    SharedRefDatabaseWrapper sharedRefDatabase = newSharedRefDatabase(changeMetaRef.getSrcRef());
 
     MultisiteReplicationPushFilter pushFilter =
         new MultisiteReplicationPushFilter(sharedRefDatabase);
@@ -85,7 +93,7 @@
     assertThat(filteredRefUpdates).containsExactly(refUpToDate, refChangeUpToDate);
   }
 
-  private SharedRefDatabase newSharedRefDatabase(String... rejectedRefs) {
+  private SharedRefDatabaseWrapper newSharedRefDatabase(String... rejectedRefs) {
     Set<String> rejectedSet = new HashSet<>();
     rejectedSet.addAll(Arrays.asList(rejectedRefs));
 
@@ -116,7 +124,11 @@
             return false;
           }
         };
-    return sharedRefDatabase;
+    return new SharedRefDatabaseWrapper(
+            DynamicItem.itemOf(
+                    SharedRefDatabase.class,
+                    sharedRefDatabase),
+                new DisabledSharedRefLogger());
   }
 
   private RemoteRefUpdate refUpdate(String refName) throws IOException {