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

org.infinispan.partitionhandling.impl.AvailabilityStrategy Maven / Gradle / Ivy

There is a newer version: 9.1.7.Final
Show newest version
package org.infinispan.partitionhandling.impl;

import org.infinispan.partitionhandling.AvailabilityMode;
import org.infinispan.remoting.transport.Address;
import org.infinispan.topology.CacheStatusResponse;

import java.util.Collection;
import java.util.List;

/**
 * Implementations decide what to do when the cache membership changes, either because new nodes joined, nodes left,
 * or there was a merge. The decision is then applied by calling one of the {@link AvailabilityStrategyContext} methods.
 *
 * The strategy can also queue actions until the current rebalance ends, and execute them on
 * {@link #onRebalanceEnd(AvailabilityStrategyContext)}.
 *
 * Method invocations are synchronized, so it's not possible to have concurrent invocations.
 *
 * @author Mircea Markus
 * @author Dan Berindei
 * @since 7.0
 */
public interface AvailabilityStrategy {
   /**
    * Called when a node joins.
    */
   void onJoin(AvailabilityStrategyContext context, Address joiner);

   /**
    * Called when a node leaves gracefully.
    */
   void onGracefulLeave(AvailabilityStrategyContext context, Address leaver);

   /**
    * Called when the cluster view changed (e.g. because one or more nodes left abruptly).
    */
   void onClusterViewChange(AvailabilityStrategyContext context, List
clusterMembers); /** * Called when two or more partitions merge, to compute the stable and current cache topologies for the merged * cluster. */ void onPartitionMerge(AvailabilityStrategyContext context, Collection statusResponses); /** * Called when a rebalance ends. Can be used to re-assess the state of the cache and apply pending changes. */ void onRebalanceEnd(AvailabilityStrategyContext context); /** * Called when the administrator manually changes the availability status. */ void onManualAvailabilityChange(AvailabilityStrategyContext context, AvailabilityMode newAvailabilityMode); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy