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();
+ }
}