Interface AvailabilityStrategy

All Known Implementing Classes:
PreferAvailabilityStrategy, PreferConsistencyStrategy

public interface AvailabilityStrategy
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 AvailabilityStrategyContext methods. The strategy can also queue actions until the current rebalance ends, and execute them on onRebalanceEnd(AvailabilityStrategyContext). Method invocations are synchronized, so it's not possible to have concurrent invocations.
Since:
7.0
Author:
Mircea Markus, Dan Berindei
  • Method Details

    • ownersConsistentHash

      static ConsistentHash ownersConsistentHash(CacheTopology topology, ConsistentHashFactory chFactory)
      Compute the read consistent hash for a topology with a null union consistent hash.
    • onJoin

      void onJoin(AvailabilityStrategyContext context, Address joiner)
      Called when a node joins.
    • onGracefulLeave

      void onGracefulLeave(AvailabilityStrategyContext context, Address leaver)
      Called when a node leaves gracefully.
    • onClusterViewChange

      void onClusterViewChange(AvailabilityStrategyContext context, List<Address> clusterMembers)
      Called when the cluster view changed (e.g. because one or more nodes left abruptly).
    • onPartitionMerge

      void onPartitionMerge(AvailabilityStrategyContext context, Map<Address, CacheStatusResponse> statusResponseMap)
      Called when two or more partitions merge, to compute the stable and current cache topologies for the merged cluster.
    • onRebalanceEnd

      void onRebalanceEnd(AvailabilityStrategyContext context)
      Called when a rebalance ends. Can be used to re-assess the state of the cache and apply pending changes.
    • onManualAvailabilityChange

      void onManualAvailabilityChange(AvailabilityStrategyContext context, AvailabilityMode newAvailabilityMode)
      Called when the administrator manually changes the availability status.
    • isDataLost

      static <T> boolean isDataLost(ConsistentHash consistentHash, Collection<T> members, Function<Address,T> addressMapper)
      Checks that all segments have, at least, one owner online to ensure data availability.
      Type Parameters:
      T - The type of the members collection.
      Parameters:
      consistentHash - The ConsistentHash with the ownership.
      members - The current online members.
      addressMapper - A Function to map the Address to a different type, matching the members collection type.
      Returns:
      true if some data is lost and false otherwise.
    • isDataLost

      static boolean isDataLost(ConsistentHash consistentHash, Collection<Address> members)
      Checks that all segments have, at least, one owner online to ensure data availability.

      This is a syntactic sugar for isDataLost(ConsistentHash, Collection, Function) when the type is an Address.

      Parameters:
      consistentHash - The ConsistentHash with the ownership.
      members - The current online members.
      Returns:
      true if some data is lost and false otherwise.