org.apache.cassandra.db

## Class SystemKeyspace

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

    public final class SystemKeyspace
    extends java.lang.Object

### Nested Class Summary

Nested Classes
`static class` `SystemKeyspace.BootstrapState`

### Field Summary

Fields
`static java.lang.String` `AVAILABLE_RANGES`
`static CFMetaData` `Batchlog`
`static java.lang.String` `BATCHLOG`
`static java.lang.String` `BUILT_INDEXES`
`static CFMetaData` `BuiltIndexes`
`static java.lang.String` `COMPACTION_HISTORY`
`static java.lang.String` `COMPACTIONS_IN_PROGRESS`
`static CFMetaData` `Hints`
`static java.lang.String` `HINTS`
`static java.lang.String` `LOCAL`
`static java.lang.String` `NAME`
`static CassandraVersion` `NULL_VERSION`
`static java.lang.String` `PAXOS`
`static java.lang.String` `PEER_EVENTS`
`static java.lang.String` `PEERS`
`static java.lang.String` `RANGE_XFERS`
`static java.lang.String` `SIZE_ESTIMATES`
`static java.lang.String` `SSTABLE_ACTIVITY`
`static CassandraVersion` `UNREADABLE_VERSION`

### Constructor Summary

Constructors
Constructor and Description
`SystemKeyspace()`

### Method Summary

All Methods Static Methods Concrete Methods
`static boolean` `bootstrapComplete()`
`static boolean` `bootstrapInProgress()`
`static void` `checkHealth()` One of three things will happen if you try to read the system keyspace: 1.
`static void` `clearSizeEstimates(java.lang.String keyspace, java.lang.String table)` Clears size estimates for a table (on table drop)
`static void` `clearSSTableReadMeter(java.lang.String keyspace, java.lang.String table, int generation)` Clears persisted read rates from system.sstable_activity for SSTables that have been deleted.
`static KSMetaData` `definition()`
`static void` `discardCompactionsInProgress()`
`static void` `finishCompaction(java.util.UUID taskId)` Deletes the entry for this compaction from the set of compactions in progress.
`static void` `finishStartup()`
`static void` `forceBlockingFlush(java.lang.String cfname)`
`static java.util.Set<Range<Token>>` `getAvailableRanges(java.lang.String keyspace, IPartitioner partitioner)`
`static SystemKeyspace.BootstrapState` `getBootstrapState()`
`static javax.management.openmbean.TabularData` `getCompactionHistory()`
`static java.lang.String` `getDatacenter()` Gets the stored data center for the local node, or null if none have been set yet.
`static java.util.UUID` `getLocalHostId()` Read the host ID from the system keyspace, creating (and storing) one if none exists.
`static java.net.InetAddress` `getPreferredIP(java.net.InetAddress ep)` Get preferred IP for given endpoint if it is known.
`static java.lang.String` `getRack()` Gets the stored rack for the local node, or null if none have been set yet.
`static CassandraVersion` `getReleaseVersion(java.net.InetAddress ep)` Get release version for given endpoint.
`static java.util.Collection<Token>` `getSavedTokens()`
`static RestorableMeter` `getSSTableReadMeter(java.lang.String keyspace, java.lang.String table, int generation)` Returns a RestorableMeter tracking the average read rate of a particular SSTable, restoring the last-seen rate from values in system.sstable_activity if present.
`static long` `getTruncatedAt(java.util.UUID cfId)`
`static ReplayPosition` `getTruncatedPosition(java.util.UUID cfId)`
`static java.util.Map<Pair<java.lang.String,java.lang.String>,java.util.Map<java.lang.Integer,java.util.UUID>>` `getUnfinishedCompactions()` Returns a Map whose keys are KS.CF pairs and whose values are maps from sstable generation numbers to the task ID of the compaction they were participating in.
`static int` `incrementAndGetGeneration()`
`static boolean` `isIndexBuilt(java.lang.String keyspaceName, java.lang.String indexName)`
`static java.util.Map<java.net.InetAddress,java.util.Map<java.lang.String,java.lang.String>>` `loadDcRackInfo()` Return a map of IP addresses containing a map of dc and rack info
`static java.util.Map<java.net.InetAddress,java.util.UUID>` `loadHostIds()` Return a map of store host_ids to IP addresses
`static PaxosState` `loadPaxosState(java.nio.ByteBuffer key, CFMetaData metadata, long now)`
`static com.google.common.collect.SetMultimap<java.net.InetAddress,Token>` `loadTokens()` Return a map of stored tokens to IP addresses
`static int` `paxosTtl(CFMetaData metadata)`
`static void` `persistLocalMetadata()`
`static void` `persistSSTableReadMeter(java.lang.String keyspace, java.lang.String table, int generation, RestorableMeter meter)` Writes the current read rates for a given SSTable to system.sstable_activity
`static void` `removeEndpoint(java.net.InetAddress ep)` Remove stored tokens being used by another node
`static void` `removeTruncationRecord(java.util.UUID cfId)` This method is used to remove information about truncation time for specified column family
`static void` `resetAvailableRanges()`
`static void` `savePaxosCommit(Commit commit)`
`static void` `savePaxosPromise(Commit promise)`
`static void` `savePaxosProposal(Commit proposal)`
`static void` `saveTruncationRecord(ColumnFamilyStore cfs, long truncatedAt, ReplayPosition position)`
`static void` `setBootstrapState(SystemKeyspace.BootstrapState state)`
`static void` `setIndexBuilt(java.lang.String keyspaceName, java.lang.String indexName)`
`static void` `setIndexRemoved(java.lang.String keyspaceName, java.lang.String indexName)`
`static java.util.UUID` `setLocalHostId(java.util.UUID hostId)` Sets the local host ID explicitly.
`static void` `snapshotOnVersionChange()` Compare the release version in the system.local table with the one included in the distro.
`static java.util.UUID` `startCompaction(ColumnFamilyStore cfs, java.lang.Iterable<SSTableReader> toCompact)` Write compaction log, except columfamilies under system keyspace.
`static void` `updateAvailableRanges(java.lang.String keyspace, java.util.Collection<Range<Token>> completedRanges)`
`static void` `updateCompactionHistory(java.lang.String ksname, java.lang.String cfname, long compactedAt, long bytesIn, long bytesOut, java.util.Map<java.lang.Integer,java.lang.Long> rowsMerged)`
`static void` `updateHintsDropped(java.net.InetAddress ep, java.util.UUID timePeriod, int value)`
`static void` `updatePeerInfo(java.net.InetAddress ep, java.lang.String columnName, java.lang.Object value)`
`static void` `updatePreferredIP(java.net.InetAddress ep, java.net.InetAddress preferred_ip)`
`static void` `updateSchemaVersion(java.util.UUID version)`
`static void` `updateSizeEstimates(java.lang.String keyspace, java.lang.String table, java.util.Map<Range<Token>,Pair<java.lang.Long,java.lang.Long>> estimates)` Writes the current partition count and size estimates into SIZE_ESTIMATES_CF
`static void` `updateTokens(java.util.Collection<Token> tokens)` This method is used to update the System Keyspace with the new tokens for this node
`static void` `updateTokens(java.net.InetAddress ep, java.util.Collection<Token> tokens)` Record tokens being used by another node

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

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

