protected FilterRoutingInfo getRecipientFilterRouting(Set cacheOpRecipients) { LocalRegion region = getRegion(); if (!region.isUsedForPartitionedRegionBucket()) { return null; } CacheDistributionAdvisor advisor; advisor = region.getPartitionedRegion().getCacheDistributionAdvisor(); return advisor.adviseFilterRouting(this.event, cacheOpRecipients); }
@SuppressWarnings("unchecked") private boolean hasAdjunctRecipientsNeedingDelta(EntryEventImpl event) { PartitionedRegion partitionedRegion = (PartitionedRegion) this; BucketRegion bucketRegion; int bId = event.getKeyInfo().getBucketId(); try { bucketRegion = partitionedRegion.dataStore.getInitializedBucketForId(event.getKey(), bId); } catch (ForceReattemptException ignore) { return true; } Set<InternalDistributedMember> recipients = bucketRegion.getCacheDistributionAdvisor().adviseUpdate(event); Set<Object> twoMessages = bucketRegion.getBucketAdvisor().adviseRequiresTwoMessages(); CacheDistributionAdvisor cda = partitionedRegion.getCacheDistributionAdvisor(); FilterRoutingInfo filterRouting = cda.adviseFilterRouting(event, recipients); Set<Object> adjunctRecipients = bucketRegion.getAdjunctReceivers(event, recipients, twoMessages, filterRouting); Set cacheServerMembers = cda.adviseCacheServers(); return !Collections.disjoint(adjunctRecipients, cacheServerMembers); }
@Override protected FilterRoutingInfo getRecipientFilterRouting(Set cacheOpRecipients) { // for removeAll, we need to determine the routing information for each event and // create a consolidated routing object representing all events that can be // used for distribution CacheDistributionAdvisor advisor; LocalRegion region = (LocalRegion) this.event.getRegion(); if (region instanceof PartitionedRegion) { advisor = ((PartitionedRegion) region).getCacheDistributionAdvisor(); } else if (region.isUsedForPartitionedRegionBucket()) { advisor = ((BucketRegion) region).getPartitionedRegion().getCacheDistributionAdvisor(); } else { advisor = ((DistributedRegion) region).getCacheDistributionAdvisor(); } FilterRoutingInfo consolidated = new FilterRoutingInfo(); for (int i = 0; i < this.removeAllData.length; i++) { @Unretained EntryEventImpl ev = getEventForPosition(i); if (ev != null) { FilterRoutingInfo eventRouting = advisor.adviseFilterRouting(ev, cacheOpRecipients); if (eventRouting != null) { consolidated.addFilterInfo(eventRouting); } removeAllData[i].filterRouting = eventRouting; } } // we need to create routing information for each PUT event return consolidated; }
@Override protected FilterRoutingInfo getRecipientFilterRouting(Set cacheOpRecipients) { // for putAll, we need to determine the routing information for each event and // create a consolidated routing object representing all events that can be // used for distribution CacheDistributionAdvisor advisor; LocalRegion region = (LocalRegion) this.event.getRegion(); if (region instanceof PartitionedRegion) { advisor = ((PartitionedRegion) region).getCacheDistributionAdvisor(); } else if (region.isUsedForPartitionedRegionBucket()) { advisor = ((BucketRegion) region).getPartitionedRegion().getCacheDistributionAdvisor(); } else { advisor = ((DistributedRegion) region).getCacheDistributionAdvisor(); } FilterRoutingInfo consolidated = new FilterRoutingInfo(); for (int i = 0; i < this.putAllData.length; i++) { @Unretained EntryEventImpl ev = getEventForPosition(i); if (ev != null) { FilterRoutingInfo eventRouting = advisor.adviseFilterRouting(ev, cacheOpRecipients); if (eventRouting != null) { consolidated.addFilterInfo(eventRouting); } putAllData[i].filterRouting = eventRouting; } } // we need to create routing information for each PUT event return consolidated; }