@Merged @ViewChanged public void handleViewChange(ViewChangedEvent e) { if (trace) log.tracef( "New view received: %d, type=%s, members: %s. Starting the RebalanceTask", e.getViewId(), e.getType(), e.getNewMembers()); boolean rehashInterrupted = rehashInProgress; synchronized (rehashInProgressMonitor) { rehashInProgress = true; receivedRehashCompletedNotification = false; lastViewId = e.getViewId(); rehashInProgressMonitor.notifyAll(); } // make sure the pushConfirmations map has one entry for each cluster member // we will always have if (DistributionManagerImpl.this.getRpcManager().getTransport().isCoordinator()) { synchronized (pushConfirmations) { for (Address newNode : e.getNewMembers()) { if (!pushConfirmations.containsKey(newNode)) { if (trace) log.tracef("Coordinator: adding new node %s", newNode); pushConfirmations.put(newNode, -1); } } for (Address oldNode : e.getOldMembers()) { if (!e.getNewMembers().contains(oldNode)) { if (trace) log.tracef("Coordinator: removing node %s", oldNode); pushConfirmations.remove(oldNode); } } if (trace) log.tracef("Coordinator: push confirmations list updated: %s", pushConfirmations); } } RebalanceTask rebalanceTask = new RebalanceTask( rpcManager, cf, configuration, dataContainer, DistributionManagerImpl.this, icc, cacheNotifier, interceptorChain, e.getViewId(), rehashInterrupted); rehashExecutor.submit(rebalanceTask); }
@ViewChanged public void recalculateMinViewIdOnTopologyChange(ViewChangedEvent vce) { // don't do anything if this cache is not clustered - view changes are global if (clustered) { log.debugf("View changed, recalculating minViewId"); currentViewId = vce.getViewId(); calculateMinViewId(-1); } }
@ViewChanged @SuppressWarnings("unused") public void calculateRank(ViewChangedEvent e) { long rank = NumericVersionGenerator.this.calculateRank( e.getLocalAddress(), e.getNewMembers(), e.getViewId()); if (log.isTraceEnabled()) log.tracef("Calculated rank based on view %s and result was %d", e, rank); }