### Field Detail

#### UNREADABLE_VERSION

    public static final CassandraVersion UNREADABLE_VERSION

#### NULL_VERSION

    public static final CassandraVersion NULL_VERSION

#### NAME

    public static final java.lang.String NAME

See Also:
  Constant Field Values

#### HINTS

    public static final java.lang.String HINTS

See Also:
  Constant Field Values

#### BATCHLOG

    public static final java.lang.String BATCHLOG

See Also:
  Constant Field Values

#### PAXOS

    public static final java.lang.String PAXOS

See Also:
  Constant Field Values

#### BUILT_INDEXES

    public static final java.lang.String BUILT_INDEXES

See Also:
  Constant Field Values

#### LOCAL

    public static final java.lang.String LOCAL

See Also:
  Constant Field Values

#### PEERS

    public static final java.lang.String PEERS

See Also:
  Constant Field Values

#### PEER_EVENTS

    public static final java.lang.String PEER_EVENTS

See Also:
  Constant Field Values

#### RANGE_XFERS

    public static final java.lang.String RANGE_XFERS

See Also:
  Constant Field Values

#### COMPACTIONS_IN_PROGRESS

    public static final java.lang.String COMPACTIONS_IN_PROGRESS

See Also:
  Constant Field Values

#### COMPACTION_HISTORY

    public static final java.lang.String COMPACTION_HISTORY

See Also:
  Constant Field Values

#### SSTABLE_ACTIVITY

    public static final java.lang.String SSTABLE_ACTIVITY

See Also:
  Constant Field Values

#### SIZE_ESTIMATES

    public static final java.lang.String SIZE_ESTIMATES

See Also:
  Constant Field Values

#### AVAILABLE_RANGES

    public static final java.lang.String AVAILABLE_RANGES

