org.infinispan.distribution
Interface DistributionManager

All Known Implementing Classes:
DistributionManagerImpl

public interface DistributionManager

A component that manages the distribution of elements across a cache cluster

Since:
4.0
Author:
Manik Surtani, Mircea.Markus@jboss.com, Vladimir Blagojevic

Method Summary
 Collection<Address> getAffectedNodes(Collection<Object> affectedKeys)
          A helper method that retrieves a list of nodes affected by operations on a set of keys.
 ConsistentHash getConsistentHash()
          Retrieves the consistent hash instance currently in use, an instance of the configured ConsistentHash class (which defaults to DefaultConsistentHash.
 DataLocality getLocality(Object key)
          Returns the data locality characteristics of a given key.
 Address getPrimaryLocation(Object key)
          Returns the first Address containing the key.
 boolean isAffectedByRehash(Object key)
          Tests whether a given key is affected by a rehash that may be in progress.
 boolean isJoinComplete()
          Tests whether the current instance has completed joining the cluster
 boolean isLocal(Object key)
          Deprecated.  
 boolean isRehashInProgress()
          Tests whether a rehash is in progress
 List<Address> locate(Object key)
          Locates a key in a cluster.
 Map<Object,List<Address>> locateAll(Collection<Object> keys)
          Locates a list of keys in a cluster.
 Map<Object,List<Address>> locateAll(Collection<Object> keys, int numOwners)
          Same as locateAll(java.util.Collection), but the list of addresses only contains numOwners owners.
 InternalCacheEntry retrieveFromRemoteSource(Object key, InvocationContext ctx, boolean acquireRemoteLock)
          Retrieves a cache entry from a remote source.
 ConsistentHash setConsistentHash(ConsistentHash consistentHash)
          Sets the consistent hash implementation in use.
 void transformForL1(CacheEntry entry)
          Transforms a cache entry so it is marked for L1 rather than the primary cache data structure.
 

Method Detail

isLocal

@Deprecated
boolean isLocal(Object key)
Deprecated. 

Checks whether a key is mapped to the local node.

Do not use! This API is buggy in that it doesn't take into account changing ownerships and can introduce race conditions if results are relied upon. Please use getLocality(Object) instead.

Parameters:
key - key to test
Returns:
true if local, false otherwise.

getLocality

DataLocality getLocality(Object key)
Returns the data locality characteristics of a given key.

Parameters:
key - key to test
Returns:
a DataLocality that allows you to test whether a key is mapped to the local node or not, and the degree of certainty of such a result.

locate

List<Address> locate(Object key)
Locates a key in a cluster. The returned addresses may not be owners of the keys if a rehash happens to be in progress or is pending, so when querying these servers, invalid responses should be checked for and the next address checked accordingly.

Parameters:
key - key to test
Returns:
a list of addresses where the key may reside

getPrimaryLocation

Address getPrimaryLocation(Object key)
Returns the first Address containing the key. Equivalent to returning the first element of locate(Object)

Parameters:
key - key to test
Returns:
the first address on which the key may reside

locateAll

Map<Object,List<Address>> locateAll(Collection<Object> keys)
Locates a list of keys in a cluster. Like locate(Object) the returned addresses may not be owners of the keys if a rehash happens to be in progress or is pending, so when querying these servers, invalid responses should be checked for and the next address checked accordingly.

Parameters:
keys - list of keys to test
Returns:
a list of addresses where the key may reside

locateAll

Map<Object,List<Address>> locateAll(Collection<Object> keys,
                                    int numOwners)
Same as locateAll(java.util.Collection), but the list of addresses only contains numOwners owners.


transformForL1

void transformForL1(CacheEntry entry)
Transforms a cache entry so it is marked for L1 rather than the primary cache data structure. This should be done if it is deemed that the entry is targeted for L1 storage rather than storage in the primary data container.

Parameters:
entry - entry to transform

retrieveFromRemoteSource

InternalCacheEntry retrieveFromRemoteSource(Object key,
                                            InvocationContext ctx,
                                            boolean acquireRemoteLock)
                                            throws Exception
Retrieves a cache entry from a remote source. Would typically involve an RPC call using a ClusteredGetCommand and some form of quorum of responses if the responses returned are inconsistent - often the case if there is a rehash in progress, involving nodes that the key maps to.

Parameters:
key - key to look up
Returns:
an internal cache entry, or null if it cannot be located
Throws:
Exception

getConsistentHash

ConsistentHash getConsistentHash()
Retrieves the consistent hash instance currently in use, an instance of the configured ConsistentHash class (which defaults to DefaultConsistentHash.

Returns:
a ConsistentHash instance

setConsistentHash

ConsistentHash setConsistentHash(ConsistentHash consistentHash)
Sets the consistent hash implementation in use.

Parameters:
consistentHash - consistent hash to set to
Returns:
previous consistent hash, the last one for which rehash completed

isAffectedByRehash

boolean isAffectedByRehash(Object key)
Tests whether a given key is affected by a rehash that may be in progress. If no rehash is in progress, this method returns false. Helps determine whether additional steps are necessary in handling an operation with a given key.

Parameters:
key - key to test
Returns:
whether a key is affected by a rehash

isRehashInProgress

boolean isRehashInProgress()
Tests whether a rehash is in progress

Returns:
true if a rehash is in progress, false otherwise

isJoinComplete

boolean isJoinComplete()
Tests whether the current instance has completed joining the cluster

Returns:
true if join is in progress, false otherwise

getAffectedNodes

Collection<Address> getAffectedNodes(Collection<Object> affectedKeys)
A helper method that retrieves a list of nodes affected by operations on a set of keys. This helper will in turn call locateAll(java.util.Collection) and then combine the result addresses.

Parameters:
affectedKeys - keys to locate
Returns:
a list of addresses which represent a combined set of all addresses affected by the set of keys.

-->

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