public class RoutingAllocation
extends java.lang.Object
RoutingAllocation
keep the state of the current allocation
of shards and holds the AllocationDeciders
which are responsible
for the current routing state.Modifier and Type | Class and Description |
---|---|
static class |
RoutingAllocation.DebugMode |
Constructor and Description |
---|
RoutingAllocation(AllocationDeciders deciders,
RoutingNodes routingNodes,
ClusterState clusterState,
ClusterInfo clusterInfo,
long currentNanoTime,
boolean retryFailed)
Creates a new
RoutingAllocation |
Modifier and Type | Method and Description |
---|---|
void |
addIgnoreShardForNode(ShardId shardId,
java.lang.String nodeId) |
RoutingChangesObserver |
changes()
Returns observer to use for changes made to the routing nodes
|
ClusterInfo |
clusterInfo() |
<T extends ClusterState.Custom> |
custom(java.lang.String key) |
boolean |
debugDecision() |
void |
debugDecision(boolean debug) |
AllocationDeciders |
deciders()
Get
AllocationDeciders used for allocation |
Decision |
decision(Decision decision,
java.lang.String deciderLabel,
java.lang.String reason,
java.lang.Object... params)
Create a routing decision, including the reason if the debug flag is
turned on
|
long |
getCurrentNanoTime()
returns the nano time captured at the beginning of the allocation.
|
ImmutableOpenMap<java.lang.String,ClusterState.Custom> |
getCustoms() |
RoutingAllocation.DebugMode |
getDebugMode() |
java.util.Set<java.lang.String> |
getIgnoreNodes(ShardId shardId) |
boolean |
hasPendingAsyncFetch()
Returns
true iff the current allocation run has not processed all of the in-flight or available
shard or store fetches. |
boolean |
ignoreDisable() |
void |
ignoreDisable(boolean ignoreDisable) |
boolean |
isRetryFailed() |
MetaData |
metaData()
Get metadata of routing nodes
|
DiscoveryNodes |
nodes()
Get discovery nodes in current routing
|
RoutingNodes |
routingNodes()
Get current routing nodes
|
boolean |
routingNodesChanged()
Returns true iff changes were made to the routing nodes
|
RoutingTable |
routingTable()
Get routing table of current nodes
|
void |
setDebugMode(RoutingAllocation.DebugMode debug) |
void |
setHasPendingAsyncFetch()
Sets a flag that signals that current allocation run has not processed all of the in-flight or available shard or store fetches.
|
boolean |
shouldIgnoreShardForNode(ShardId shardId,
java.lang.String nodeId)
Returns whether the given node id should be ignored from consideration when
AllocationDeciders
is deciding whether to allocate the specified shard id to that node. |
MetaData |
updateMetaDataWithRoutingChanges(RoutingTable newRoutingTable)
Returns updated
MetaData based on the changes that were made to the routing nodes |
RestoreInProgress |
updateRestoreInfoWithRoutingChanges(RestoreInProgress restoreInProgress)
Returns updated
RestoreInProgress based on the changes that were made to the routing nodes |
public RoutingAllocation(AllocationDeciders deciders, RoutingNodes routingNodes, ClusterState clusterState, ClusterInfo clusterInfo, long currentNanoTime, boolean retryFailed)
RoutingAllocation
deciders
- AllocationDeciders
to used to make decisions for routing allocationsroutingNodes
- Routing nodes in the current clusterclusterState
- cluster state before reroutingcurrentNanoTime
- the nano time to use for all delay allocation calculation (typically System.nanoTime()
)public long getCurrentNanoTime()
public AllocationDeciders deciders()
AllocationDeciders
used for allocationAllocationDeciders
used for allocationpublic RoutingTable routingTable()
public RoutingNodes routingNodes()
public MetaData metaData()
public DiscoveryNodes nodes()
public ClusterInfo clusterInfo()
public <T extends ClusterState.Custom> T custom(java.lang.String key)
public ImmutableOpenMap<java.lang.String,ClusterState.Custom> getCustoms()
public void ignoreDisable(boolean ignoreDisable)
public boolean ignoreDisable()
public void setDebugMode(RoutingAllocation.DebugMode debug)
public void debugDecision(boolean debug)
public boolean debugDecision()
public RoutingAllocation.DebugMode getDebugMode()
public void addIgnoreShardForNode(ShardId shardId, java.lang.String nodeId)
public boolean shouldIgnoreShardForNode(ShardId shardId, java.lang.String nodeId)
AllocationDeciders
is deciding whether to allocate the specified shard id to that node. The node will be ignored if
the specified shard failed on that node, triggering the current round of allocation. Since the shard
just failed on that node, we don't want to try to reassign it there, if the node is still a part
of the cluster.shardId
- the shard id to be allocatednodeId
- the node id to check againstpublic java.util.Set<java.lang.String> getIgnoreNodes(ShardId shardId)
public RoutingChangesObserver changes()
public MetaData updateMetaDataWithRoutingChanges(RoutingTable newRoutingTable)
MetaData
based on the changes that were made to the routing nodespublic RestoreInProgress updateRestoreInfoWithRoutingChanges(RestoreInProgress restoreInProgress)
RestoreInProgress
based on the changes that were made to the routing nodespublic boolean routingNodesChanged()
public Decision decision(Decision decision, java.lang.String deciderLabel, java.lang.String reason, java.lang.Object... params)
decision
- decision whether to allow/deny allocationdeciderLabel
- a human readable label for the AllocationDeciderreason
- a format string explanation of the decisionparams
- format string parameterspublic boolean hasPendingAsyncFetch()
true
iff the current allocation run has not processed all of the in-flight or available
shard or store fetches. Otherwise true
public void setHasPendingAsyncFetch()
public boolean isRetryFailed()