/** * Start listening for persistent view updates and apply any updates that have already happened. * * This method should be called after we have decided that there is no conflicting persistent * exception. * * Fix for bug 44045. */ protected void beginUpdatingPersistentView() { synchronized (lock) { // Only update the view if it is has not already happened. if (!shouldUpdatePersistentView) { shouldUpdatePersistentView = true; Map<InternalDistributedMember, PersistentMemberID> onlineMembers = cacheDistributionAdvisor.adviseInitializedPersistentMembers(); for (Map.Entry<InternalDistributedMember, PersistentMemberID> entry : onlineMembers .entrySet()) { memberOnline(entry.getKey(), entry.getValue()); } } } }
/** * A persistent member has gone offline. Log the offline member and log which persistent * members are still online (the current persistent view). */ @Override public void memberOffline(InternalDistributedMember member, PersistentMemberID persistentID) { if (logger.isDebugEnabled()) { Set<PersistentMemberID> members = new HashSet<>(cacheDistributionAdvisor.adviseInitializedPersistentMembers().values()); members.remove(persistentID); Set<String> onlineMembers = new HashSet<>(); TransformUtils.transform(members, onlineMembers, TransformUtils.persistentMemberIdToLogEntryTransformer); logger.info( "The following persistent member has gone offline for region {}: {} Remaining participating members for the region include: {}", new Object[] {regionPath, TransformUtils.persistentMemberIdToLogEntryTransformer .transform(persistentID), onlineMembers}); } } });
@Override public PersistentMembershipView getMembershipView() { if (!initialized) { return null; } Set<PersistentMemberID> offlineMembers = getPersistedMembers(); Map<InternalDistributedMember, PersistentMemberID> onlineMembers = cacheDistributionAdvisor.adviseInitializedPersistentMembers(); offlineMembers.removeAll(onlineMembers.values()); PersistentMemberID myId = getPersistentID(); if (myId != null) { onlineMembers .put(cacheDistributionAdvisor.getDistributionManager().getDistributionManagerId(), myId); } return new PersistentMembershipView(offlineMembers, onlineMembers, persistentMemberManager.getRevokedMembers()); }
Map<InternalDistributedMember, PersistentMemberID> onlineMembers; if (!atomicCreation) { onlineMembers = cacheDistributionAdvisor.adviseInitializedPersistentMembers(); } else {
DistributedRegion r = (DistributedRegion) event.getRegion(); Collection<InternalDistributedMember> replicates = onlyPersistent ? r.getCacheDistributionAdvisor().adviseInitializedPersistentMembers().keySet() : r.getCacheDistributionAdvisor().adviseInitializedReplicates(); if (replicates.isEmpty()) {
DistributedRegion r = (DistributedRegion) event.getRegion(); Collection<InternalDistributedMember> replicates = onlyPersistent ? r.getCacheDistributionAdvisor().adviseInitializedPersistentMembers().keySet() : r.getCacheDistributionAdvisor().adviseInitializedReplicates(); if (replicates.isEmpty()) {
Map<InternalDistributedMember, PersistentMemberID> persistentIds = null; if (region.getDataPolicy().withPersistence()) { persistentIds = region.getDistributionAdvisor().adviseInitializedPersistentMembers();
DistributedRegion r = (DistributedRegion) event.getRegion(); Collection<InternalDistributedMember> replicates = onlyPersistent ? r.getCacheDistributionAdvisor().adviseInitializedPersistentMembers().keySet() : r.getCacheDistributionAdvisor().adviseInitializedReplicates(); if (replicates.isEmpty()) {
cacheDistributionAdvisor.adviseInitializedPersistentMembers(); if (onlineMembers != null) { if (updateMembershipView(onlineMembers.keySet())) {