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

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

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

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.partitionhandling.impl.PartitionHandlingManager;
import org.infinispan.remoting.transport.Address;

/**
 * Runs on every node and handles the communication with the {@link ClusterTopologyManager}.
 *
 * @author Dan Berindei
 * @since 5.2
 */
@Scope(Scopes.GLOBAL)
public interface LocalTopologyManager {

   /**
    * Forwards the join request to the coordinator.
    * @return The current consistent hash.
    */
   CompletionStage join(String cacheName, CacheJoinInfo joinInfo, CacheTopologyHandler stm, PartitionHandlingManager phm) throws Exception;

   /**
    * Forwards the leave request to the coordinator.
    */
   void leave(String cacheName, long timeout);

   /**
    * Confirm that the local cache {@code cacheName} has finished receiving the new data for topology
    * {@code topologyId}.
    *
    * 

The coordinator can change during the state transfer, so we make the rebalance RPC async * and we send the response as a different command. * @param cacheName the name of the cache * @param topologyId the current topology id of the node at the time the rebalance is completed. * @param rebalanceId the id of the current rebalance * @param throwable {@code null} unless local rebalance ended because of an error. */ void confirmRebalancePhase(String cacheName, int topologyId, int rebalanceId, Throwable throwable); /** * Recovers the current topology information for all running caches and returns it to the coordinator. * * @param viewId The coordinator's view id */ // TODO Add a new class to hold the CacheJoinInfo and the CacheTopology CompletionStage handleStatusRequest(int viewId); /** * Updates the current and/or pending consistent hash, without transferring any state. */ CompletionStage handleTopologyUpdate(String cacheName, CacheTopology cacheTopology, AvailabilityMode availabilityMode, int viewId, Address sender); /** * Update the stable cache topology. *

* Mostly needed for backup, so that a new coordinator can recover the stable topology of the cluster. */ CompletionStage handleStableTopologyUpdate(String cacheName, CacheTopology cacheTopology, final Address sender, int viewId); /** * Performs the state transfer. */ CompletionStage handleRebalance(String cacheName, CacheTopology cacheTopology, int viewId, Address sender); /** * @return the current topology for a cache. */ CacheTopology getCacheTopology(String cacheName); /** * @return the last stable topology for a cache. */ CacheTopology getStableCacheTopology(String cacheName); /** * Checks whether rebalancing is enabled for the entire cluster. */ boolean isRebalancingEnabled() throws Exception; /** * Checks whether rebalancing is enabled for the specified cache. */ boolean isCacheRebalancingEnabled(String cacheName) throws Exception; /** * Enable or disable rebalancing in the entire cluster. */ void setRebalancingEnabled(boolean enabled) throws Exception; /** * Enable or disable rebalancing for the specified cache. */ void setCacheRebalancingEnabled(String cacheName, boolean enabled) throws Exception; /** * Retrieve the rebalancing status for the specified cache */ RebalancingStatus getRebalancingStatus(String cacheName) throws Exception; /** * Retrieves the availability state of a cache. */ AvailabilityMode getCacheAvailability(String cacheName); /** * Updates the availability state of a cache (for the entire cluster). */ void setCacheAvailability(String cacheName, AvailabilityMode availabilityMode) throws Exception; /** * Returns the local UUID of this node. If global state persistence is enabled, this UUID will be saved and reused * across restarts */ PersistentUUID getPersistentUUID(); /** * Initiates a cluster-wide cache shutdown for the specified cache */ void cacheShutdown(String name); /** * Handles the local operations related to gracefully shutting down a cache */ CompletionStage handleCacheShutdown(String cacheName); /** * Returns a {@link CompletionStage} that completes when the cache with the name {@code cacheName} has a * stable topology. Returns null if the cache does not exist. */ CompletionStage stableTopologyCompletion(String cacheName); /** * Asserts the cache with the given name has a stable topology installed. * * @param cacheName: The cache name to search. * @throws MissingMembersException: Thrown when the cache does not have a stable topology. */ default void assertTopologyStable(String cacheName) { } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy