private Map<PartitionedRegion, InternalPRInfo> fetchDetails(InternalCache cache) { LoadProbe probe = cache.getInternalResourceManager().getLoadProbe(); Map<PartitionedRegion, InternalPRInfo> detailsMap = new LinkedHashMap<PartitionedRegion, InternalPRInfo>(colocatedRegions.size()); for (PartitionedRegion colocatedRegion : colocatedRegions) { if (ColocationHelper.isColocationComplete(colocatedRegion)) { InternalPRInfo info = colocatedRegion.getRedundancyProvider().buildPartitionedRegionInfo(true, probe); detailsMap.put(colocatedRegion, info); } } return detailsMap; }
private static void fillInPartitionedRegionInfo(final InternalCache cache, final Set prDetailsSet, final boolean internal) { // TODO: optimize by fetching all PR details from each member at once Set<PartitionedRegion> partitionedRegions = cache.getPartitionedRegions(); if (partitionedRegions.isEmpty()) { return; } for (PartitionedRegion partitionedRegion : partitionedRegions) { PartitionRegionInfo prDetails = partitionedRegion.getRedundancyProvider() .buildPartitionedRegionInfo(internal, cache.getInternalResourceManager().getLoadProbe()); if (prDetails != null) { prDetailsSet.add(prDetails); } } }
@Override public Map<PartitionedRegion, InternalPRInfo> getRegionMemberDetails() { InternalCache cache = getCache(); Map<PartitionedRegion, InternalPRInfo> detailsMap = new HashMap<>(); for (PartitionedRegion region : cache.getPartitionedRegions()) { LoadProbe probe = cache.getInternalResourceManager().getLoadProbe(); InternalPRInfo info = region.getRedundancyProvider().buildPartitionedRegionInfo(true, probe); detailsMap.put(region, info); } return detailsMap; }
when(mockR1.getRedundancyProvider()).thenReturn(mockRedundancyProviderR1); when(mockR2.getRedundancyProvider()).thenReturn(mockRedundancyProviderR2); when(mockRedundancyProviderR1.buildPartitionedRegionInfo(eq(true), any(LoadProbe.class))) .thenReturn(mockR1PRInfo); when(mockRedundancyProviderR2.buildPartitionedRegionInfo(eq(true), any(LoadProbe.class))) .thenReturn(mockR2PRInfo);
/** * Gathers details about the specified partitioned region. Returns null if the partitioned region * is not locally defined. * * @param region the region to get info about * @return details about the specified partitioned region * @since GemFire 6.0 */ public static PartitionRegionInfo getPartitionRegionInfo(final Region<?, ?> region) { try { PartitionedRegion partitionedRegion = isPartitionedCheck(region); InternalCache cache = (InternalCache) region.getCache(); return partitionedRegion.getRedundancyProvider().buildPartitionedRegionInfo(false, cache.getInternalResourceManager().getLoadProbe()); } catch (ClassCastException ignore) { // not a PR so return null } return null; }