org.apache.cassandra.locator
Class AbstractReplicationStrategy

java.lang.Object
  extended by org.apache.cassandra.locator.AbstractReplicationStrategy
Direct Known Subclasses:
LocalStrategy, NetworkTopologyStrategy, OldNetworkTopologyStrategy, SimpleStrategy

public abstract class AbstractReplicationStrategy
extends java.lang.Object

A abstract parent for all replication strategies.


Field Summary
 java.util.Map<java.lang.String,java.lang.String> configOptions
           
 IEndpointSnitch snitch
           
 java.lang.String table
           
 
Method Summary
 void cacheEndpoint(Token t, java.util.ArrayList<java.net.InetAddress> addr)
           
abstract  java.util.List<java.net.InetAddress> calculateNaturalEndpoints(Token searchToken, TokenMetadata tokenMetadata)
          calculate the natural endpoints for the given token
 void clearEndpointCache()
           
static AbstractReplicationStrategy createReplicationStrategy(java.lang.String table, java.lang.Class<? extends AbstractReplicationStrategy> strategyClass, TokenMetadata tokenMetadata, IEndpointSnitch snitch, java.util.Map<java.lang.String,java.lang.String> strategyOptions)
           
static AbstractReplicationStrategy createReplicationStrategy(java.lang.String table, java.lang.String strategyClassName, TokenMetadata tokenMetadata, IEndpointSnitch snitch, java.util.Map<java.lang.String,java.lang.String> strategyOptions)
           
 com.google.common.collect.Multimap<java.net.InetAddress,Range<Token>> getAddressRanges()
           
 com.google.common.collect.Multimap<java.net.InetAddress,Range<Token>> getAddressRanges(TokenMetadata metadata)
           
 java.util.ArrayList<java.net.InetAddress> getCachedEndpoints(Token t)
           
static java.lang.Class<AbstractReplicationStrategy> getClass(java.lang.String cls)
           
 java.util.ArrayList<java.net.InetAddress> getNaturalEndpoints(RingPosition searchPosition)
          get the (possibly cached) endpoints that should store the given Token.
 java.util.Collection<Range<Token>> getPendingAddressRanges(TokenMetadata metadata, java.util.Collection<Token> pendingTokens, java.net.InetAddress pendingAddress)
           
 java.util.Collection<Range<Token>> getPendingAddressRanges(TokenMetadata metadata, Token pendingToken, java.net.InetAddress pendingAddress)
           
 com.google.common.collect.Multimap<Range<Token>,java.net.InetAddress> getRangeAddresses(TokenMetadata metadata)
           
abstract  int getReplicationFactor()
          calculate the RF based on strategy_options.
 AbstractWriteResponseHandler getWriteResponseHandler(java.util.Collection<java.net.InetAddress> naturalEndpoints, java.util.Collection<java.net.InetAddress> pendingEndpoints, ConsistencyLevel consistency_level, java.lang.Runnable callback, WriteType writeType)
           
 void invalidateCachedTokenEndpointValues()
           
abstract  void validateOptions()
           
protected  void validateReplicationFactor(java.lang.String rf)
           
protected  void warnOnUnexpectedOptions(java.util.Collection<java.lang.String> expectedOptions)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

table

public final java.lang.String table

configOptions

public final java.util.Map<java.lang.String,java.lang.String> configOptions

snitch

public IEndpointSnitch snitch
Method Detail

getCachedEndpoints

public java.util.ArrayList<java.net.InetAddress> getCachedEndpoints(Token t)

cacheEndpoint

public void cacheEndpoint(Token t,
                          java.util.ArrayList<java.net.InetAddress> addr)

clearEndpointCache

public void clearEndpointCache()

getNaturalEndpoints

public java.util.ArrayList<java.net.InetAddress> getNaturalEndpoints(RingPosition searchPosition)
get the (possibly cached) endpoints that should store the given Token. Note that while the endpoints are conceptually a Set (no duplicates will be included), we return a List to avoid an extra allocation when sorting by proximity later

Parameters:
searchPosition - the position the natural endpoints are requested for
Returns:
a copy of the natural endpoints for the given token

calculateNaturalEndpoints

public abstract java.util.List<java.net.InetAddress> calculateNaturalEndpoints(Token searchToken,
                                                                               TokenMetadata tokenMetadata)
calculate the natural endpoints for the given token

Parameters:
searchToken - the token the natural endpoints are requested for
Returns:
a copy of the natural endpoints for the given token
See Also:
getNaturalEndpoints(org.apache.cassandra.dht.RingPosition)

getWriteResponseHandler

public AbstractWriteResponseHandler getWriteResponseHandler(java.util.Collection<java.net.InetAddress> naturalEndpoints,
                                                            java.util.Collection<java.net.InetAddress> pendingEndpoints,
                                                            ConsistencyLevel consistency_level,
                                                            java.lang.Runnable callback,
                                                            WriteType writeType)

getReplicationFactor

public abstract int getReplicationFactor()
calculate the RF based on strategy_options. When overwriting, ensure that this get() is FAST, as this is called often.

Returns:
the replication factor

getAddressRanges

public com.google.common.collect.Multimap<java.net.InetAddress,Range<Token>> getAddressRanges(TokenMetadata metadata)

getRangeAddresses

public com.google.common.collect.Multimap<Range<Token>,java.net.InetAddress> getRangeAddresses(TokenMetadata metadata)

getAddressRanges

public com.google.common.collect.Multimap<java.net.InetAddress,Range<Token>> getAddressRanges()

getPendingAddressRanges

public java.util.Collection<Range<Token>> getPendingAddressRanges(TokenMetadata metadata,
                                                                  Token pendingToken,
                                                                  java.net.InetAddress pendingAddress)

getPendingAddressRanges

public java.util.Collection<Range<Token>> getPendingAddressRanges(TokenMetadata metadata,
                                                                  java.util.Collection<Token> pendingTokens,
                                                                  java.net.InetAddress pendingAddress)

invalidateCachedTokenEndpointValues

public void invalidateCachedTokenEndpointValues()

validateOptions

public abstract void validateOptions()
                              throws ConfigurationException
Throws:
ConfigurationException

createReplicationStrategy

public static AbstractReplicationStrategy createReplicationStrategy(java.lang.String table,
                                                                    java.lang.Class<? extends AbstractReplicationStrategy> strategyClass,
                                                                    TokenMetadata tokenMetadata,
                                                                    IEndpointSnitch snitch,
                                                                    java.util.Map<java.lang.String,java.lang.String> strategyOptions)
                                                             throws ConfigurationException
Throws:
ConfigurationException

createReplicationStrategy

public static AbstractReplicationStrategy createReplicationStrategy(java.lang.String table,
                                                                    java.lang.String strategyClassName,
                                                                    TokenMetadata tokenMetadata,
                                                                    IEndpointSnitch snitch,
                                                                    java.util.Map<java.lang.String,java.lang.String> strategyOptions)
                                                             throws ConfigurationException
Throws:
ConfigurationException

getClass

public static java.lang.Class<AbstractReplicationStrategy> getClass(java.lang.String cls)
                                                             throws ConfigurationException
Throws:
ConfigurationException

validateReplicationFactor

protected void validateReplicationFactor(java.lang.String rf)
                                  throws ConfigurationException
Throws:
ConfigurationException

warnOnUnexpectedOptions

protected void warnOnUnexpectedOptions(java.util.Collection<java.lang.String> expectedOptions)


Copyright © 2012 The Apache Software Foundation