Repository: incubator-geode
Updated Branches:
  refs/heads/develop de3f90e03 -> 419dc44cd


GEODE-1619 
PartitionedRegionSingleHopWithServerGroupDUnitTest.test_SingleHopWithServerGroupTwoClientServerGroup

Changed the bucket->location map to be copy-on-write so that readers
will no longer see incomplete data.


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/419dc44c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/419dc44c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/419dc44c

Branch: refs/heads/develop
Commit: 419dc44cdaf85c97bf53ab2aaf2f971f770d92fa
Parents: de3f90e
Author: Bruce Schuchardt <bschucha...@pivotal.io>
Authored: Thu Jul 28 09:10:54 2016 -0700
Committer: Bruce Schuchardt <bschucha...@pivotal.io>
Committed: Thu Jul 28 09:12:45 2016 -0700

----------------------------------------------------------------------
 .../gemfire/internal/cache/BucketAdvisor.java       | 16 ++++++----------
 .../gemfire/internal/cache/PartitionedRegion.java   |  0
 .../internal/cache/partitioned/RegionAdvisor.java   | 14 +++++++++-----
 .../cache/PartitionedRegionSingleHopDUnitTest.java  |  8 --------
 ...onedRegionSingleHopWithServerGroupDUnitTest.java | 11 +++++------
 5 files changed, 20 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/419dc44c/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketAdvisor.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketAdvisor.java
 
b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketAdvisor.java
old mode 100644
new mode 100755
index 5fc9bb0..078e595
--- 
a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketAdvisor.java
+++ 
b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/BucketAdvisor.java
@@ -749,23 +749,19 @@ public class BucketAdvisor extends 
CacheDistributionAdvisor  {
     }
   }
 
