Class RetentionLease

java.lang.Object
org.elasticsearch.index.seqno.RetentionLease
All Implemented Interfaces:
Writeable, ToXContent, ToXContentObject

public final class RetentionLease
extends java.lang.Object
implements ToXContentObject, Writeable
A "shard history retention lease" (or "retention lease" for short) is conceptually a marker containing a retaining sequence number such that all operations with sequence number at least that retaining sequence number will be retained during merge operations (which could otherwise merge away operations that have been soft deleted). Each retention lease contains a unique identifier, the retaining sequence number, the timestamp of when the lease was created or renewed, and the source of the retention lease (e.g., "ccr").
  • Constructor Details

    • RetentionLease

      public RetentionLease​(java.lang.String id, long retainingSequenceNumber, long timestamp, java.lang.String source)
      Constructs a new retention lease.
      Parameters:
      id - the identifier of the retention lease
      retainingSequenceNumber - the retaining sequence number
      timestamp - the timestamp of when the retention lease was created or renewed
      source - the source of the retention lease
    • RetentionLease

      public RetentionLease​(StreamInput in) throws java.io.IOException
      Constructs a new retention lease from a stream. The retention lease should have been written via writeTo(StreamOutput).
      Parameters:
      in - the stream to construct the retention lease from
      Throws:
      java.io.IOException - if an I/O exception occurs reading from the stream
  • Method Details

    • id

      public java.lang.String id()
      The identifier for this retention lease. This identifier should be unique per lease and is set during construction by the caller.
      Returns:
      the identifier
    • retainingSequenceNumber

      public long retainingSequenceNumber()
      The retaining sequence number of this retention lease. The retaining sequence number is the minimum sequence number that this retention lease wants to retain during merge operations. The retaining sequence number is set during construction by the caller.
      Returns:
      the retaining sequence number
    • timestamp

      public long timestamp()
      The timestamp of when this retention lease was created or renewed.
      Returns:
      the timestamp used as a basis for determining lease expiration
    • source

      public java.lang.String source()
      The source of this retention lease. The source is set during construction by the caller.
      Returns:
      the source
    • writeTo

      public void writeTo​(StreamOutput out) throws java.io.IOException
      Writes a retention lease to a stream in a manner suitable for later reconstruction via RetentionLease(StreamInput).
      Specified by:
      writeTo in interface Writeable
      Parameters:
      out - the stream to write the retention lease to
      Throws:
      java.io.IOException - if an I/O exception occurs writing to the stream
    • toXContent

      public XContentBuilder toXContent​(XContentBuilder builder, ToXContent.Params params) throws java.io.IOException
      Specified by:
      toXContent in interface ToXContent
      Throws:
      java.io.IOException
    • isFragment

      public boolean isFragment()
      Specified by:
      isFragment in interface ToXContent
      Specified by:
      isFragment in interface ToXContentObject
    • fromXContent

      public static RetentionLease fromXContent​(XContentParser parser)
      Parses a retention lease from XContent. This method assumes that the retention lease was converted to XContent via toXContent(XContentBuilder, Params).
      Parameters:
      parser - the parser
      Returns:
      a retention lease
    • 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
    • toString

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