org.apache.cassandra.db

## Class RangeTombstoneList

- java.lang.Object
- - org.apache.cassandra.db.RangeTombstoneList

- All Implemented Interfaces:
    java.lang.Iterable<RangeTombstone>

      public class RangeTombstoneList
      extends java.lang.Object
      implements java.lang.Iterable<RangeTombstone>

  Data structure holding the range tombstones of a ColumnFamily.

  This is essentially a sorted list of non-overlapping (tombstone) ranges.

  A range tombstone has 4 elements: the start and end of the range covered, and the deletion infos (markedAt timestamp and local deletion time). The markedAt timestamp is what define the priority of 2 overlapping tombstones. That is, given 2 tombstones [0, 10]@t1 and [5, 15]@t2, then if t2 > t1 (and are the tombstones markedAt values), the 2nd tombstone take precedence over the first one on [5, 10]. If such tombstones are added to a RangeTombstoneList, the range tombstone list will store them as [[0, 5]@t1, [5, 15]@t2].

  The only use of the local deletion time is to know when a given tombstone can be purged, which will be done by the purge() method.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `RangeTombstoneList.Serializer`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static RangeTombstoneList.Serializer` | `serializer`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RangeTombstoneList(java.util.Comparator<java.nio.ByteBuffer> comparator, int capacity)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(java.nio.ByteBuffer start, java.nio.ByteBuffer end, long markedAt, int delTime)` Adds a new range tombstone.
    `void` | `add(RangeTombstone tombstone)`
    `void` | `addAll(RangeTombstoneList tombstones)` Adds all the range tombstones of `tombstones` to this RangeTombstoneList.
    `java.util.Comparator<java.nio.ByteBuffer>` | `comparator()`
    `RangeTombstoneList` | `copy()`
    `int` | `dataSize()`
    `boolean` | `equals(java.lang.Object o)`
    `int` | `hashCode()`
    `boolean` | `hasIrrelevantData(int gcBefore)` Returns whether `purge(gcBefore)` would remove something or not.
    `boolean` | `isDeleted(java.nio.ByteBuffer name, long timestamp)` Returns whether the given name/timestamp pair is deleted by one of the tombstone of this RangeTombstoneList.
    `boolean` | `isEmpty()`
    `java.util.Iterator<RangeTombstone>` | `iterator()`
    `long` | `maxMarkedAt()`
    `long` | `minMarkedAt()`
    `void` | `purge(int gcBefore)` Removes all range tombstones whose local deletion time is older than gcBefore.
    `DeletionTime` | `search(java.nio.ByteBuffer name)` Returns the DeletionTime for the tombstone overlapping `name` (there can't be more than one), or null if `name` is not covered by any tombstone.
    `int` | `size()`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### serializer

          public static final RangeTombstoneList.Serializer serializer

  - ### Constructor Detail

    - #### RangeTombstoneList

          public RangeTombstoneList(java.util.Comparator<java.nio.ByteBuffer> comparator,
                            int capacity)

  - ### Method Detail

    - #### isEmpty

          public boolean isEmpty()

    - #### size

          public int size()

    - #### comparator

          public java.util.Comparator<java.nio.ByteBuffer> comparator()

    - #### copy

          public RangeTombstoneList copy()

    - #### add

          public void add(RangeTombstone tombstone)

    - #### add

          public void add(java.nio.ByteBuffer start,
                 java.nio.ByteBuffer end,
                 long markedAt,
                 int delTime)

      Adds a new range tombstone. This method will be faster if the new tombstone sort after all the currently existing ones (this is a common use case), but it doesn't assume it.

    - #### addAll

          public void addAll(RangeTombstoneList tombstones)

      Adds all the range tombstones of `tombstones` to this RangeTombstoneList.

    - #### isDeleted

          public boolean isDeleted(java.nio.ByteBuffer name,
                          long timestamp)

      Returns whether the given name/timestamp pair is deleted by one of the tombstone of this RangeTombstoneList.

    - #### search

          public DeletionTime search(java.nio.ByteBuffer name)

      Returns the DeletionTime for the tombstone overlapping `name` (there can't be more than one), or null if `name` is not covered by any tombstone.

    - #### dataSize

          public int dataSize()

    - #### minMarkedAt

          public long minMarkedAt()

    - #### maxMarkedAt

          public long maxMarkedAt()

    - #### purge

          public void purge(int gcBefore)

      Removes all range tombstones whose local deletion time is older than gcBefore.

    - #### hasIrrelevantData

          public boolean hasIrrelevantData(int gcBefore)

      Returns whether `purge(gcBefore)` would remove something or not.

    - #### iterator

          public java.util.Iterator<RangeTombstone> iterator()

      Specified by:
        `iterator` in interface `java.lang.Iterable<RangeTombstone>`

    - #### equals

          public boolean equals(java.lang.Object o)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### hashCode

          public final int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

Copyright © 2014 The Apache Software Foundation