Infinispan Distribution 5.2.6.Final-redhat-2

org.infinispan.distribution.ch
Interface ConsistentHashFactory<CH extends ConsistentHash>

All Known Implementing Classes:
DefaultConsistentHashFactory, ReplicatedConsistentHashFactory, SyncConsistentHashFactory, TopologyAwareConsistentHashFactory, TopologyAwareSyncConsistentHashFactory

public interface ConsistentHashFactory<CH extends ConsistentHash>

Factory for ConsistentHash instances.

Since:
5.2
Author:
Dan Berindei
See Also:
Non-BlockingStateTransferV2

Method Summary
 CH create(Hash hashFunction, int numOwners, int numSegments, List<Address> members)
          Create a new consistent hash instance.
 CH rebalance(CH baseCH)
          Create a new consistent hash instance, based on an existing instance, but "balanced" according to the implementation's rules.
 CH union(CH ch1, CH ch2)
          Creates a union of two compatible ConsistentHashes (use the same hashing function and have the same configuration parameters).
 CH updateMembers(CH baseCH, List<Address> newMembers)
          Create a new consistent hash instance, based on an existing instance, but with a new list of members.
 

Method Detail

create

CH create(Hash hashFunction,
          int numOwners,
          int numSegments,
          List<Address> members)
Create a new consistent hash instance.

Parameters:
hashFunction - The hash function to use on top of the keys' own hashCode() implementation.
numOwners - The ideal number of owners for each key. The created consistent hash can have more or less owners, but each key will have at least one owner.
numSegments - Number of hash-space segments. The implementation may round up the number of segments for performance, or may ignore the parameter altogether.
members - A list of addresses representing the new cache members.

updateMembers

CH updateMembers(CH baseCH,
                 List<Address> newMembers)
Create a new consistent hash instance, based on an existing instance, but with a new list of members.

This method will not assign any new owners, so it will not require a state transfer. The only exception is if a segment doesn't have any owners in the new members list - but there isn't anyone to transfer that segment from, so that won't require a state transfer either.

Parameters:
baseCH - An existing consistent hash instance, should not be null
newMembers - A list of addresses representing the new cache members.
Returns:
A new ConsistentHash instance, or baseCH if the existing instance does not need any changes.

rebalance

CH rebalance(CH baseCH)
Create a new consistent hash instance, based on an existing instance, but "balanced" according to the implementation's rules.

It must be possible to switch from the "intermediary" consistent hash that includes the old owners to the new consistent hash without any state transfer.

rebalance(rebalance(ch)) must be equivalent to rebalance(ch).

Parameters:
baseCH - An existing consistent hash instance, should not be null
Returns:
A new ConsistentHash instance, or baseCH if the existing instance does not need any changes.

union

CH union(CH ch1,
         CH ch2)
Creates a union of two compatible ConsistentHashes (use the same hashing function and have the same configuration parameters).


Infinispan Distribution 5.2.6.Final-redhat-2

Copyright © 2013 JBoss, a division of Red Hat. All Rights Reserved.