org.apache.cassandra.db

## Class DataTracker

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

    public class DataTracker
    extends java.lang.Object

### Nested Class Summary

Nested Classes
`static class` `DataTracker.SSTableIntervalTree`

### Field Summary

Fields
`ColumnFamilyStore` `cfstore`
`java.util.Collection<INotificationConsumer>` `subscribers`

### Constructor Summary

Constructors
Constructor and Description
`DataTracker(ColumnFamilyStore cfstore)`

### Method Summary

Methods
`void` `addInitialSSTables(java.util.Collection<SSTableReader> sstables)`
`void` `addSSTables(java.util.Collection<SSTableReader> sstables)`
`static DataTracker.SSTableIntervalTree` `buildIntervalTree(java.lang.Iterable<SSTableReader> sstables)`
`long` `estimatedKeys()`
`java.lang.Iterable<Memtable>` `getAllMemtables()`
`java.util.Set<SSTableReader>` `getCompacting()`
`double` `getDroppableTombstoneRatio()`
`int` `getMeanColumns()`
`Memtable` `getMemtable()`
`java.util.Set<Memtable>` `getMemtablesPendingFlush()`
`java.util.Set<SSTableReader>` `getSSTables()`
`java.util.Set<SSTableReader>` `getUncompactingSSTables()`
`java.lang.Iterable<SSTableReader>` `getUncompactingSSTables(java.lang.Iterable<SSTableReader> candidates)`
`org.apache.cassandra.db.DataTracker.View` `getView()`
`boolean` `markCompacting(java.lang.Iterable<SSTableReader> sstables)`
`void` `markObsolete(java.util.Collection<SSTableReader> sstables, OperationType compactionType)`
`void` `maybeIncrementallyBackup(SSTableReader sstable)`
`void` `notifyAdded(SSTableReader added)`
`void` `notifyDeleting(SSTableReader deleting)`
`void` `notifyRenewed(Memtable renewed)`
`void` `notifySSTablesChanged(java.util.Collection<SSTableReader> removed, java.util.Collection<SSTableReader> added, OperationType compactionType)`
`void` `renewMemtable()` Renew the current memtable without putting the old one for a flush.
`void` `replaceCompactedSSTables(java.util.Collection<SSTableReader> sstables, java.util.Collection<SSTableReader> replacements, OperationType compactionType)`
`void` `replaceFlushed(Memtable memtable, SSTableReader sstable)`
`void` `spaceReclaimed(long size)`
`void` `subscribe(INotificationConsumer consumer)`
`Memtable` `switchMemtable()` Switch the current memtable.
`void` `unmarkCompacting(java.lang.Iterable<SSTableReader> unmark)` Removes files from compacting status: this is different from 'markObsolete' because it should be run regardless of whether a compaction succeeded.
`void` `unreferenceSSTables()` removes all sstables that are not busy compacting.
`void` `unsubscribe(INotificationConsumer consumer)`

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

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

### Field Detail

#### subscribers

    public final java.util.Collection<INotificationConsumer> subscribers

#### cfstore

    public final ColumnFamilyStore cfstore

### Constructor Detail

#### DataTracker

    public DataTracker(ColumnFamilyStore cfstore)

### Method Detail

#### getMemtable

    public Memtable getMemtable()

#### getMemtablesPendingFlush

    public java.util.Set<Memtable> getMemtablesPendingFlush()

#### getAllMemtables

    public java.lang.Iterable<Memtable> getAllMemtables()

Returns:
  the active memtable and all the memtables that are pending flush.

#### getSSTables

    public java.util.Set<SSTableReader> getSSTables()

#### getUncompactingSSTables

    public java.util.Set<SSTableReader> getUncompactingSSTables()

#### getUncompactingSSTables

    public java.lang.Iterable<SSTableReader> getUncompactingSSTables(java.lang.Iterable<SSTableReader> candidates)

#### getView

    public org.apache.cassandra.db.DataTracker.View getView()

#### switchMemtable

    public Memtable switchMemtable()

Switch the current memtable. This atomically adds the current memtable to the memtables pending flush and replace it with a fresh memtable.

Returns:
  the previous current memtable (the one added to the pending flush)

#### renewMemtable

    public void renewMemtable()

Renew the current memtable without putting the old one for a flush. Used when we flush but a memtable is clean (in which case we must change it because it was frozen).

#### replaceFlushed

    public void replaceFlushed(Memtable memtable,
                      SSTableReader sstable)

#### maybeIncrementallyBackup

    public void maybeIncrementallyBackup(SSTableReader sstable)

#### markCompacting

    public boolean markCompacting(java.lang.Iterable<SSTableReader> sstables)

Returns:
  true if we are able to mark the given @param sstables as compacted, before anyone else Note that we could acquire references on the marked sstables and release them in unmarkCompacting, but since we will never call markObsolete on a sstable marked as compacting (unless there is a serious bug), we can skip this.

#### unmarkCompacting

    public void unmarkCompacting(java.lang.Iterable<SSTableReader> unmark)

Removes files from compacting status: this is different from 'markObsolete' because it should be run regardless of whether a compaction succeeded.

#### markObsolete

    public void markObsolete(java.util.Collection<SSTableReader> sstables,
                    OperationType compactionType)

#### replaceCompactedSSTables

    public void replaceCompactedSSTables(java.util.Collection<SSTableReader> sstables,
                                java.util.Collection<SSTableReader> replacements,
                                OperationType compactionType)

#### addInitialSSTables

    public void addInitialSSTables(java.util.Collection<SSTableReader> sstables)

#### addSSTables

    public void addSSTables(java.util.Collection<SSTableReader> sstables)

#### unreferenceSSTables

    public void unreferenceSSTables()

removes all sstables that are not busy compacting.

#### spaceReclaimed

    public void spaceReclaimed(long size)

#### estimatedKeys

    public long estimatedKeys()

#### getMeanColumns

    public int getMeanColumns()

#### getDroppableTombstoneRatio

    public double getDroppableTombstoneRatio()

#### notifySSTablesChanged

    public void notifySSTablesChanged(java.util.Collection<SSTableReader> removed,
                             java.util.Collection<SSTableReader> added,
                             OperationType compactionType)

#### notifyAdded

    public void notifyAdded(SSTableReader added)

#### notifyDeleting

    public void notifyDeleting(SSTableReader deleting)

#### notifyRenewed

    public void notifyRenewed(Memtable renewed)

#### subscribe

    public void subscribe(INotificationConsumer consumer)

#### unsubscribe

    public void unsubscribe(INotificationConsumer consumer)

#### buildIntervalTree

    public static DataTracker.SSTableIntervalTree buildIntervalTree(java.lang.Iterable<SSTableReader> sstables)

#### getCompacting

    public java.util.Set<SSTableReader> getCompacting()