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