This is an automated email from the ASF dual-hosted git repository.

eshu11 pushed a commit to branch feature/GEODE-6630
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/feature/GEODE-6630 by this 
push:
     new 4654bfc  fix a review comment.
4654bfc is described below

commit 4654bfc94f515757fb5e7789b65f6b581bf9fee7
Author: eshu <[email protected]>
AuthorDate: Thu Apr 18 10:55:04 2019 -0700

    fix a review comment.
---
 .../internal/cache/PRHARedundancyProvider.java     | 17 ++++-------
 .../partitioned/PersistentBucketRecoverer.java     |  7 +++++
 .../partitioned/PersistentBucketRecovererTest.java | 34 ++++++++++++++++++----
 3 files changed, 41 insertions(+), 17 deletions(-)

diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/PRHARedundancyProvider.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/PRHARedundancyProvider.java
index 7ec3523..26c3406 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/PRHARedundancyProvider.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/PRHARedundancyProvider.java
@@ -1708,11 +1708,7 @@ public class PRHARedundancyProvider {
     ArrayList<ProxyBucketRegion> bucketsHostedLocally =
         new ArrayList<ProxyBucketRegion>(proxyBucketArray.length);
 
-    persistentBucketRecoverer = 
createPersistentBucketRecoverer(proxyBucketArray.length);
-    /*
-     * Start the redundancy logger before recovering any proxy buckets.
-     */
-    persistentBucketRecoverer.startLoggingThread();
+    createPersistentBucketRecoverer(proxyBucketArray.length);
 
     /*
      * Spawn a separate thread for bucket that we previously hosted to recover 
that bucket.
@@ -1774,10 +1770,8 @@ public class PRHARedundancyProvider {
         proxyBucket.recoverFromDiskRecursively();
       }
     } finally {
-      for (final ProxyBucketRegion proxyBucket : bucketsNotHostedLocally) {
-        if (getPersistentBucketRecoverer() != null) {
-          getPersistentBucketRecoverer().countDown();
-        }
+      if (getPersistentBucketRecoverer() != null) {
+        
getPersistentBucketRecoverer().countDown(bucketsNotHostedLocally.size());
       }
     }
 
@@ -1787,8 +1781,9 @@ public class PRHARedundancyProvider {
     // }
   }
 
-  private PersistentBucketRecoverer createPersistentBucketRecoverer(int 
proxyBuckets) {
-    return new PersistentBucketRecoverer(this, proxyBuckets);
+  private void createPersistentBucketRecoverer(int proxyBuckets) {
+    persistentBucketRecoverer = new PersistentBucketRecoverer(this, 
proxyBuckets);
+    persistentBucketRecoverer.startLoggingThread();
   }
 
   PersistentBucketRecoverer getPersistentBucketRecoverer() {
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PersistentBucketRecoverer.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PersistentBucketRecoverer.java
index 021c03a..5654c61 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PersistentBucketRecoverer.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PersistentBucketRecoverer.java
@@ -452,6 +452,13 @@ public class PersistentBucketRecoverer extends 
RecoveryRunnable implements Persi
     allBucketsRecoveredFromDisk.countDown();
   }
 
+  public void countDown(int size) {
+    while (size > 0) {
+      allBucketsRecoveredFromDisk.countDown();
+      --size;
+    }
+  }
+
   public boolean hasRecoveryCompleted() {
     if (getLatchCount() > 0) {
       return false;
diff --git 
a/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/PersistentBucketRecovererTest.java
 
b/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/PersistentBucketRecovererTest.java
index 0500d47..12168cd 100644
--- 
a/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/PersistentBucketRecovererTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/PersistentBucketRecovererTest.java
@@ -19,6 +19,7 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import org.junit.Before;
 import org.junit.Test;
 
 import org.apache.geode.internal.cache.DistributedRegion;
@@ -28,14 +29,23 @@ import org.apache.geode.internal.cache.PartitionedRegion;
 import org.apache.geode.internal.cache.PartitionedRegionHelper;
 
 public class PersistentBucketRecovererTest {
-  @Test
-  public void allBucketsRecoveredFromDiskCountDownLatchIsSet() {
-    PartitionedRegion partitionedRegion = mock(PartitionedRegion.class, 
RETURNS_DEEP_STUBS);
-    InternalCache cache = mock(InternalCache.class);
-    DistributedRegion root = mock(DistributedRegion.class);
+  private PartitionedRegion partitionedRegion;
+  private InternalCache cache;
+  private DistributedRegion root;
+  private PRHARedundancyProvider provider;
+
+  @Before
+  public void setUp() {
+    partitionedRegion = mock(PartitionedRegion.class, RETURNS_DEEP_STUBS);
+    cache = mock(InternalCache.class);
+    root = mock(DistributedRegion.class);
     when(partitionedRegion.getCache()).thenReturn(cache);
     when(cache.getRegion(PartitionedRegionHelper.PR_ROOT_REGION_NAME, 
true)).thenReturn(root);
-    PRHARedundancyProvider provider = new 
PRHARedundancyProvider(partitionedRegion);
+    provider = new PRHARedundancyProvider(partitionedRegion);
+  }
+
+  @Test
+  public void allBucketsRecoveredFromDiskCountDownLatchIsSet() {
     int numberOfProxyBuckets = 5;
 
     PersistentBucketRecoverer recoverer =
@@ -44,4 +54,16 @@ public class PersistentBucketRecovererTest {
     assertThat(recoverer.getAllBucketsRecoveredFromDiskLatch()).isNotNull();
     assertThat(recoverer.getLatchCount()).isEqualTo(numberOfProxyBuckets);
   }
+
+  @Test
+  public void latchCanBeCountedDown() {
+    int numberOfProxyBuckets = 5;
+    PersistentBucketRecoverer recoverer =
+        new PersistentBucketRecoverer(provider, numberOfProxyBuckets);
+
+    assertThat(recoverer.getLatchCount()).isEqualTo(numberOfProxyBuckets);
+    recoverer.countDown(numberOfProxyBuckets);
+
+    recoverer.await();
+  }
 }

Reply via email to