See Also:
  Constant Field Values

#### Hints

    public static final CFMetaData Hints

#### Batchlog

    public static final CFMetaData Batchlog

#### BuiltIndexes

    public static final CFMetaData BuiltIndexes

### Constructor Detail

#### SystemKeyspace

    public SystemKeyspace()

### Method Detail

#### definition

    public static KSMetaData definition()

#### finishStartup

    public static void finishStartup()

#### persistLocalMetadata

    public static void persistLocalMetadata()

#### startCompaction

    public static java.util.UUID startCompaction(ColumnFamilyStore cfs,
                                                 java.lang.Iterable<SSTableReader> toCompact)

Write compaction log, except columfamilies under system keyspace.

Parameters:
  `cfs` - cfs to compact
  `toCompact` - sstables to compact
Returns:
  compaction task id or null if cfs is under system keyspace

#### finishCompaction

    public static void finishCompaction(java.util.UUID taskId)

Deletes the entry for this compaction from the set of compactions in progress. The compaction does not need to complete successfully for this to be called.

Parameters:
  `taskId` - what was returned from `startCompaction`

#### getUnfinishedCompactions

    public static java.util.Map<Pair<java.lang.String,java.lang.String>,java.util.Map<java.lang.Integer,java.util.UUID>> getUnfinishedCompactions()

Returns a Map whose keys are KS.CF pairs and whose values are maps from sstable generation numbers to the task ID of the compaction they were participating in.

#### discardCompactionsInProgress

    public static void discardCompactionsInProgress()

#### updateCompactionHistory

    public static void updateCompactionHistory(java.lang.String ksname,
                                               java.lang.String cfname,
                                               long compactedAt,
                                               long bytesIn,
                                               long bytesOut,
                                               java.util.Map<java.lang.Integer,java.lang.Long> rowsMerged)

#### getCompactionHistory

    public static javax.management.openmbean.TabularData getCompactionHistory()
                                                                       throws javax.management.openmbean.OpenDataException

Throws:
  `javax.management.openmbean.OpenDataException`

#### saveTruncationRecord

    public static void saveTruncationRecord(ColumnFamilyStore cfs,
                                            long truncatedAt,
                                            ReplayPosition position)

#### removeTruncationRecord

    public static void removeTruncationRecord(java.util.UUID cfId)

This method is used to remove information about truncation time for specified column family

#### getTruncatedPosition

    public static ReplayPosition getTruncatedPosition(java.util.UUID cfId)

#### getTruncatedAt

    public static long getTruncatedAt(java.util.UUID cfId)

#### updateTokens

    public static void updateTokens(java.net.InetAddress ep,
                                    java.util.Collection<Token> tokens)

Record tokens being used by another node

#### updatePreferredIP

    public static void updatePreferredIP(java.net.InetAddress ep,
                                         java.net.InetAddress preferred_ip)

#### updatePeerInfo

    public static void updatePeerInfo(java.net.InetAddress ep,
                                      java.lang.String columnName,
                                      java.lang.Object value)

#### updateHintsDropped

    public static void updateHintsDropped(java.net.InetAddress ep,
                                          java.util.UUID timePeriod,
                                          int value)

#### updateSchemaVersion

    public static void updateSchemaVersion(java.util.UUID version)

#### removeEndpoint

    public static void removeEndpoint(java.net.InetAddress ep)

Remove stored tokens being used by another node

#### updateTokens

    public static void updateTokens(java.util.Collection<Token> tokens)

This method is used to update the System Keyspace with the new tokens for this node

#### forceBlockingFlush

    public static void forceBlockingFlush(java.lang.String cfname)

#### loadTokens

    public static com.google.common.collect.SetMultimap<java.net.InetAddress,Token> loadTokens()

Return a map of stored tokens to IP addresses

#### loadHostIds

    public static java.util.Map<java.net.InetAddress,java.util.UUID> loadHostIds()

Return a map of store host_ids to IP addresses

#### getPreferredIP

    public static java.net.InetAddress getPreferredIP(java.net.InetAddress ep)

Get preferred IP for given endpoint if it is known. Otherwise this returns given endpoint itself.

Parameters:
  `ep` - endpoint address to check
Returns:
  Preferred IP for given endpoint if present, otherwise returns given ep

#### loadDcRackInfo

    public static java.util.Map<java.net.InetAddress,java.util.Map<java.lang.String,java.lang.String>> loadDcRackInfo()

Return a map of IP addresses containing a map of dc and rack info

#### getReleaseVersion

    public static CassandraVersion getReleaseVersion(java.net.InetAddress ep)