+  /**
+   * repopulates the RegionAdvisor's location information
+   * for this bucket
+   */
   private void updateServerBucketProfile() {
-    // check to see if it is clientBucketProfile add it to the RegionAdvisor
-    // data structure which maintains the newly created clientBucketProfile
-    // don't add more than once, but replace existing profile
     int bucketId = this.getBucket().getId();
-    Set<ServerBucketProfile> serverProfiles = this.regionAdvisor
-        .getClientBucketProfiles(bucketId);
-    if (serverProfiles == null) {
-      serverProfiles = newSetFromMap(new 
ConcurrentHashMap<ServerBucketProfile, Boolean>());
-      this.regionAdvisor.setClientBucketProfiles(bucketId, serverProfiles);
-    }
-    serverProfiles.clear();
+    Set<ServerBucketProfile> serverProfiles = newSetFromMap(new 
HashMap<ServerBucketProfile, Boolean>());
     for (Profile p : this.profiles) {
       if (p instanceof ServerBucketProfile) {
         serverProfiles.add((ServerBucketProfile)p);
       }
     }
+    this.regionAdvisor.setClientBucketProfiles(bucketId, serverProfiles);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/419dc44c/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
 
b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/PartitionedRegion.java
old mode 100644
new mode 100755

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/419dc44c/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/RegionAdvisor.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/RegionAdvisor.java
 
b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/RegionAdvisor.java
old mode 100644
new mode 100755
index 8305a0d..acb82cb
--- 
a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/RegionAdvisor.java
+++ 
b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/partitioned/RegionAdvisor.java
@@ -231,7 +231,11 @@ public class RegionAdvisor extends CacheDistributionAdvisor
   public Semaphore getVolunteeringSemaphore() {
     return this.volunteeringSemaphore;
   }
-  
+
+  /**
+   * Returns an unmodifiable map of bucket IDs to locations hosting
+   * the bucket.
+   */
   public Map<Integer, List<BucketServerLocation66>> 
getAllClientBucketProfiles() {
     Map<Integer, List<BucketServerLocation66>> bucketToServerLocations = new 
HashMap<Integer, List<BucketServerLocation66>>();
     for (Integer bucketId : this.clientBucketProfilesMap.keySet()) {
@@ -282,9 +286,9 @@ public class RegionAdvisor extends CacheDistributionAdvisor
   
   public ConcurrentHashMap<Integer, Set<ServerBucketProfile>> 
getAllClientBucketProfilesTest() {
     ConcurrentHashMap<Integer, Set<ServerBucketProfile>> map = new 
ConcurrentHashMap<Integer, Set<ServerBucketProfile>>();
-    Map<Integer, List<BucketServerLocation66>> testMap = 
this.getAllClientBucketProfiles();
+    Map<Integer, List<BucketServerLocation66>> testMap = new 
HashMap<>(this.getAllClientBucketProfiles());
     for (Integer bucketId : testMap.keySet()) {
-      Set<ServerBucketProfile> parr = 
this.clientBucketProfilesMap.get(bucketId);
+      Set<ServerBucketProfile> parr = new 
HashSet<>(this.clientBucketProfilesMap.get(bucketId));
       map.put(bucketId, parr);
     }
     
@@ -308,8 +312,8 @@ public class RegionAdvisor extends CacheDistributionAdvisor
   }
 
   public void setClientBucketProfiles(Integer bucketId,
-      Set<ServerBucketProfile> oldProfiles) {
-    this.clientBucketProfilesMap.put(bucketId, oldProfiles);
+      Set<ServerBucketProfile> profiles) {
+    this.clientBucketProfilesMap.put(bucketId, 
Collections.unmodifiableSet(profiles));
   } 
   
   /**

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/419dc44c/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
 
b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
index 8dda088..8c934d8 100755
--- 
a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
+++ 
b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopDUnitTest.java
@@ -727,7 +727,6 @@ public class PartitionedRegionSingleHopDUnitTest extends 
JUnit4CacheTestCase {
     Awaitility.waitAtMost(60, TimeUnit.SECONDS).until(() -> 
(prMetaData.getBucketServerLocationsMap_TEST_ONLY().size() == 4));
   }
 
-  @Ignore("TODO: test disabled due to Bug 47950")
   @Test
   public void testMetadataIsSameOnAllServersAndClients() {
     Integer port0 = (Integer)member0.invoke(() -> 
PartitionedRegionSingleHopDUnitTest.createServer( 3, 4 ));
@@ -981,13 +980,6 @@ public class PartitionedRegionSingleHopDUnitTest extends 
JUnit4CacheTestCase {
     });
   }
 
-  /**
-   * TODO This is failing in WAN_Dev_Dec11 branch after downmerge from trunk 
revision 34709
-   *
-   * This test is disabled due to intermittent failures in unit test runs
-   * Please see ticket #52203
-   */
-  @Ignore("TODO: test is disabled due to #52203")
   @Test
   public void testClientMetadataForPersistentPrs() throws Exception {
     Integer port0 = (Integer)member0.invoke(() -> 
PartitionedRegionSingleHopDUnitTest.createPersistentPrsAndServer( 3, 4 ));

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/419dc44c/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopWithServerGroupDUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopWithServerGroupDUnitTest.java
 
b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopWithServerGroupDUnitTest.java
index 3195b35..52a1fe2 100644
--- 
a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopWithServerGroupDUnitTest.java
+++ 
b/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/PartitionedRegionSingleHopWithServerGroupDUnitTest.java
@@ -395,7 +395,7 @@ public class 
PartitionedRegionSingleHopWithServerGroupDUnitTest extends JUnit4Ca
     
     try {
       verifyMetadata(4, 2);
-      member2.invoke(() -> 
PartitionedRegionSingleHopWithServerGroupDUnitTest.verifyMetadata(new 
Integer(4),new Integer(1)));
+      member2.invoke(() -> 
PartitionedRegionSingleHopWithServerGroupDUnitTest.verifyMetadata(4, 1));
       
     } finally {
       resetHonourServerGroupsInPRSingleHop();
@@ -559,11 +559,10 @@ public class 
PartitionedRegionSingleHopWithServerGroupDUnitTest extends JUnit4Ca
       assertTrue(regionMetaData.containsKey(region.getFullPath()));
       ClientPartitionAdvisor prMetaData = regionMetaData.get(region
           .getFullPath());
-      for (Entry e : prMetaData.getBucketServerLocationsMap_TEST_ONLY()
-          .entrySet()) {
-        cache.getLogger().fine(
-            "For bucket id " + e.getKey() + " the locations are "
-                + e.getValue());
+      if (cache.getLogger().fineEnabled()) {
+        for (Entry e : 
prMetaData.getBucketServerLocationsMap_TEST_ONLY().entrySet()) {
+          cache.getLogger().fine("For bucket id " + e.getKey() + " the 
locations are " + e.getValue());
+        }
       }
 
       for (Entry entry : prMetaData.getBucketServerLocationsMap_TEST_ONLY()

Reply via email to