Class RoutingNodes
java.lang.Object
org.elasticsearch.cluster.routing.RoutingNodes
- All Implemented Interfaces:
java.lang.Iterable<RoutingNode>
public class RoutingNodes extends java.lang.Object implements java.lang.Iterable<RoutingNode>
RoutingNodes
represents a copy the routing information contained in the cluster state
.
It can be either initialized as mutable or immutable (see RoutingNodes(ClusterState, boolean)
), allowing
or disallowing changes to its elements.
The main methods used to update routing entries are:
-
initializeShard(org.elasticsearch.cluster.routing.ShardRouting, java.lang.String, java.lang.String, long, org.elasticsearch.cluster.routing.RoutingChangesObserver)
initializes an unassigned shard. -
startShard(org.apache.logging.log4j.Logger, org.elasticsearch.cluster.routing.ShardRouting, org.elasticsearch.cluster.routing.RoutingChangesObserver)
starts an initializing shard / completes relocation of a shard. -
relocateShard(org.elasticsearch.cluster.routing.ShardRouting, java.lang.String, long, org.elasticsearch.cluster.routing.RoutingChangesObserver)
starts relocation of a started shard. -
failShard(org.apache.logging.log4j.Logger, org.elasticsearch.cluster.routing.ShardRouting, org.elasticsearch.cluster.routing.UnassignedInfo, org.elasticsearch.cluster.metadata.IndexMetaData, org.elasticsearch.cluster.routing.RoutingChangesObserver)
fails/cancels an assigned shard.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
RoutingNodes.UnassignedShards
-
Constructor Summary
Constructors Constructor Description RoutingNodes(ClusterState clusterState)
RoutingNodes(ClusterState clusterState, boolean readOnly)
-
Method Summary
Modifier and Type Method Description ShardRouting
activePrimary(ShardId shardId)
Returns the active primary shard for the given shard id ornull
if no primary is found or the primary is not active.ShardRouting
activeReplicaWithHighestVersion(ShardId shardId)
Returns one active replica shard for the given shard id ornull
if no active replica is found.boolean
allReplicasActive(ShardId shardId, MetaData metaData)
Returnstrue
iff all replicas are active for the given shard routing.static boolean
assertShardStats(RoutingNodes routingNodes)
Calculates RoutingNodes statistics by iterating over allShardRouting
s in the cluster to ensure the book-keeping is correct.java.util.List<ShardRouting>
assignedShards(ShardId shardId)
Returns all shards that are not in the state UNASSIGNED with the same shard ID as the given shard.void
failShard(org.apache.logging.log4j.Logger logger, ShardRouting failedShard, UnassignedInfo unassignedInfo, IndexMetaData indexMetaData, RoutingChangesObserver routingChangesObserver)
Applies the relevant logic to handle a cancelled or failed shard.ShardRouting
getByAllocationId(ShardId shardId, java.lang.String allocationId)
int
getIncomingRecoveries(java.lang.String nodeId)
int
getOutgoingRecoveries(java.lang.String nodeId)
int
getRelocatingShardCount()
boolean
hasInactivePrimaries()
boolean
hasInactiveShards()
boolean
hasUnassignedPrimaries()
Returnstrue
iff thisRoutingNodes
instance has any unassigned primaries even if the primaries are marked as temporarily ignored.boolean
hasUnassignedShards()
Returnstrue
iff thisRoutingNodes
instance has any unassigned shards even if the shards are marked as temporarily ignored.ShardRouting
initializeShard(ShardRouting unassignedShard, java.lang.String nodeId, java.lang.String existingAllocationId, long expectedSize, RoutingChangesObserver routingChangesObserver)
Moves a shard from unassigned to initialize statejava.util.Iterator<RoutingNode>
iterator()
java.util.Iterator<RoutingNode>
mutableIterator()
RoutingNode
node(java.lang.String nodeId)
java.util.Iterator<ShardRouting>
nodeInterleavedShardIterator()
Creates an iterator over shards interleaving between nodes: The iterator returns the first shard from the first node, then the first shard of the second node, etc.com.carrotsearch.hppc.ObjectIntHashMap<java.lang.String>
nodesPerAttributesCounts(java.lang.String attributeName)
Tuple<ShardRouting,ShardRouting>
relocateShard(ShardRouting startedShard, java.lang.String nodeId, long expectedShardSize, RoutingChangesObserver changes)
Relocate a shard to another node, adding the target initializing shard as well as assigning it.java.util.List<ShardRouting>
shards(java.util.function.Predicate<ShardRouting> predicate)
java.util.List<ShardRouting>
shardsWithState(java.lang.String index, ShardRoutingState... state)
java.util.List<ShardRouting>
shardsWithState(ShardRoutingState... state)
int
size()
Returns the number of routing nodesShardRouting
startShard(org.apache.logging.log4j.Logger logger, ShardRouting initializingShard, RoutingChangesObserver routingChangesObserver)
Applies the relevant logic to start an initializing shard.java.lang.String
toString()
RoutingNodes.UnassignedShards
unassigned()
-
Constructor Details
-
Method Details
-
getIncomingRecoveries
public int getIncomingRecoveries(java.lang.String nodeId) -
getOutgoingRecoveries
public int getOutgoingRecoveries(java.lang.String nodeId) -
iterator
- Specified by:
iterator
in interfacejava.lang.Iterable<RoutingNode>
-
mutableIterator
-
unassigned
-
node
-
nodesPerAttributesCounts
public com.carrotsearch.hppc.ObjectIntHashMap<java.lang.String> nodesPerAttributesCounts(java.lang.String attributeName) -
hasUnassignedPrimaries
public boolean hasUnassignedPrimaries()Returnstrue
iff thisRoutingNodes
instance has any unassigned primaries even if the primaries are marked as temporarily ignored. -
hasUnassignedShards
public boolean hasUnassignedShards()Returnstrue
iff thisRoutingNodes
instance has any unassigned shards even if the shards are marked as temporarily ignored. -
hasInactivePrimaries
public boolean hasInactivePrimaries() -
hasInactiveShards
public boolean hasInactiveShards() -
getRelocatingShardCount
public int getRelocatingShardCount() -
assignedShards
Returns all shards that are not in the state UNASSIGNED with the same shard ID as the given shard. -
getByAllocationId
-
activePrimary
Returns the active primary shard for the given shard id ornull
if no primary is found or the primary is not active. -
activeReplicaWithHighestVersion
Returns one active replica shard for the given shard id ornull
if no active replica is found. Since replicas could possibly be on nodes with a older version of ES than the primary is, this will return replicas on the highest version of ES. -
allReplicasActive
Returnstrue
iff all replicas are active for the given shard routing. Otherwisefalse
-
shards
-
shardsWithState
-
shardsWithState
public java.util.List<ShardRouting> shardsWithState(java.lang.String index, ShardRoutingState... state) -
toString
public java.lang.String toString()- Overrides:
toString
in classjava.lang.Object
-
initializeShard
public ShardRouting initializeShard(ShardRouting unassignedShard, java.lang.String nodeId, @Nullable java.lang.String existingAllocationId, long expectedSize, RoutingChangesObserver routingChangesObserver)Moves a shard from unassigned to initialize state- Parameters:
existingAllocationId
- allocation id to use. If null, a fresh allocation id is generated.- Returns:
- the initialized shard
-
relocateShard
public Tuple<ShardRouting,ShardRouting> relocateShard(ShardRouting startedShard, java.lang.String nodeId, long expectedShardSize, RoutingChangesObserver changes)Relocate a shard to another node, adding the target initializing shard as well as assigning it.- Returns:
- pair of source relocating and target initializing shards.
-
startShard
public ShardRouting startShard(org.apache.logging.log4j.Logger logger, ShardRouting initializingShard, RoutingChangesObserver routingChangesObserver)Applies the relevant logic to start an initializing shard. Moves the initializing shard to started. If the shard is a relocation target, also removes the relocation source. If the started shard is a primary relocation target, this also reinitializes currently initializing replicas as their recovery source changes- Returns:
- the started shard
-
failShard
public void failShard(org.apache.logging.log4j.Logger logger, ShardRouting failedShard, UnassignedInfo unassignedInfo, IndexMetaData indexMetaData, RoutingChangesObserver routingChangesObserver)Applies the relevant logic to handle a cancelled or failed shard. Moves the shard to unassigned or completely removes the shard (if relocation target). - If shard is a primary, this also fails initializing replicas. - If shard is an active primary, this also promotes an active replica to primary (if such a replica exists). - If shard is a relocating primary, this also removes the primary relocation target shard. - If shard is a relocating replica, this promotes the replica relocation target to a full initializing replica, removing the relocation source information. This is possible as peer recovery is always done from the primary. - If shard is a (primary or replica) relocation target, this also clears the relocation information on the source shard. -
size
public int size()Returns the number of routing nodes -
assertShardStats
Calculates RoutingNodes statistics by iterating over allShardRouting
s in the cluster to ensure the book-keeping is correct. For performance reasons, this should only be called from asserts- Returns:
- this method always returns
true
or throws an assertion error. If assertion are not enabled this method does nothing.
-
nodeInterleavedShardIterator
Creates an iterator over shards interleaving between nodes: The iterator returns the first shard from the first node, then the first shard of the second node, etc. until one shard from each node has been returned. The iterator then resumes on the first node by returning the second shard and continues until all shards from all the nodes have been returned.
-