Get release version for given endpoint. If release version is unknown, then this returns null.

Parameters:
  `ep` - endpoint address to check
Returns:
  Release version or null if version is unknown.

#### checkHealth

    public static void checkHealth()
                            throws ConfigurationException

One of three things will happen if you try to read the system keyspace: 1. files are present and you can read them: great 2. no files are there: great (new node is assumed) 3. files are present but you can't read them: bad

Throws:
  `ConfigurationException`

#### getSavedTokens

    public static java.util.Collection<Token> getSavedTokens()

#### incrementAndGetGeneration

    public static int incrementAndGetGeneration()

#### getBootstrapState

    public static SystemKeyspace.BootstrapState getBootstrapState()

#### bootstrapComplete

    public static boolean bootstrapComplete()

#### bootstrapInProgress

    public static boolean bootstrapInProgress()

#### setBootstrapState

    public static void setBootstrapState(SystemKeyspace.BootstrapState state)

#### isIndexBuilt

    public static boolean isIndexBuilt(java.lang.String keyspaceName,
                                       java.lang.String indexName)

#### setIndexBuilt

    public static void setIndexBuilt(java.lang.String keyspaceName,
                                     java.lang.String indexName)

#### setIndexRemoved

    public static void setIndexRemoved(java.lang.String keyspaceName,
                                       java.lang.String indexName)

#### getLocalHostId

    public static java.util.UUID getLocalHostId()

Read the host ID from the system keyspace, creating (and storing) one if none exists.

#### setLocalHostId

    public static java.util.UUID setLocalHostId(java.util.UUID hostId)

Sets the local host ID explicitly. Should only be called outside of SystemTable when replacing a node.

#### getRack

    public static java.lang.String getRack()

Gets the stored rack for the local node, or null if none have been set yet.

#### getDatacenter

    public static java.lang.String getDatacenter()

Gets the stored data center for the local node, or null if none have been set yet.

#### loadPaxosState

    public static PaxosState loadPaxosState(java.nio.ByteBuffer key,
                                            CFMetaData metadata,
                                            long now)

#### savePaxosPromise

    public static void savePaxosPromise(Commit promise)

#### savePaxosProposal

    public static void savePaxosProposal(Commit proposal)

#### paxosTtl

    public static int paxosTtl(CFMetaData metadata)

#### savePaxosCommit

    public static void savePaxosCommit(Commit commit)

#### getSSTableReadMeter

    public static RestorableMeter getSSTableReadMeter(java.lang.String keyspace,
                                                      java.lang.String table,
                                                      int generation)

Returns a RestorableMeter tracking the average read rate of a particular SSTable, restoring the last-seen rate from values in system.sstable_activity if present.

Parameters:
  `keyspace` - the keyspace the sstable belongs to
  `table` - the table the sstable belongs to
  `generation` - the generation number for the sstable

#### persistSSTableReadMeter

    public static void persistSSTableReadMeter(java.lang.String keyspace,
                                               java.lang.String table,
                                               int generation,
                                               RestorableMeter meter)

Writes the current read rates for a given SSTable to system.sstable_activity

#### clearSSTableReadMeter

    public static void clearSSTableReadMeter(java.lang.String keyspace,
                                             java.lang.String table,
                                             int generation)

Clears persisted read rates from system.sstable_activity for SSTables that have been deleted.

#### updateSizeEstimates

    public static void updateSizeEstimates(java.lang.String keyspace,
                                           java.lang.String table,
                                           java.util.Map<Range<Token>,Pair<java.lang.Long,java.lang.Long>> estimates)

Writes the current partition count and size estimates into SIZE_ESTIMATES_CF

#### clearSizeEstimates

    public static void clearSizeEstimates(java.lang.String keyspace,
                                          java.lang.String table)

Clears size estimates for a table (on table drop)

#### updateAvailableRanges

    public static void updateAvailableRanges(java.lang.String keyspace,
                                             java.util.Collection<Range<Token>> completedRanges)

#### getAvailableRanges

    public static java.util.Set<Range<Token>> getAvailableRanges(java.lang.String keyspace,
                                                                 IPartitioner partitioner)

#### resetAvailableRanges

    public static void resetAvailableRanges()

#### snapshotOnVersionChange

    public static void snapshotOnVersionChange()
                                        throws java.io.IOException

Compare the release version in the system.local table with the one included in the distro. If they don't match, snapshot all tables in the system keyspace. This is intended to be called at startup to create a backup of the system tables during an upgrade

Throws:
  `java.io.IOException`