All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.infinispan.topology.ClusterTopologyManager Maven / Gradle / Ivy

There is a newer version: 15.1.0.Dev04
Show newest version
package org.infinispan.topology;

import java.util.List;
import java.util.concurrent.CompletionStage;

import org.infinispan.factories.scopes.Scope;
import org.infinispan.factories.scopes.Scopes;
import org.infinispan.partitionhandling.AvailabilityMode;
import org.infinispan.remoting.transport.Address;

/**
 * Maintains the topology for all the caches in the cluster.
 *
 * @author Dan Berindei
 * @since 5.2
 */
@Scope(Scopes.GLOBAL)
public interface ClusterTopologyManager {

   enum ClusterManagerStatus {
      INITIALIZING,
      REGULAR_MEMBER,
      COORDINATOR,
      RECOVERING_CLUSTER,
      STOPPING;

      boolean isRunning() {
         return this != STOPPING;
      }

      boolean isCoordinator() {
         return this == COORDINATOR || this == RECOVERING_CLUSTER;
      }
   }

   /**
    * Returns the list of nodes that joined the cache with the given {@code cacheName} if the current
    * node is the coordinator. If the node is not the coordinator, the method returns null.
    */
   List
currentJoiners(String cacheName); /** * Signals that a new member is joining the cache. * * The returned {@code CacheStatusResponse.cacheTopology} is the current cache topology before the node joined. * If the node is the first to join the cache, the returned topology does include the joiner, * and it is never {@code null}. */ CompletionStage handleJoin(String cacheName, Address joiner, CacheJoinInfo joinInfo, int viewId) throws Exception; /** * Signals that a member is leaving the cache. */ CompletionStage handleLeave(String cacheName, Address leaver, int viewId) throws Exception; /** * Marks the rebalance as complete on the sender. */ CompletionStage handleRebalancePhaseConfirm(String cacheName, Address node, int topologyId, Throwable throwable, int viewId) throws Exception; boolean isRebalancingEnabled(); /** * Returns whether rebalancing is enabled or disabled for this container. */ boolean isRebalancingEnabled(String cacheName); /** * Globally enables or disables whether automatic rebalancing should occur. */ CompletionStage setRebalancingEnabled(boolean enabled); /** * Enables or disables rebalancing for the specified cache */ CompletionStage setRebalancingEnabled(String cacheName, boolean enabled); /** * Retrieves the rebalancing status of a cache */ RebalancingStatus getRebalancingStatus(String cacheName); CompletionStage forceRebalance(String cacheName); CompletionStage forceAvailabilityMode(String cacheName, AvailabilityMode availabilityMode); CompletionStage handleShutdownRequest(String cacheName) throws Exception; boolean useCurrentTopologyAsStable(String cacheName, boolean force); /** * Sets the id of the initial topology in given cache. This is necessary when using entry versions * that contain topology id; had we started with topology id 1, newer versions would not be recognized properly. */ void setInitialCacheTopologyId(String cacheName, int topologyId); ClusterManagerStatus getStatus(); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy