public abstract class AbstractReplicationStrategy
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
java.util.Map<java.lang.String,java.lang.String> |
configOptions |
protected java.lang.String |
keyspaceName |
IEndpointSnitch |
snitch |
Modifier | Constructor and Description |
---|---|
protected |
AbstractReplicationStrategy(java.lang.String keyspaceName,
TokenMetadata tokenMetadata,
IEndpointSnitch snitch,
java.util.Map<java.lang.String,java.lang.String> configOptions) |
Modifier and Type | Method and Description |
---|---|
abstract EndpointsForRange |
calculateNaturalReplicas(Token searchToken,
TokenMetadata tokenMetadata)
Calculate the natural endpoints for the given token.
|
static AbstractReplicationStrategy |
createReplicationStrategy(java.lang.String keyspaceName,
java.lang.Class<? extends AbstractReplicationStrategy> strategyClass,
TokenMetadata tokenMetadata,
IEndpointSnitch snitch,
java.util.Map<java.lang.String,java.lang.String> strategyOptions) |
RangesByEndpoint |
getAddressReplicas() |
RangesAtEndpoint |
getAddressReplicas(InetAddressAndPort endpoint) |
RangesByEndpoint |
getAddressReplicas(TokenMetadata metadata) |
RangesAtEndpoint |
getAddressReplicas(TokenMetadata metadata,
InetAddressAndPort endpoint) |
EndpointsForRange |
getCachedReplicas(long ringVersion,
Token t) |
static java.lang.Class<AbstractReplicationStrategy> |
getClass(java.lang.String cls) |
Replica |
getLocalReplicaFor(Token searchPosition) |
EndpointsForRange |
getNaturalReplicas(RingPosition<?> searchPosition) |
EndpointsForToken |
getNaturalReplicasForToken(RingPosition<?> searchPosition)
get the (possibly cached) endpoints that should store the given Token.
|
RangesAtEndpoint |
getPendingAddressRanges(TokenMetadata metadata,
java.util.Collection<Token> pendingTokens,
InetAddressAndPort pendingAddress) |
RangesAtEndpoint |
getPendingAddressRanges(TokenMetadata metadata,
Token pendingToken,
InetAddressAndPort pendingAddress) |
EndpointsByRange |
getRangeAddresses(TokenMetadata metadata) |
abstract ReplicationFactor |
getReplicationFactor()
calculate the RF based on strategy_options.
|
<T> AbstractWriteResponseHandler<T> |
getWriteResponseHandler(ReplicaPlan.ForTokenWrite replicaPlan,
java.lang.Runnable callback,
WriteType writeType,
long queryStartNanoTime) |
<T> AbstractWriteResponseHandler<T> |
getWriteResponseHandler(ReplicaPlan.ForTokenWrite replicaPlan,
java.lang.Runnable callback,
WriteType writeType,
long queryStartNanoTime,
ConsistencyLevel idealConsistencyLevel) |
boolean |
hasSameSettings(AbstractReplicationStrategy other) |
boolean |
hasTransientReplicas() |
boolean |
isTokenInLocalNaturalOrPendingRange(Token token)
Check if the token is in a naturally replicated range or pending range
|
abstract void |
maybeWarnOnOptions() |
static void |
prepareReplicationStrategyOptions(java.lang.Class<? extends AbstractReplicationStrategy> strategyClass,
java.util.Map<java.lang.String,java.lang.String> strategyOptions,
java.util.Map<java.lang.String,java.lang.String> previousStrategyOptions)
Before constructing the ARS we first give it a chance to prepare the options map in any way it
would like to.
|
java.util.Collection<java.lang.String> |
recognizedOptions() |
protected void |
validateExpectedOptions() |
abstract void |
validateOptions() |
protected void |
validateReplicationFactor(java.lang.String s) |
static void |
validateReplicationStrategy(java.lang.String keyspaceName,
java.lang.Class<? extends AbstractReplicationStrategy> strategyClass,
TokenMetadata tokenMetadata,
IEndpointSnitch snitch,
java.util.Map<java.lang.String,java.lang.String> strategyOptions) |
public final java.util.Map<java.lang.String,java.lang.String> configOptions
protected final java.lang.String keyspaceName
public IEndpointSnitch snitch
protected AbstractReplicationStrategy(java.lang.String keyspaceName, TokenMetadata tokenMetadata, IEndpointSnitch snitch, java.util.Map<java.lang.String,java.lang.String> configOptions)
public EndpointsForRange getCachedReplicas(long ringVersion, Token t)
public EndpointsForToken getNaturalReplicasForToken(RingPosition<?> searchPosition)
searchPosition
- the position the natural endpoints are requested forpublic EndpointsForRange getNaturalReplicas(RingPosition<?> searchPosition)
public boolean isTokenInLocalNaturalOrPendingRange(Token token)
token
- the position to checkpublic abstract EndpointsForRange calculateNaturalReplicas(Token searchToken, TokenMetadata tokenMetadata)
StorageService.getPrimaryRangesForEndpoint(String, InetAddressAndPort)
which is in turn relied on by various components like repair and size estimate calculations.tokenMetadata
- the token metadata used to find the searchToken, e.g. contains token to endpoint
mapping informationsearchToken
- the token to find the natural endpoints forgetNaturalReplicasForToken(org.apache.cassandra.dht.RingPosition)
public <T> AbstractWriteResponseHandler<T> getWriteResponseHandler(ReplicaPlan.ForTokenWrite replicaPlan, java.lang.Runnable callback, WriteType writeType, long queryStartNanoTime)
public <T> AbstractWriteResponseHandler<T> getWriteResponseHandler(ReplicaPlan.ForTokenWrite replicaPlan, java.lang.Runnable callback, WriteType writeType, long queryStartNanoTime, ConsistencyLevel idealConsistencyLevel)
public abstract ReplicationFactor getReplicationFactor()
public boolean hasTransientReplicas()
public RangesByEndpoint getAddressReplicas(TokenMetadata metadata)
public RangesAtEndpoint getAddressReplicas(TokenMetadata metadata, InetAddressAndPort endpoint)
public EndpointsByRange getRangeAddresses(TokenMetadata metadata)
public RangesByEndpoint getAddressReplicas()
public RangesAtEndpoint getAddressReplicas(InetAddressAndPort endpoint)
public RangesAtEndpoint getPendingAddressRanges(TokenMetadata metadata, Token pendingToken, InetAddressAndPort pendingAddress)
public RangesAtEndpoint getPendingAddressRanges(TokenMetadata metadata, java.util.Collection<Token> pendingTokens, InetAddressAndPort pendingAddress)
public abstract void validateOptions() throws ConfigurationException
ConfigurationException
public abstract void maybeWarnOnOptions()
public java.util.Collection<java.lang.String> recognizedOptions()
public static AbstractReplicationStrategy createReplicationStrategy(java.lang.String keyspaceName, java.lang.Class<? extends AbstractReplicationStrategy> strategyClass, TokenMetadata tokenMetadata, IEndpointSnitch snitch, java.util.Map<java.lang.String,java.lang.String> strategyOptions)
public static void prepareReplicationStrategyOptions(java.lang.Class<? extends AbstractReplicationStrategy> strategyClass, java.util.Map<java.lang.String,java.lang.String> strategyOptions, java.util.Map<java.lang.String,java.lang.String> previousStrategyOptions)
ReplicationParams
(and should probably stay that way so we don't start having bugs related to ReplicationParams being mutable).
Instead ARS classes get a static hook here via the prepareOptions(Map, Map) method to mutate the user input
before it becomes an immutable part of the ReplicationParams.strategyClass
- The class to call prepareOptions onstrategyOptions
- The proposed strategy options that will be potentially mutated by the prepareOptions
method.previousStrategyOptions
- In the case of an ALTER statement, the previous strategy options of this class.
This map cannot be mutated.public static void validateReplicationStrategy(java.lang.String keyspaceName, java.lang.Class<? extends AbstractReplicationStrategy> strategyClass, TokenMetadata tokenMetadata, IEndpointSnitch snitch, java.util.Map<java.lang.String,java.lang.String> strategyOptions) throws ConfigurationException
ConfigurationException
public static java.lang.Class<AbstractReplicationStrategy> getClass(java.lang.String cls) throws ConfigurationException
ConfigurationException
public boolean hasSameSettings(AbstractReplicationStrategy other)
protected void validateReplicationFactor(java.lang.String s) throws ConfigurationException
ConfigurationException
protected void validateExpectedOptions() throws ConfigurationException
ConfigurationException
Copyright © 2009- The Apache Software Foundation