Class UnassignedInfo

java.lang.Object
org.elasticsearch.cluster.routing.UnassignedInfo
All Implemented Interfaces:
Writeable, org.elasticsearch.common.xcontent.ToXContent, org.elasticsearch.common.xcontent.ToXContentFragment

public final class UnassignedInfo
extends java.lang.Object
implements org.elasticsearch.common.xcontent.ToXContentFragment, Writeable
Holds additional information as to why the shard is in unassigned state.
  • Nested Class Summary

    Nested Classes
    Modifier and Type Class Description
    static class  UnassignedInfo.AllocationStatus
    Captures the status of an unsuccessful allocation attempt for the shard, causing it to remain in the unassigned state.
    static class  UnassignedInfo.Reason
    Reason why the shard is in unassigned state.

    Nested classes/interfaces inherited from interface org.elasticsearch.common.xcontent.ToXContent

    org.elasticsearch.common.xcontent.ToXContent.DelegatingMapParams, org.elasticsearch.common.xcontent.ToXContent.MapParams, org.elasticsearch.common.xcontent.ToXContent.Params

    Nested classes/interfaces inherited from interface org.elasticsearch.common.io.stream.Writeable

    Writeable.Reader<V>, Writeable.Writer<V>
  • Field Summary

    Fields
    Modifier and Type Field Description
    static DateFormatter DATE_TIME_FORMATTER  
    static Setting<org.elasticsearch.common.unit.TimeValue> INDEX_DELAYED_NODE_LEFT_TIMEOUT_SETTING  

    Fields inherited from interface org.elasticsearch.common.xcontent.ToXContent

    EMPTY_PARAMS
  • Constructor Summary

    Constructors
    Constructor Description
    UnassignedInfo​(UnassignedInfo.Reason reason, java.lang.String message)
    creates an UnassignedInfo object based on **current** time
    UnassignedInfo​(UnassignedInfo.Reason reason, java.lang.String message, java.lang.Exception failure, int failedAllocations, long unassignedTimeNanos, long unassignedTimeMillis, boolean delayed, UnassignedInfo.AllocationStatus lastAllocationStatus, java.util.Set<java.lang.String> failedNodeIds)  
    UnassignedInfo​(StreamInput in)  
  • Method Summary

    Modifier and Type Method Description
    boolean equals​(java.lang.Object o)  
    static long findNextDelayedAllocation​(long currentNanoTime, ClusterState state)
    Finds the next (closest) delay expiration of an delayed shard in nanoseconds based on current time.
    java.lang.String getDetails()
    Builds a string representation of the message and the failure if exists.
    java.util.Set<java.lang.String> getFailedNodeIds()
    A set of nodeIds that failed to complete allocations for this shard.
    java.lang.Exception getFailure()
    Returns additional failure exception details if exists.
    UnassignedInfo.AllocationStatus getLastAllocationStatus()
    Get the status for the last allocation attempt for this shard.
    java.lang.String getMessage()
    Returns optional details explaining the reasons.
    static int getNumberOfDelayedUnassigned​(ClusterState state)
    Returns the number of shards that are unassigned and currently being delayed.
    int getNumFailedAllocations()
    Returns the number of previously failed allocations of this shard.
    UnassignedInfo.Reason getReason()
    The reason why the shard is unassigned.
    long getRemainingDelay​(long nanoTimeNow, Settings indexSettings)
    Calculates the delay left based on current time (in nanoseconds) and the delay defined by the index settings.
    long getUnassignedTimeInMillis()
    The timestamp in milliseconds when the shard became unassigned, based on System.currentTimeMillis().
    long getUnassignedTimeInNanos()
    The timestamp in nanoseconds when the shard became unassigned, based on System.nanoTime().
    int hashCode()  
    boolean isDelayed()
    Returns true if allocation of this shard is delayed due to INDEX_DELAYED_NODE_LEFT_TIMEOUT_SETTING
    java.lang.String shortSummary()  
    java.lang.String toString()  
    org.elasticsearch.common.xcontent.XContentBuilder toXContent​(org.elasticsearch.common.xcontent.XContentBuilder builder, org.elasticsearch.common.xcontent.ToXContent.Params params)  
    void writeTo​(StreamOutput out)
    Write this into the StreamOutput.

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface org.elasticsearch.common.xcontent.ToXContentFragment

    isFragment
  • Field Details

    • DATE_TIME_FORMATTER

      public static final DateFormatter DATE_TIME_FORMATTER
    • INDEX_DELAYED_NODE_LEFT_TIMEOUT_SETTING

      public static final Setting<org.elasticsearch.common.unit.TimeValue> INDEX_DELAYED_NODE_LEFT_TIMEOUT_SETTING
  • Constructor Details

    • UnassignedInfo

      public UnassignedInfo​(UnassignedInfo.Reason reason, java.lang.String message)
      creates an UnassignedInfo object based on **current** time
      Parameters:
      reason - the cause for making this shard unassigned. See UnassignedInfo.Reason for more information.
      message - more information about cause.
    • UnassignedInfo

      public UnassignedInfo​(UnassignedInfo.Reason reason, @Nullable java.lang.String message, @Nullable java.lang.Exception failure, int failedAllocations, long unassignedTimeNanos, long unassignedTimeMillis, boolean delayed, UnassignedInfo.AllocationStatus lastAllocationStatus, java.util.Set<java.lang.String> failedNodeIds)
      Parameters:
      reason - the cause for making this shard unassigned. See UnassignedInfo.Reason for more information.
      message - more information about cause.
      failure - the shard level failure that caused this shard to be unassigned, if exists.
      unassignedTimeNanos - the time to use as the base for any delayed re-assignment calculation
      unassignedTimeMillis - the time of unassignment used to display to in our reporting.
      delayed - if allocation of this shard is delayed due to INDEX_DELAYED_NODE_LEFT_TIMEOUT_SETTING.
      lastAllocationStatus - the result of the last allocation attempt for this shard
      failedNodeIds - a set of nodeIds that failed to complete allocations for this shard
    • UnassignedInfo

      public UnassignedInfo​(StreamInput in) throws java.io.IOException
      Throws:
      java.io.IOException
  • Method Details

    • writeTo

      public void writeTo​(StreamOutput out) throws java.io.IOException
      Description copied from interface: Writeable
      Write this into the StreamOutput.
      Specified by:
      writeTo in interface Writeable
      Throws:
      java.io.IOException
    • getNumFailedAllocations

      public int getNumFailedAllocations()
      Returns the number of previously failed allocations of this shard.
    • isDelayed

      public boolean isDelayed()
      Returns true if allocation of this shard is delayed due to INDEX_DELAYED_NODE_LEFT_TIMEOUT_SETTING
    • getReason

      public UnassignedInfo.Reason getReason()
      The reason why the shard is unassigned.
    • getUnassignedTimeInMillis

      public long getUnassignedTimeInMillis()
      The timestamp in milliseconds when the shard became unassigned, based on System.currentTimeMillis(). Note, we use timestamp here since we want to make sure its preserved across node serializations.
    • getUnassignedTimeInNanos

      public long getUnassignedTimeInNanos()
      The timestamp in nanoseconds when the shard became unassigned, based on System.nanoTime(). Used to calculate the delay for delayed shard allocation. ONLY EXPOSED FOR TESTS!
    • getMessage

      @Nullable public java.lang.String getMessage()
      Returns optional details explaining the reasons.
    • getFailure

      @Nullable public java.lang.Exception getFailure()
      Returns additional failure exception details if exists.
    • getDetails

      @Nullable public java.lang.String getDetails()
      Builds a string representation of the message and the failure if exists.
    • getLastAllocationStatus

      public UnassignedInfo.AllocationStatus getLastAllocationStatus()
      Get the status for the last allocation attempt for this shard.
    • getFailedNodeIds

      public java.util.Set<java.lang.String> getFailedNodeIds()
      A set of nodeIds that failed to complete allocations for this shard. ReplicaShardAllocator uses this set to avoid repeatedly canceling ongoing recoveries for copies on those nodes although they can perform noop recoveries. This set will be discarded when a shard moves to started. And if a shard is failed while started (i.e., from started to unassigned), the currently assigned node won't be added to this set.
      See Also:
      ReplicaShardAllocator.processExistingRecoveries(RoutingAllocation), AllocationService.applyFailedShards(ClusterState, List, List)
    • getRemainingDelay

      public long getRemainingDelay​(long nanoTimeNow, Settings indexSettings)
      Calculates the delay left based on current time (in nanoseconds) and the delay defined by the index settings. Only relevant if shard is effectively delayed (see isDelayed()) Returns 0 if delay is negative
      Returns:
      calculated delay in nanoseconds
    • getNumberOfDelayedUnassigned

      public static int getNumberOfDelayedUnassigned​(ClusterState state)
      Returns the number of shards that are unassigned and currently being delayed.
    • findNextDelayedAllocation

      public static long findNextDelayedAllocation​(long currentNanoTime, ClusterState state)
      Finds the next (closest) delay expiration of an delayed shard in nanoseconds based on current time. Returns 0 if delay is negative. Returns -1 if no delayed shard is found.
    • shortSummary

      public java.lang.String shortSummary()
    • toString

      public java.lang.String toString()
      Overrides:
      toString in class java.lang.Object
    • toXContent

      public org.elasticsearch.common.xcontent.XContentBuilder toXContent​(org.elasticsearch.common.xcontent.XContentBuilder builder, org.elasticsearch.common.xcontent.ToXContent.Params params) throws java.io.IOException
      Specified by:
      toXContent in interface org.elasticsearch.common.xcontent.ToXContent
      Throws:
      java.io.IOException
    • equals

      public boolean equals​(java.lang.Object o)
      Overrides:
      equals in class java.lang.Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class java.lang.Object