All Known Implementing Classes:
BalancedShardsAllocator, DesiredBalanceShardsAllocator

public interface ShardsAllocator

A ShardsAllocator is the main entry point for shard allocation on nodes in the cluster. The allocator makes basic decision where a shard instance will be allocated, if already allocated instances need to relocate to other nodes due to node failures or due to rebalancing decisions.

  • Method Details

    • allocate

      void allocate(RoutingAllocation allocation)
      Allocates shards to nodes in the cluster. An implementation of this method should: - assign unassigned shards - relocate shards that cannot stay on a node anymore - relocate shards to find a good shard balance in the cluster
      Parameters:
      allocation - current node allocation
    • allocate

      default void allocate(RoutingAllocation allocation, ActionListener<Void> listener)
      Allocates shards to nodes in the cluster. An implementation of this method should: - assign unassigned shards - relocate shards that cannot stay on a node anymore - relocate shards to find a good shard balance in the cluster
      Parameters:
      allocation - current node allocation
      listener - listener to be executed once async allocation is completed
    • execute

      default RoutingExplanations execute(RoutingAllocation allocation, AllocationCommands commands, boolean explain, boolean retryFailed)
      Execute allocation commands
    • explainShardAllocation

      ShardAllocationDecision explainShardAllocation(ShardRouting shard, RoutingAllocation allocation)
      Returns the decision for where a shard should reside in the cluster. If the shard is unassigned, then the AllocateUnassignedDecision will be non-null. If the shard is not in the unassigned state, then the MoveDecision will be non-null. If an implementation of this interface does not support explaining decisions for a single shard through the cluster explain API, then this method should throw a UnsupportedOperationException.