@TopologyChanged public void topologyChanged(TopologyChangedEvent<?, ?> event) { if (event.isPre()) return; int viewId = event.getCache().getCacheManager().getTransport().getViewId(); if (!this.listeners.isEmpty()) { Address localAddress = event.getCache().getCacheManager().getAddress(); Membership previousMembership = new CacheMembership(localAddress, event.getWriteConsistentHashAtStart(), this); Membership membership = new CacheMembership(localAddress, event.getWriteConsistentHashAtEnd(), this); Boolean status = this.views.get(viewId); boolean merged = (status != null) ? status.booleanValue() : false; for (Map.Entry<GroupListener, ExecutorService> entry : this.listeners.entrySet()) { GroupListener listener = entry.getKey(); ExecutorService executor = entry.getValue(); try { executor.submit(() -> { try { listener.membershipChanged(previousMembership, membership, merged); } catch (Throwable e) { ClusteringServerLogger.ROOT_LOGGER.warn(e.getLocalizedMessage(), e); } }); } catch (RejectedExecutionException e) { // Listener was unregistered } } } // Purge obsolete views this.views.headMap(viewId).clear(); }
@TopologyChanged public void topologyChanged(TopologyChangedEvent<Address, Map.Entry<K, V>> event) { if (event.isPre()) return;
@org.infinispan.notifications.cachelistener.annotation.TopologyChanged public void handle(TopologyChangedEvent e) { handler.handle(e); } }
@TopologyChanged public void topologyChanged(TopologyChangedEvent event) { topologyEvents.add(event); } }
@TopologyChanged public void topologyChanged(TopologyChangedEvent event) { topologyEvents.add(event); } }
@TopologyChanged public void onTopologyChange(TopologyChangedEvent event) { latch.countDown(); } }
@TopologyChanged public void onTopologyChange(TopologyChangedEvent event) { latch.countDown(); }
@Override @TopologyChanged public void fire(TopologyChangedEvent<K, V> payload) { super.fire(new CDITopologyChangedEvent(payload)); } }
@Override @TopologyChanged public void fire(TopologyChangedEvent<K, V> payload) { super.fire(new CDITopologyChangedEvent(payload)); } }
@TopologyChanged @SuppressWarnings("unused") public void onTopologyChange(TopologyChangedEvent<?, ?> tce) { if (initialized) { logger.debugf("Updating shard allocation"); this.shardDistribution = this.buildShardDistribution(distributionManager.getWriteConsistentHash()); } }
@TopologyChanged @SuppressWarnings("unused") public void onTopologyChange(TopologyChangedEvent<?, ?> tce) { if (initialized) { logger.debugf("Updating shard allocation"); this.shardDistribution = this.buildShardDistribution(distributionManager.getWriteConsistentHash()); } }
@TopologyChanged public void topologyChanged(TopologyChangedEvent<?, ?> event) { if (event.isPre()) return; int viewId = event.getCache().getCacheManager().getTransport().getViewId(); if (!this.listeners.isEmpty()) { Address localAddress = event.getCache().getCacheManager().getAddress(); Membership previousMembership = new CacheMembership(localAddress, event.getWriteConsistentHashAtStart(), this); Membership membership = new CacheMembership(localAddress, event.getWriteConsistentHashAtEnd(), this); Boolean status = this.views.get(viewId); boolean merged = (status != null) ? status.booleanValue() : false; for (Map.Entry<GroupListener, ExecutorService> entry : this.listeners.entrySet()) { GroupListener listener = entry.getKey(); ExecutorService executor = entry.getValue(); try { executor.submit(() -> { try { listener.membershipChanged(previousMembership, membership, merged); } catch (Throwable e) { ClusteringServerLogger.ROOT_LOGGER.warn(e.getLocalizedMessage(), e); } }); } catch (RejectedExecutionException e) { // Listener was unregistered } } } // Purge obsolete views this.views.headMap(viewId).clear(); }
@TopologyChanged public void topologyChanged(TopologyChangedEvent<Address, ServerAddress> event) { boolean success = false; while (!success && !distributedExecutorService.isShutdown() && addressCache.getStatus().allowInvocations()) { try { List<CompletableFuture<Boolean>> futures = distributedExecutorService.submitEverywhere( new CheckAddressTask(clusterAddress)); // No need for a timeout here, the distributed executor has a default task timeout AtomicBoolean result = new AtomicBoolean(true); futures.forEach(f -> { try { if (!f.get()) { result.set(false); } } catch (InterruptedException | ExecutionException e) { throw new CacheException(e); } }); if (!result.get()) { log.debugf("Re-adding %s to the topology cache", clusterAddress); addressCache.putAsync(clusterAddress, address); } success = true; } catch (Throwable e) { log.debug("Error re-adding address to topology cache, retrying", e); } } } }
@TopologyChanged @SuppressWarnings("unused") public void onTopologyChange(TopologyChangedEvent<?, ?> tce) { log.debugf("Topology changed notification for %s: %s", this.getIndexName(), tce); boolean ownershipChanged = shardAllocatorManager.isOwnershipChanged(tce, this.getIndexName()); log.debugf("Ownership changed? %s,", ownershipChanged); if (ownershipChanged) { this.handleOwnershipLost(); } }
@TopologyChanged @SuppressWarnings("unused") public void onTopologyChange(TopologyChangedEvent<?, ?> tce) { log.debugf("Topology changed notification for %s: %s", this.getIndexName(), tce); boolean ownershipChanged = shardAllocatorManager.isOwnershipChanged(tce, this.getIndexName()); log.debugf("Ownership changed? %s,", ownershipChanged); if (ownershipChanged) { this.handleOwnershipLost(); } }
@TopologyChanged public void observeTopologyChange(TopologyChangedEvent<String, String> event) { if (event.isPre()) return; log.infof("Cache %s topology changed, new membership is %s", event.getCache().getName(), event.getConsistentHashAtEnd().getMembers()); } }
@TopologyChanged public void topologyChanged(TopologyChangedEvent<Address, Map.Entry<K, V>> event) { if (event.isPre()) return;
@TopologyChanged public void onTopologyChange(TopologyChangedEvent e) throws InterruptedException { if (e.isPre()) { log.tracef("Blocking topology %d", e.getNewTopologyId()); broken = !preLatch.await(10, TimeUnit.SECONDS); preLatch.close(); } else { log.tracef("Signalling topology %d finished installing", e.getNewTopologyId()); postLatch.open(); } }