You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by as...@apache.org on 2015/11/11 22:23:41 UTC
[09/50] [abbrv] incubator-geode git commit: Creating missing buckets
in PartitionRepositoryManager
Creating missing buckets in PartitionRepositoryManager
Creating the colocated buckets if they do not yet exist in
PartitionedRepositoryManager.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/c80e93b9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/c80e93b9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/c80e93b9
Branch: refs/heads/develop
Commit: c80e93b95f81151c8db6bb2ccf17ef2d6ab69ab0
Parents: 3f0c069
Author: Dan Smith <up...@apache.org>
Authored: Tue Sep 22 17:07:21 2015 -0700
Committer: Dan Smith <up...@apache.org>
Committed: Wed Sep 23 09:14:24 2015 -0700
----------------------------------------------------------------------
.../internal/PartitionedRepositoryManager.java | 3 +++
.../PartitionedRepositoryManagerJUnitTest.java | 21 ++++++++++++++++++++
2 files changed, 24 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c80e93b9/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManager.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManager.java b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManager.java
index bcec1c9..65c678c 100644
--- a/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManager.java
+++ b/gemfire-lucene/src/main/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManager.java
@@ -133,6 +133,9 @@ public class PartitionedRepositoryManager implements RepositoryManager {
* Find the bucket in region2 that matches the bucket id from region1.
*/
private BucketRegion getMatchingBucket(PartitionedRegion region, Integer bucketId) throws BucketNotFoundException {
+ //Force the bucket to be created if it is not already
+ region.getOrCreateNodeForBucketWrite(bucketId, null);
+
BucketRegion result = region.getDataStore().getLocalBucketById(bucketId);
if(result == null) {
throw new BucketNotFoundException("Bucket not found for region " + region + " bucekt id " + bucketId);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/c80e93b9/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManagerJUnitTest.java
----------------------------------------------------------------------
diff --git a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManagerJUnitTest.java b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManagerJUnitTest.java
index 367f4f2..a2cc75e 100644
--- a/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManagerJUnitTest.java
+++ b/gemfire-lucene/src/test/java/com/gemstone/gemfire/cache/lucene/internal/PartitionedRepositoryManagerJUnitTest.java
@@ -18,6 +18,8 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
import com.gemstone.gemfire.cache.lucene.internal.directory.RegionDirectory;
import com.gemstone.gemfire.cache.lucene.internal.repository.IndexRepository;
@@ -28,6 +30,7 @@ import com.gemstone.gemfire.internal.cache.BucketNotFoundException;
import com.gemstone.gemfire.internal.cache.BucketRegion;
import com.gemstone.gemfire.internal.cache.LocalDataSet;
import com.gemstone.gemfire.internal.cache.PartitionedRegion;
+import com.gemstone.gemfire.internal.cache.PartitionedRegion.RetryTimeKeeper;
import com.gemstone.gemfire.internal.cache.PartitionedRegionDataStore;
import com.gemstone.gemfire.test.junit.categories.UnitTest;
@@ -118,6 +121,24 @@ public class PartitionedRepositoryManagerJUnitTest {
}
@Test
+ public void createMissingBucket() throws BucketNotFoundException {
+ PartitionedRepositoryManager repoManager = new PartitionedRepositoryManager(userRegion, fileRegion, chunkRegion, serializer, new StandardAnalyzer());
+ BucketRegion mockBucket0 = getMockBucket(0);
+
+ Mockito.when(fileDataStore.getLocalBucketById(eq(0))).thenReturn(null);
+
+ Mockito.when(fileRegion.getOrCreateNodeForBucketWrite(eq(0), (RetryTimeKeeper) any())).then(new Answer() {
+ @Override
+ public Object answer(InvocationOnMock invocation) throws Throwable {
+ Mockito.when(fileDataStore.getLocalBucketById(eq(0))).thenReturn(fileBuckets.get(0));
+ return null;
+ }
+ });
+
+ assertNotNull(repoManager.getRepository(userRegion, 0, null));
+ }
+
+ @Test
public void getByRegion() throws BucketNotFoundException {
PartitionedRepositoryManager repoManager = new PartitionedRepositoryManager(userRegion, fileRegion, chunkRegion, serializer, new StandardAnalyzer());