org.apache.cassandra.db.lifecycle

## Class Tracker

- java.lang.Object
- - org.apache.cassandra.db.lifecycle.Tracker

    public class Tracker
    extends java.lang.Object

Tracker tracks live `View` of data store for a table.

### Field Summary

Fields
`ColumnFamilyStore` `cfstore`
`boolean` `loadsstables`

### Constructor Summary

Constructors
Constructor and Description
`Tracker(Memtable memtable, boolean loadsstables)`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addInitialSSTables(java.lang.Iterable<SSTableReader> sstables)`
`void` `addSSTables(java.lang.Iterable<SSTableReader> sstables)`
`void` `dropSSTables()`
`java.lang.Throwable` `dropSSTables(com.google.common.base.Predicate<SSTableReader> remove, OperationType operationType, java.lang.Throwable accumulate)` removes all sstables that are not busy compacting.
`java.lang.Throwable` `dropSSTables(java.lang.Throwable accumulate)`
`java.lang.Throwable` `dropSSTablesIfInvalid(java.lang.Throwable accumulate)`
`java.util.Set<SSTableReader>` `getCompacting()`
`Memtable` `getMemtableFor(OpOrder.Group opGroup, CommitLogPosition commitLogPosition)` get the Memtable that the ordered writeOp should be directed to
`java.lang.Iterable<SSTableReader>` `getUncompacting()`
`java.lang.Iterable<SSTableReader>` `getUncompacting(java.lang.Iterable<SSTableReader> candidates)`
`View` `getView()`
`boolean` `isDummy()`
`void` `markFlushing(Memtable memtable)`
`void` `maybeIncrementallyBackup(java.lang.Iterable<SSTableReader> sstables)`
`void` `notifyAdded(java.lang.Iterable<SSTableReader> added)`
`void` `notifyDeleting(SSTableReader deleting)`
`void` `notifyDiscarded(Memtable discarded)`
`void` `notifyRenewed(Memtable renewed)`
`void` `notifySSTableRepairedStatusChanged(java.util.Collection<SSTableReader> repairStatusesChanged)`
`void` `notifySwitched(Memtable previous)`
`void` `notifyTruncated(long truncatedAt)`
`void` `removeUnreadableSSTables(java.io.File directory)` Removes every SSTable in the directory from the Tracker's view.
`void` `removeUnsafe(java.util.Set<SSTableReader> toRemove)`
`void` `replaceFlushed(Memtable memtable, java.lang.Iterable<SSTableReader> sstables)`
`void` `reset(Memtable memtable)` (Re)initializes the tracker, purging all references.
`void` `subscribe(INotificationConsumer consumer)`
`Memtable` `switchMemtable(boolean truncating, Memtable newMemtable)` Switch the current memtable.
`LifecycleTransaction` `tryModify(java.lang.Iterable<SSTableReader> sstables, OperationType operationType)`
`LifecycleTransaction` `tryModify(SSTableReader sstable, OperationType operationType)`
`void` `unsubscribe(INotificationConsumer consumer)`

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

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

### Field Detail

#### cfstore

    public final ColumnFamilyStore cfstore

#### loadsstables

    public final boolean loadsstables

### Constructor Detail

#### Tracker

    public Tracker(Memtable memtable,
                   boolean loadsstables)

Parameters:
  `memtable` - Initial Memtable. Can be null.
  `loadsstables` - true to indicate to load SSTables (TODO: remove as this is only accessed from 2i)

### Method Detail

#### tryModify

    public LifecycleTransaction tryModify(SSTableReader sstable,
                                          OperationType operationType)

#### tryModify

    public LifecycleTransaction tryModify(java.lang.Iterable<SSTableReader> sstables,
                                          OperationType operationType)

Returns:
  a Transaction over the provided sstables if we are able to mark the given @param sstables as compacted, before anyone else

#### addInitialSSTables

    public void addInitialSSTables(java.lang.Iterable<SSTableReader> sstables)

#### addSSTables

    public void addSSTables(java.lang.Iterable<SSTableReader> sstables)

#### reset

    public void reset(Memtable memtable)

(Re)initializes the tracker, purging all references.

#### dropSSTablesIfInvalid

    public java.lang.Throwable dropSSTablesIfInvalid(java.lang.Throwable accumulate)

#### dropSSTables

    public void dropSSTables()

#### dropSSTables

    public java.lang.Throwable dropSSTables(java.lang.Throwable accumulate)

#### dropSSTables

    public java.lang.Throwable dropSSTables(com.google.common.base.Predicate<SSTableReader> remove,
                                            OperationType operationType,
                                            java.lang.Throwable accumulate)

removes all sstables that are not busy compacting.

#### removeUnreadableSSTables

    public void removeUnreadableSSTables(java.io.File directory)

Removes every SSTable in the directory from the Tracker's view.

Parameters:
  `directory` - the unreadable directory, possibly with SSTables in it, but not necessarily.

#### getMemtableFor

    public Memtable getMemtableFor(OpOrder.Group opGroup,
                                   CommitLogPosition commitLogPosition)

get the Memtable that the ordered writeOp should be directed to

#### switchMemtable

    public Memtable switchMemtable(boolean truncating,
                                   Memtable newMemtable)

Switch the current memtable. This atomically appends a new memtable to the end of the list of active memtables, returning the previously last memtable. It leaves the previous Memtable in the list of live memtables until discarding(memtable) is called. These two methods must be synchronized/paired, i.e. m = switchMemtable must be followed by discarding(m), they cannot be interleaved.

Returns:
  the previously active memtable

#### markFlushing

    public void markFlushing(Memtable memtable)

#### replaceFlushed

    public void replaceFlushed(Memtable memtable,
                               java.lang.Iterable<SSTableReader> sstables)

#### getCompacting

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

#### getUncompacting

    public java.lang.Iterable<SSTableReader> getUncompacting()

#### getUncompacting

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

#### maybeIncrementallyBackup

    public void maybeIncrementallyBackup(java.lang.Iterable<SSTableReader> sstables)

#### notifyAdded

    public void notifyAdded(java.lang.Iterable<SSTableReader> added)

#### notifySSTableRepairedStatusChanged

    public void notifySSTableRepairedStatusChanged(java.util.Collection<SSTableReader> repairStatusesChanged)

#### notifyDeleting

    public void notifyDeleting(SSTableReader deleting)

#### notifyTruncated

    public void notifyTruncated(long truncatedAt)

#### notifyRenewed

    public void notifyRenewed(Memtable renewed)

#### notifySwitched

    public void notifySwitched(Memtable previous)

#### notifyDiscarded

    public void notifyDiscarded(Memtable discarded)

#### isDummy

    public boolean isDummy()

#### subscribe

    public void subscribe(INotificationConsumer consumer)

#### unsubscribe

    public void unsubscribe(INotificationConsumer consumer)

#### getView

    public View getView()

#### removeUnsafe

    public void removeUnsafe(java.util.Set<SSTableReader> toRemove)