Class RangeTombstoneList

java.lang.Object
org.apache.cassandra.db.RangeTombstoneList
All Implemented Interfaces:
Iterable<RangeTombstone>, IMeasurableMemory

public class RangeTombstoneList extends Object implements Iterable<RangeTombstone>, IMeasurableMemory
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.

  • Constructor Details

  • Method Details

    • isEmpty

      public boolean isEmpty()
    • size

      public int size()
    • comparator

      public ClusteringComparator comparator()
    • copy

      public RangeTombstoneList copy()
    • clone

      public RangeTombstoneList clone(ByteBufferCloner cloner)
    • add

      public void add(RangeTombstone tombstone)
    • addAll

      public void addAll(RangeTombstoneList tombstones)
      Adds all the range tombstones of tombstones to this RangeTombstoneList.
    • isDeleted

      public boolean isDeleted(Clustering<?> clustering, Cell<?> cell)
      Returns whether the given name/timestamp pair is deleted by one of the tombstone of this RangeTombstoneList.
    • searchDeletionTime

      public DeletionTime searchDeletionTime(Clustering<?> 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.
    • search

      public RangeTombstone search(Clustering<?> name)
    • dataSize

      public int dataSize()
    • maxMarkedAt

      public long maxMarkedAt()
    • collectStats

      public void collectStats(EncodingStats.Collector collector)
    • updateAllTimestamp

      public void updateAllTimestamp(long timestamp)
    • iterator

      public Iterator<RangeTombstone> iterator()
      Specified by:
      iterator in interface Iterable<RangeTombstone>
    • iterator

      public Iterator<RangeTombstone> iterator(boolean reversed)
    • iterator

      public Iterator<RangeTombstone> iterator(Slice slice, boolean reversed)
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class Object
    • unsharedHeapSize

      public long unsharedHeapSize()
      Specified by:
      unsharedHeapSize in interface IMeasurableMemory
      Returns:
      the amount of on-heap memory retained by the object that might be reclaimed if the object were reclaimed, i.e. it should try to exclude globally cached data where possible, or counting portions of arrays that are referenced by the object but used by other objects only (e.g. slabbed byte-buffers), etc.