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