org.apache.cassandra.service

## Class StorageService

- java.lang.Object
- - javax.management.NotificationBroadcasterSupport
  - - org.apache.cassandra.service.StorageService

All Implemented Interfaces:
  javax.management.NotificationBroadcaster, javax.management.NotificationEmitter, IEndpointStateChangeSubscriber, StorageServiceMBean

    public class StorageService
    extends javax.management.NotificationBroadcasterSupport
    implements IEndpointStateChangeSubscriber, StorageServiceMBean

This abstraction contains the token/identifier of this node on the identifier space. This token gets gossiped around. This class will also maintain histograms of the load information of other nodes in the cluster.

### Field Summary

Fields
`static StorageService` `instance`
`static DebuggableScheduledThreadPoolExecutor` `optionalTasks` tasks that do not need to be waited for on shutdown/drain
`static int` `RING_DELAY`
`static DebuggableScheduledThreadPoolExecutor` `scheduledTasks` This pool is used for periodic short (sub-second) tasks.
`static DebuggableScheduledThreadPoolExecutor` `tasks` This pool is used by tasks that can have longer execution times, and usually are non periodic.
`VersionedValue.VersionedValueFactory` `valueFactory`

### Constructor Summary

Constructors
Constructor and Description
`StorageService()`

### Method Summary

Methods
`protected void` `addExpireTimeIfFound(java.net.InetAddress endpoint, long expireTime)`
`void` `beforeChange(java.net.InetAddress endpoint, EndpointState currentState, ApplicationState newStateKey, VersionedValue newValue)`
`void` `bulkLoad(java.lang.String directory)` Starts a bulk load and blocks until it completes.
`java.lang.String` `bulkLoadAsync(java.lang.String directory)` Starts a bulk load asynchronously and returns the String representation of the planID for the new streaming session.
`Pair<java.util.Set<Range<Token>>,java.util.Set<Range<Token>>>` `calculateStreamAndFetchRanges(java.util.Collection<Range<Token>> current, java.util.Collection<Range<Token>> updated)` Calculate pair of ranges to stream/fetch for given two range collections (current ranges for keyspace and ranges after move to new token)
`void` `checkForEndpointCollision()`
`void` `clearSnapshot(java.lang.String tag, java.lang.String... keyspaceNames)` Remove the snapshot with the given name from the given keyspaces.
`void` `confirmReplication(java.net.InetAddress node)`
`void` `decommission()` transfer this node's data to other machines and remove it from service.
`void` `deliverHints(java.lang.String host)`
`java.util.List<TokenRange>` `describeLocalRing(java.lang.String keyspace)` The same as `describeRing(String)` but considers only the part of the ring formed by nodes in the local DC.
`java.util.List<TokenRange>` `describeRing(java.lang.String keyspace)` The TokenRange for a given keyspace.
`java.util.List<java.lang.String>` `describeRingJMX(java.lang.String keyspace)` The same as `describeRing(String)` but converts TokenRange to the String for JMX compatibility
`void` `disableAutoCompaction(java.lang.String ks, java.lang.String... columnFamilies)`
`void` `disableScheduledRangeXfers()` Disable processing of queued range transfers.
`void` `drain()` Shuts node off to writes, empties memtables and the commit log.
`java.util.LinkedHashMap<java.net.InetAddress,java.lang.Float>` `effectiveOwnership(java.lang.String keyspace)` Calculates ownership.
`void` `enableAutoCompaction(java.lang.String ks, java.lang.String... columnFamilies)`
`void` `enableScheduledRangeXfers()` Begin processing of queued range transfers.
`protected long` `extractExpireTime(java.lang.String[] pieces)`
`void` `finishBootstrapping()`
`void` `forceKeyspaceCleanup(java.lang.String keyspaceName, java.lang.String... columnFamilies)` Trigger a cleanup of keys on a single keyspace
`void` `forceKeyspaceCompaction(java.lang.String keyspaceName, java.lang.String... columnFamilies)` Forces major compaction of a single keyspace
`void` `forceKeyspaceFlush(java.lang.String keyspaceName, java.lang.String... columnFamilies)` Flush all memtables for a keyspace and column families.
`RepairFuture` `forceKeyspaceRepair(Range<Token> range, java.lang.String keyspaceName, boolean isSequential, java.util.Collection<java.lang.String> dataCenters, java.util.Collection<java.lang.String> hosts, java.lang.String... columnFamilies)`
`void` `forceKeyspaceRepair(java.lang.String keyspaceName, boolean isSequential, boolean isLocal, java.lang.String... columnFamilies)` Trigger proactive repair for a keyspace and column families.
`void` `forceKeyspaceRepairPrimaryRange(java.lang.String keyspaceName, boolean isSequential, boolean isLocal, java.lang.String... columnFamilies)` Triggers proactive repair but only for the node primary range.
`void` `forceKeyspaceRepairRange(java.lang.String keyspaceName, java.util.Collection<Range<Token>> ranges, boolean isSequential, boolean isLocal, java.lang.String... columnFamilies)`
`void` `forceKeyspaceRepairRange(java.lang.String beginToken, java.lang.String endToken, java.lang.String keyspaceName, boolean isSequential, boolean isLocal, java.lang.String... columnFamilies)` Perform repair of a specific range.
`void` `forceRemoveCompletion()` Force a remove operation to complete.
`int` `forceRepairAsync(java.lang.String keyspace, boolean isSequential, boolean isLocal, boolean primaryRange, java.lang.String... columnFamilies)` Invoke repair asynchronously.
`int` `forceRepairAsync(java.lang.String keyspace, boolean isSequential, boolean isLocal, java.util.Collection<Range<Token>> ranges, java.lang.String... columnFamilies)`
`int` `forceRepairAsync(java.lang.String keyspace, boolean isSequential, java.util.Collection<java.lang.String> dataCenters, java.util.Collection<java.lang.String> hosts, boolean primaryRange, java.lang.String... columnFamilies)` Invoke repair asynchronously.
`int` `forceRepairAsync(java.lang.String keyspace, boolean isSequential, java.util.Collection<java.lang.String> dataCenters, java.util.Collection<java.lang.String> hosts, java.util.Collection<Range<Token>> ranges, java.lang.String... columnFamilies)`
`int` `forceRepairRangeAsync(java.lang.String beginToken, java.lang.String endToken, java.lang.String keyspaceName, boolean isSequential, boolean isLocal, java.lang.String... columnFamilies)` Same as forceRepairAsync, but handles a specified range
`int` `forceRepairRangeAsync(java.lang.String beginToken, java.lang.String endToken, java.lang.String keyspaceName, boolean isSequential, java.util.Collection<java.lang.String> dataCenters, java.util.Collection<java.lang.String> hosts, java.lang.String... columnFamilies)` Same as forceRepairAsync, but handles a specified range
`void` `forceTerminateAllRepairSessions()`
`java.lang.String[]` `getAllDataFileLocations()` Get the list of all data file locations from conf
`java.util.List<Range<Token>>` `getAllRanges(java.util.List<Token> sortedTokens)` Get all ranges that span the ring given a set of tokens.
`java.lang.String` `getClusterName()` Returns the name of the cluster
`java.lang.String` `getCommitLogLocation()` Get location of the commit log
`int` `getCompactionThroughputMbPerSec()`
`int` `getCurrentGenerationNumber()` Return the generation value for this node.
`java.lang.String` `getDrainProgress()` get the progress of a drain operation
`int` `getExceptionCount()`
`java.util.Map<java.lang.String,java.lang.String>` `getHostIdMap()` Retrieve the mapping of endpoint to host ID
`java.util.List<java.lang.String>` `getJoiningNodes()` Retrieve the list of nodes currently bootstrapping into the ring.
`java.util.List<java.lang.String>` `getKeyspaces()`
`java.util.List<java.lang.String>` `getLeavingNodes()` Retrieve the list of nodes currently leaving the ring.
`java.util.List<java.net.InetAddress>` `getLiveNaturalEndpoints(Keyspace keyspace, java.nio.ByteBuffer key)` This method attempts to return N endpoints that are responsible for storing the specified key i.e for replication.
`java.util.List<java.net.InetAddress>` `getLiveNaturalEndpoints(Keyspace keyspace, RingPosition pos)`
`java.util.List<java.lang.String>` `getLiveNodes()` Retrieve the list of live nodes in the cluster, where "liveness" is determined by the failure detector of the node being queried.
`double` `getLoad()` raw load value
`java.util.Map<java.lang.String,java.lang.String>` `getLoadMap()` Human-readable load value.
`java.lang.String` `getLoadString()` Human-readable load value
`java.lang.String` `getLocalHostId()` Retrieve this hosts unique ID
`java.util.Collection<Range<Token>>` `getLocalPrimaryRanges(java.lang.String keyspace)`
`java.util.Collection<Range<Token>>` `getLocalRanges(java.lang.String keyspaceName)`
`java.util.Collection<Token>` `getLocalTokens()`
`java.util.List<java.lang.String>` `getMovingNodes()` Retrieve the list of nodes currently moving in the ring.
`java.util.List<java.net.InetAddress>` `getNaturalEndpoints(java.lang.String keyspaceName, java.nio.ByteBuffer key)`
`java.util.List<java.net.InetAddress>` `getNaturalEndpoints(java.lang.String keyspaceName, RingPosition pos)` This method returns the N endpoints that are responsible for storing the specified key i.e for replication.
`java.util.List<java.net.InetAddress>` `getNaturalEndpoints(java.lang.String keyspaceName, java.lang.String cf, java.lang.String key)` This method returns the N endpoints that are responsible for storing the specified key i.e for replication.
`java.lang.String` `getOperationMode()` get the operational mode (leaving, joining, normal, decommissioned, client)
`java.util.Map<java.net.InetAddress,java.lang.Float>` `getOwnership()` given a list of tokens (representing the nodes in the cluster), returns a mapping from "token -> %age of cluster owned by that token"
`static IPartitioner` `getPartitioner()`
`java.lang.String` `getPartitionerName()` Returns the cluster partitioner
`java.util.Map<java.util.List<java.lang.String>,java.util.List<java.lang.String>>` `getPendingRangeToEndpointMap(java.lang.String keyspace)` Retrieve a map of pending ranges to endpoints that describe the ring topology
`Range<Token>` `getPrimaryRangeForEndpoint(java.net.InetAddress ep)` Deprecated.
`java.util.Collection<Range<Token>>` `getPrimaryRangesForEndpoint(java.lang.String keyspace, java.net.InetAddress ep)` Get the "primary ranges" for the specified keyspace and endpoint.
`java.util.Map<Range<Token>,java.util.List<java.net.InetAddress>>` `getRangeToAddressMap(java.lang.String keyspace)`
`java.util.Map<Range<Token>,java.util.List<java.net.InetAddress>>` `getRangeToAddressMapInLocalDC(java.lang.String keyspace)`
`java.util.Map<java.util.List<java.lang.String>,java.util.List<java.lang.String>>` `getRangeToEndpointMap(java.lang.String keyspace)` for a keyspace, return the ranges and corresponding listen addresses.
`java.util.Map<java.util.List<java.lang.String>,java.util.List<java.lang.String>>` `getRangeToRpcaddressMap(java.lang.String keyspace)` for a keyspace, return the ranges and corresponding RPC addresses for a given keyspace.
`java.lang.String` `getReleaseVersion()` Fetch a string representation of the Cassandra version.
`java.lang.String` `getRemovalStatus()` Get the status of a token removal.
`java.lang.String` `getRpcaddress(java.net.InetAddress endpoint)` Return the rpc address associated with an endpoint as a string.
`java.lang.String` `getSavedCachesLocation()` Get location of the saved caches dir
`java.lang.String` `getSchemaVersion()` Fetch a string representation of the current Schema version.
`double` `getSeverity(java.net.InetAddress endpoint)`
`java.util.List<Pair<Range<Token>,java.lang.Long>>` `getSplits(java.lang.String keyspaceName, java.lang.String cfName, Range<Token> range, int keysPerSplit, CFMetaData metadata)`
`int` `getStreamThroughputMbPerSec()`
`TokenMetadata` `getTokenMetadata()`
`java.util.List<java.lang.String>` `getTokens()` Fetch string representations of the tokens for this node.
`java.util.List<java.lang.String>` `getTokens(java.lang.String endpoint)` Fetch string representations of the tokens for a specified node.
`java.util.Map<java.lang.String,java.lang.String>` `getTokenToEndpointMap()` Retrieve a map of tokens to endpoints, including the bootstrapping ones.
`int` `getTombstoneFailureThreshold()` Returns the threshold for abandoning queries with many tombstones
`int` `getTombstoneWarnThreshold()` Returns the threshold for warning of queries with many tombstones
`double` `getTracingProbability()` Returns the configured tracing probability.
`java.util.List<java.lang.String>` `getUnreachableNodes()` Retrieve the list of unreachable nodes in the cluster, as determined by this node's failure detector.
`java.lang.Iterable<ColumnFamilyStore>` `getValidColumnFamilies(boolean allowIndexes, boolean autoAddIndexes, java.lang.String keyspaceName, java.lang.String... cfNames)`
`void` `gossipSnitchInfo()`
`void` `initClient()`
`void` `initClient(int ringDelay)`
`void` `initServer()`
`void` `initServer(int delay)`
`boolean` `isBootstrapMode()`
`boolean` `isClientMode()`
`boolean` `isIncrementalBackupsEnabled()`
`boolean` `isInitialized()`
`boolean` `isJoined()`
`boolean` `isNativeTransportRunning()`
`boolean` `isRPCServerRunning()`
`void` `joinRing()`
`void` `loadNewSSTables(java.lang.String ksName, java.lang.String cfName)` #Load new SSTables to the given keyspace/columnFamily
`void` `move(java.lang.String newToken)`
`void` `onAlive(java.net.InetAddress endpoint, EndpointState state)`
`void` `onChange(java.net.InetAddress endpoint, ApplicationState state, VersionedValue value)`
`void` `onDead(java.net.InetAddress endpoint, EndpointState state)`
`void` `onJoin(java.net.InetAddress endpoint, EndpointState epState)` Use to inform interested parties about the change in the state for specified endpoint
`void` `onRemove(java.net.InetAddress endpoint)`
`void` `onRestart(java.net.InetAddress endpoint, EndpointState state)` Called whenever a node is restarted.
`java.util.Collection<Token>` `prepareReplacementInfo()`
`void` `rebuild(java.lang.String sourceDc)` Initiate a process of streaming data for which we are responsible from other nodes.
`void` `rebuildSecondaryIndex(java.lang.String ksName, java.lang.String cfName, java.lang.String... idxNames)` rebuild the specified indexes
`void` `register(IEndpointLifecycleSubscriber subscriber)`
`void` `registerDaemon(CassandraDaemon daemon)`
`void` `relocate(java.util.Collection<java.lang.String> srcTokens)`
`void` `removeNode(java.lang.String hostIdString)` Remove a node that has died, attempting to restore the replica count.
`void` `reportSeverity(double incr)` Increment about the known Compaction severity of the events in this node
`void` `requestGC()`
`void` `rescheduleFailedDeletions()`
`void` `resetLocalSchema()`
`java.util.List<java.lang.String>` `sampleKeyRange()` #Return a List of Tokens representing a sample of keys across all ColumnFamilyStores.
`void` `scrub(boolean disableSnapshot, boolean skipCorrupted, java.lang.String keyspaceName, java.lang.String... columnFamilies)` Scrub (deserialize + reserialize at the latest version, skipping bad rows if any) the given keyspace.
`void` `sendNotification(java.lang.String type, java.lang.String message, java.lang.Object userObject)` Sends JMX notification to subscribers.
`void` `setCompactionThroughputMbPerSec(int value)`
`void` `setIncrementalBackupsEnabled(boolean value)`
`void` `setLog4jLevel(java.lang.String classQualifier, java.lang.String rawLevel)` set the logging level at runtime
`void` `setStreamThroughputMbPerSec(int value)`
`void` `setTokens(java.util.Collection<Token> tokens)` This method updates the local token on disk
`void` `setTombstoneFailureThreshold(int threshold)` Sets the threshold for abandoning queries with many tombstones
`void` `setTombstoneWarnThreshold(int threshold)` Sets the threshold for warning queries with many tombstones
`void` `setTraceProbability(double probability)` Enables/Disables tracing for the whole system.
`void` `startGossiping()`
`void` `startNativeTransport()`
`void` `startRPCServer()`
`void` `stopClient()`
`void` `stopDaemon()`
`void` `stopGossiping()`
`void` `stopNativeTransport()`
`void` `stopRPCServer()`
`void` `stopTransports()`
`void` `takeColumnFamilySnapshot(java.lang.String keyspaceName, java.lang.String columnFamilyName, java.lang.String tag)` Takes the snapshot of a specific column family.
`void` `takeSnapshot(java.lang.String tag, java.lang.String... keyspaceNames)` Takes the snapshot for the given keyspaces.
`void` `truncate(java.lang.String keyspace, java.lang.String columnFamily)` Truncates (deletes) the given columnFamily from the provided keyspace.
`void` `unregister(IEndpointLifecycleSubscriber subscriber)`
`void` `updateSnitch(java.lang.String epSnitchClassName, java.lang.Boolean dynamic, java.lang.Integer dynamicUpdateInterval, java.lang.Integer dynamicResetInterval, java.lang.Double dynamicBadnessThreshold)` Change endpointsnitch class and dynamic-ness (and dynamic attributes) at runtime
`void` `upgradeSSTables(java.lang.String keyspaceName, boolean excludeCurrentVersion, java.lang.String... columnFamilies)` Rewrite all sstables to the latest version.

### Methods inherited from class javax.management.NotificationBroadcasterSupport

`addNotificationListener, getNotificationInfo, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification`

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

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

### Methods inherited from interface javax.management.NotificationEmitter

`removeNotificationListener`

### Methods inherited from interface javax.management.NotificationBroadcaster

`addNotificationListener, getNotificationInfo, removeNotificationListener`

### Field Detail

#### RING_DELAY

    public static final int RING_DELAY

#### scheduledTasks

    public static final DebuggableScheduledThreadPoolExecutor scheduledTasks

This pool is used for periodic short (sub-second) tasks.

#### tasks

    public static final DebuggableScheduledThreadPoolExecutor tasks

This pool is used by tasks that can have longer execution times, and usually are non periodic.

#### optionalTasks

    public static final DebuggableScheduledThreadPoolExecutor optionalTasks

tasks that do not need to be waited for on shutdown/drain

#### valueFactory

    public volatile VersionedValue.VersionedValueFactory valueFactory

#### instance

    public static final StorageService instance

### Constructor Detail

#### StorageService

    public StorageService()

### Method Detail

#### getPartitioner

    public static IPartitioner getPartitioner()

#### getLocalRanges

    public java.util.Collection<Range<Token>> getLocalRanges(java.lang.String keyspaceName)

#### getLocalPrimaryRanges

    public java.util.Collection<Range<Token>> getLocalPrimaryRanges(java.lang.String keyspace)

#### finishBootstrapping

    public void finishBootstrapping()

#### setTokens

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

This method updates the local token on disk

#### registerDaemon

    public void registerDaemon(CassandraDaemon daemon)

#### register

    public void register(IEndpointLifecycleSubscriber subscriber)

#### unregister

    public void unregister(IEndpointLifecycleSubscriber subscriber)

#### stopGossiping

    public void stopGossiping()

Specified by:
  `stopGossiping` in interface `StorageServiceMBean`

#### startGossiping

    public void startGossiping()

Specified by:
  `startGossiping` in interface `StorageServiceMBean`

#### startRPCServer

    public void startRPCServer()

Specified by:
  `startRPCServer` in interface `StorageServiceMBean`

#### stopRPCServer

    public void stopRPCServer()

Specified by:
  `stopRPCServer` in interface `StorageServiceMBean`

#### isRPCServerRunning

    public boolean isRPCServerRunning()

Specified by:
  `isRPCServerRunning` in interface `StorageServiceMBean`

#### startNativeTransport

    public void startNativeTransport()

Specified by:
  `startNativeTransport` in interface `StorageServiceMBean`

#### stopNativeTransport

    public void stopNativeTransport()

Specified by:
  `stopNativeTransport` in interface `StorageServiceMBean`

#### isNativeTransportRunning

    public boolean isNativeTransportRunning()

Specified by:
  `isNativeTransportRunning` in interface `StorageServiceMBean`

#### stopTransports

    public void stopTransports()

#### stopClient

    public void stopClient()

#### isInitialized

    public boolean isInitialized()

Specified by:
  `isInitialized` in interface `StorageServiceMBean`

#### stopDaemon

    public void stopDaemon()

Specified by:
  `stopDaemon` in interface `StorageServiceMBean`

#### prepareReplacementInfo

    public java.util.Collection<Token> prepareReplacementInfo()
                                                       throws ConfigurationException

Throws:
  `ConfigurationException`

#### checkForEndpointCollision

    public void checkForEndpointCollision()
                                   throws ConfigurationException

Throws:
  `ConfigurationException`

#### initClient

    public void initClient()
                    throws ConfigurationException

Throws:
  `ConfigurationException`

#### initClient

    public void initClient(int ringDelay)
                    throws ConfigurationException

Throws:
  `ConfigurationException`

#### initServer

    public void initServer()
                    throws ConfigurationException

Throws:
  `ConfigurationException`

#### initServer

    public void initServer(int delay)
                    throws ConfigurationException

Throws:
  `ConfigurationException`

#### gossipSnitchInfo

    public void gossipSnitchInfo()

#### joinRing

    public void joinRing()
                  throws java.io.IOException

Specified by:
  `joinRing` in interface `StorageServiceMBean`
Throws:
  `java.io.IOException`

#### isJoined

    public boolean isJoined()

Specified by:
  `isJoined` in interface `StorageServiceMBean`

#### rebuild

    public void rebuild(java.lang.String sourceDc)

Description copied from interface: `StorageServiceMBean`
Initiate a process of streaming data for which we are responsible from other nodes. It is similar to bootstrap except meant to be used on a node which is already in the cluster (typically containing no data) as an alternative to running repair.

Specified by:
  `rebuild` in interface `StorageServiceMBean`
Parameters:
  `sourceDc` - Name of DC from which to select sources for streaming or null to pick any node

#### setStreamThroughputMbPerSec

    public void setStreamThroughputMbPerSec(int value)

Specified by:
  `setStreamThroughputMbPerSec` in interface `StorageServiceMBean`

#### getStreamThroughputMbPerSec

    public int getStreamThroughputMbPerSec()

Specified by:
  `getStreamThroughputMbPerSec` in interface `StorageServiceMBean`

#### getCompactionThroughputMbPerSec

    public int getCompactionThroughputMbPerSec()

Specified by:
  `getCompactionThroughputMbPerSec` in interface `StorageServiceMBean`

#### setCompactionThroughputMbPerSec

    public void setCompactionThroughputMbPerSec(int value)

Specified by:
  `setCompactionThroughputMbPerSec` in interface `StorageServiceMBean`

#### isIncrementalBackupsEnabled

    public boolean isIncrementalBackupsEnabled()

Specified by:
  `isIncrementalBackupsEnabled` in interface `StorageServiceMBean`

#### setIncrementalBackupsEnabled

    public void setIncrementalBackupsEnabled(boolean value)

Specified by:
  `setIncrementalBackupsEnabled` in interface `StorageServiceMBean`

#### isBootstrapMode

    public boolean isBootstrapMode()

#### getTokenMetadata

    public TokenMetadata getTokenMetadata()

#### reportSeverity

    public void reportSeverity(double incr)

Increment about the known Compaction severity of the events in this node

#### getSeverity

    public double getSeverity(java.net.InetAddress endpoint)

#### getRangeToEndpointMap

    public java.util.Map<java.util.List<java.lang.String>,java.util.List<java.lang.String>> getRangeToEndpointMap(java.lang.String keyspace)

for a keyspace, return the ranges and corresponding listen addresses.

Specified by:
  `getRangeToEndpointMap` in interface `StorageServiceMBean`
Parameters:
  `keyspace` -
Returns:
  the endpoint map

#### getRpcaddress

    public java.lang.String getRpcaddress(java.net.InetAddress endpoint)

Return the rpc address associated with an endpoint as a string.

Parameters:
  `endpoint` - The endpoint to get rpc address for
Returns:
  the rpc address

#### getRangeToRpcaddressMap

    public java.util.Map<java.util.List<java.lang.String>,java.util.List<java.lang.String>> getRangeToRpcaddressMap(java.lang.String keyspace)

for a keyspace, return the ranges and corresponding RPC addresses for a given keyspace.

Specified by:
  `getRangeToRpcaddressMap` in interface `StorageServiceMBean`
Parameters:
  `keyspace` -
Returns:
  the endpoint map

#### getPendingRangeToEndpointMap

    public java.util.Map<java.util.List<java.lang.String>,java.util.List<java.lang.String>> getPendingRangeToEndpointMap(java.lang.String keyspace)

Description copied from interface: `StorageServiceMBean`
Retrieve a map of pending ranges to endpoints that describe the ring topology

Specified by:
  `getPendingRangeToEndpointMap` in interface `StorageServiceMBean`
Parameters:
  `keyspace` - the keyspace to get the pending range map for.
Returns:
  a map of pending ranges to endpoints

#### getRangeToAddressMap

    public java.util.Map<Range<Token>,java.util.List<java.net.InetAddress>> getRangeToAddressMap(java.lang.String keyspace)

#### getRangeToAddressMapInLocalDC

    public java.util.Map<Range<Token>,java.util.List<java.net.InetAddress>> getRangeToAddressMapInLocalDC(java.lang.String keyspace)

#### describeRingJMX

    public java.util.List<java.lang.String> describeRingJMX(java.lang.String keyspace)
                                                     throws java.io.IOException

The same as `describeRing(String)` but converts TokenRange to the String for JMX compatibility

Specified by:
  `describeRingJMX` in interface `StorageServiceMBean`
Parameters:
  `keyspace` - The keyspace to fetch information about
Returns:
  a List of TokenRange(s) converted to String for the given keyspace
Throws:
  `java.io.IOException`

#### describeRing

    public java.util.List<TokenRange> describeRing(java.lang.String keyspace)
                                            throws InvalidRequestException

The TokenRange for a given keyspace.

Parameters:
  `keyspace` - The keyspace to fetch information about
Returns:
  a List of TokenRange(s) for the given keyspace
Throws:
  `InvalidRequestException` - if there is no ring information available about keyspace

#### describeLocalRing

    public java.util.List<TokenRange> describeLocalRing(java.lang.String keyspace)
                                                 throws InvalidRequestException

The same as `describeRing(String)` but considers only the part of the ring formed by nodes in the local DC.

Throws:
  `InvalidRequestException`

#### getTokenToEndpointMap

    public java.util.Map<java.lang.String,java.lang.String> getTokenToEndpointMap()

Description copied from interface: `StorageServiceMBean`
Retrieve a map of tokens to endpoints, including the bootstrapping ones.

Specified by:
  `getTokenToEndpointMap` in interface `StorageServiceMBean`
Returns:
  a map of tokens to endpoints in ascending order

#### getLocalHostId

    public java.lang.String getLocalHostId()

Description copied from interface: `StorageServiceMBean`
Retrieve this hosts unique ID

Specified by:
  `getLocalHostId` in interface `StorageServiceMBean`

#### getHostIdMap

    public java.util.Map<java.lang.String,java.lang.String> getHostIdMap()

Description copied from interface: `StorageServiceMBean`
Retrieve the mapping of endpoint to host ID

Specified by:
  `getHostIdMap` in interface `StorageServiceMBean`

#### beforeChange

    public void beforeChange(java.net.InetAddress endpoint,
                    EndpointState currentState,
                    ApplicationState newStateKey,
                    VersionedValue newValue)

Specified by:
  `beforeChange` in interface `IEndpointStateChangeSubscriber`

#### onChange

    public void onChange(java.net.InetAddress endpoint,
                ApplicationState state,
                VersionedValue value)

Specified by:
  `onChange` in interface `IEndpointStateChangeSubscriber`

#### addExpireTimeIfFound

    protected void addExpireTimeIfFound(java.net.InetAddress endpoint,
                            long expireTime)

#### extractExpireTime

    protected long extractExpireTime(java.lang.String[] pieces)

#### onJoin

    public void onJoin(java.net.InetAddress endpoint,
              EndpointState epState)

Description copied from interface: `IEndpointStateChangeSubscriber`
Use to inform interested parties about the change in the state for specified endpoint

Specified by:
  `onJoin` in interface `IEndpointStateChangeSubscriber`
Parameters:
  `endpoint` - endpoint for which the state change occurred.
  `epState` - state that actually changed for the above endpoint.

#### onAlive

    public void onAlive(java.net.InetAddress endpoint,
               EndpointState state)

Specified by:
  `onAlive` in interface `IEndpointStateChangeSubscriber`

#### onRemove

    public void onRemove(java.net.InetAddress endpoint)

Specified by:
  `onRemove` in interface `IEndpointStateChangeSubscriber`

#### onDead

    public void onDead(java.net.InetAddress endpoint,
              EndpointState state)

Specified by:
  `onDead` in interface `IEndpointStateChangeSubscriber`

#### onRestart

    public void onRestart(java.net.InetAddress endpoint,
                 EndpointState state)

Description copied from interface: `IEndpointStateChangeSubscriber`
Called whenever a node is restarted. Note that there is no guarantee when that happens that the node was previously marked down. It will have only if `state.isAlive() == false` as `state` is from before the restarted node is marked up.

Specified by:
  `onRestart` in interface `IEndpointStateChangeSubscriber`

#### getLoad

    public double getLoad()

raw load value

Specified by:
  `getLoad` in interface `StorageServiceMBean`
See Also:
  `StorageMetrics.load`

#### getLoadString

    public java.lang.String getLoadString()

Description copied from interface: `StorageServiceMBean`
Human-readable load value

Specified by:
  `getLoadString` in interface `StorageServiceMBean`

#### getLoadMap

    public java.util.Map<java.lang.String,java.lang.String> getLoadMap()

Description copied from interface: `StorageServiceMBean`
Human-readable load value. Keys are IP addresses.

Specified by:
  `getLoadMap` in interface `StorageServiceMBean`

#### deliverHints

    public final void deliverHints(java.lang.String host)
                            throws java.net.UnknownHostException

Specified by:
  `deliverHints` in interface `StorageServiceMBean`
Throws:
  `java.net.UnknownHostException`

#### getLocalTokens

    public java.util.Collection<Token> getLocalTokens()

#### getTokens

    public java.util.List<java.lang.String> getTokens()

Description copied from interface: `StorageServiceMBean`
Fetch string representations of the tokens for this node.

Specified by:
  `getTokens` in interface `StorageServiceMBean`
Returns:
  a collection of tokens formatted as strings

#### getTokens

    public java.util.List<java.lang.String> getTokens(java.lang.String endpoint)
                                               throws java.net.UnknownHostException

Description copied from interface: `StorageServiceMBean`
Fetch string representations of the tokens for a specified node.

Specified by:
  `getTokens` in interface `StorageServiceMBean`
Parameters:
  `endpoint` - string representation of an node
Returns:
  a collection of tokens formatted as strings
Throws:
  `java.net.UnknownHostException`

#### getReleaseVersion

    public java.lang.String getReleaseVersion()

Description copied from interface: `StorageServiceMBean`
Fetch a string representation of the Cassandra version.

Specified by:
  `getReleaseVersion` in interface `StorageServiceMBean`
Returns:
  A string representation of the Cassandra version.

#### getSchemaVersion

    public java.lang.String getSchemaVersion()

Description copied from interface: `StorageServiceMBean`
Fetch a string representation of the current Schema version.

Specified by:
  `getSchemaVersion` in interface `StorageServiceMBean`
Returns:
  A string representation of the Schema version.

#### getLeavingNodes

    public java.util.List<java.lang.String> getLeavingNodes()

Description copied from interface: `StorageServiceMBean`
Retrieve the list of nodes currently leaving the ring.

Specified by:
  `getLeavingNodes` in interface `StorageServiceMBean`
Returns:
  set of IP addresses, as Strings

#### getMovingNodes

    public java.util.List<java.lang.String> getMovingNodes()

Description copied from interface: `StorageServiceMBean`
Retrieve the list of nodes currently moving in the ring.

Specified by:
  `getMovingNodes` in interface `StorageServiceMBean`
Returns:
  set of IP addresses, as Strings

#### getJoiningNodes

    public java.util.List<java.lang.String> getJoiningNodes()

Description copied from interface: `StorageServiceMBean`
Retrieve the list of nodes currently bootstrapping into the ring.

Specified by:
  `getJoiningNodes` in interface `StorageServiceMBean`
Returns:
  set of IP addresses, as Strings

#### getLiveNodes

    public java.util.List<java.lang.String> getLiveNodes()

Description copied from interface: `StorageServiceMBean`
Retrieve the list of live nodes in the cluster, where "liveness" is determined by the failure detector of the node being queried.

Specified by:
  `getLiveNodes` in interface `StorageServiceMBean`
Returns:
  set of IP addresses, as Strings

#### getUnreachableNodes

    public java.util.List<java.lang.String> getUnreachableNodes()

Description copied from interface: `StorageServiceMBean`
Retrieve the list of unreachable nodes in the cluster, as determined by this node's failure detector.

Specified by:
  `getUnreachableNodes` in interface `StorageServiceMBean`
Returns:
  set of IP addresses, as Strings

#### getAllDataFileLocations

    public java.lang.String[] getAllDataFileLocations()

Description copied from interface: `StorageServiceMBean`
Get the list of all data file locations from conf

Specified by:
  `getAllDataFileLocations` in interface `StorageServiceMBean`
Returns:
  String array of all locations

#### getCommitLogLocation

    public java.lang.String getCommitLogLocation()

Description copied from interface: `StorageServiceMBean`
Get location of the commit log

Specified by:
  `getCommitLogLocation` in interface `StorageServiceMBean`
Returns:
  a string path

#### getSavedCachesLocation

    public java.lang.String getSavedCachesLocation()

Description copied from interface: `StorageServiceMBean`
Get location of the saved caches dir

Specified by:
  `getSavedCachesLocation` in interface `StorageServiceMBean`
Returns:
  a string path

#### getCurrentGenerationNumber

    public int getCurrentGenerationNumber()

Description copied from interface: `StorageServiceMBean`
Return the generation value for this node.

Specified by:
  `getCurrentGenerationNumber` in interface `StorageServiceMBean`
Returns:
  generation number

#### forceKeyspaceCleanup

    public void forceKeyspaceCleanup(java.lang.String keyspaceName,
                            java.lang.String... columnFamilies)
                              throws java.io.IOException,
                                     java.util.concurrent.ExecutionException,
                                     java.lang.InterruptedException

Description copied from interface: `StorageServiceMBean`
Trigger a cleanup of keys on a single keyspace

Specified by:
  `forceKeyspaceCleanup` in interface `StorageServiceMBean`
Throws:
  `java.io.IOException`
  `java.util.concurrent.ExecutionException`
  `java.lang.InterruptedException`

#### scrub

    public void scrub(boolean disableSnapshot,
             boolean skipCorrupted,
             java.lang.String keyspaceName,
             java.lang.String... columnFamilies)
               throws java.io.IOException,
                      java.util.concurrent.ExecutionException,
                      java.lang.InterruptedException

Description copied from interface: `StorageServiceMBean`
Scrub (deserialize + reserialize at the latest version, skipping bad rows if any) the given keyspace. If columnFamilies array is empty, all CFs are scrubbed. Scrubbed CFs will be snapshotted first, if disableSnapshot is false

Specified by:
  `scrub` in interface `StorageServiceMBean`
Throws:
  `java.io.IOException`
  `java.util.concurrent.ExecutionException`
  `java.lang.InterruptedException`

#### upgradeSSTables

    public void upgradeSSTables(java.lang.String keyspaceName,
                       boolean excludeCurrentVersion,
                       java.lang.String... columnFamilies)
                         throws java.io.IOException,
                                java.util.concurrent.ExecutionException,
                                java.lang.InterruptedException

Description copied from interface: `StorageServiceMBean`
Rewrite all sstables to the latest version. Unlike scrub, it doesn't skip bad rows and do not snapshot sstables first.

Specified by:
  `upgradeSSTables` in interface `StorageServiceMBean`
Throws:
  `java.io.IOException`
  `java.util.concurrent.ExecutionException`
  `java.lang.InterruptedException`

#### forceKeyspaceCompaction

    public void forceKeyspaceCompaction(java.lang.String keyspaceName,
                               java.lang.String... columnFamilies)
                                 throws java.io.IOException,
                                        java.util.concurrent.ExecutionException,
                                        java.lang.InterruptedException

Description copied from interface: `StorageServiceMBean`
Forces major compaction of a single keyspace

Specified by:
  `forceKeyspaceCompaction` in interface `StorageServiceMBean`
Throws:
  `java.io.IOException`
  `java.util.concurrent.ExecutionException`
  `java.lang.InterruptedException`

#### takeSnapshot

    public void takeSnapshot(java.lang.String tag,
                    java.lang.String... keyspaceNames)
                      throws java.io.IOException

Takes the snapshot for the given keyspaces. A snapshot name must be specified.

Specified by:
  `takeSnapshot` in interface `StorageServiceMBean`
Parameters:
  `tag` - the tag given to the snapshot; may not be null or empty
  `keyspaceNames` - the names of the keyspaces to snapshot; empty means "all."
Throws:
  `java.io.IOException`

#### takeColumnFamilySnapshot

    public void takeColumnFamilySnapshot(java.lang.String keyspaceName,
                                java.lang.String columnFamilyName,
                                java.lang.String tag)
                                  throws java.io.IOException

Takes the snapshot of a specific column family. A snapshot name must be specified.

Specified by:
  `takeColumnFamilySnapshot` in interface `StorageServiceMBean`
Parameters:
  `keyspaceName` - the keyspace which holds the specified column family
  `columnFamilyName` - the column family to snapshot
  `tag` - the tag given to the snapshot; may not be null or empty
Throws:
  `java.io.IOException`

#### clearSnapshot

    public void clearSnapshot(java.lang.String tag,
                     java.lang.String... keyspaceNames)
                       throws java.io.IOException

Remove the snapshot with the given name from the given keyspaces. If no tag is specified we will remove all snapshots.

Specified by:
  `clearSnapshot` in interface `StorageServiceMBean`
Throws:
  `java.io.IOException`

#### getValidColumnFamilies

    public java.lang.Iterable<ColumnFamilyStore> getValidColumnFamilies(boolean allowIndexes,
                                                               boolean autoAddIndexes,
                                                               java.lang.String keyspaceName,
                                                               java.lang.String... cfNames)
                                                                 throws java.io.IOException

Parameters:
  `allowIndexes` - Allow index CF names to be passed in
  `autoAddIndexes` - Automatically add secondary indexes if a CF has them
  `keyspaceName` - keyspace
  `cfNames` - CFs
Throws:
  `java.io.IOException`

#### forceKeyspaceFlush

    public void forceKeyspaceFlush(java.lang.String keyspaceName,
                          java.lang.String... columnFamilies)
                            throws java.io.IOException

Flush all memtables for a keyspace and column families.

Specified by:
  `forceKeyspaceFlush` in interface `StorageServiceMBean`
Parameters:
  `keyspaceName` -
  `columnFamilies` -
Throws:
  `java.io.IOException`

#### sendNotification

    public void sendNotification(java.lang.String type,
                        java.lang.String message,
                        java.lang.Object userObject)

Sends JMX notification to subscribers.

Parameters:
  `type` - Message type
  `message` - Message itself
  `userObject` - Arbitrary object to attach to notification

#### forceRepairAsync

    public int forceRepairAsync(java.lang.String keyspace,
                       boolean isSequential,
                       java.util.Collection<java.lang.String> dataCenters,
                       java.util.Collection<java.lang.String> hosts,
                       boolean primaryRange,
                       java.lang.String... columnFamilies)

Description copied from interface: `StorageServiceMBean`
Invoke repair asynchronously. You can track repair progress by subscribing JMX notification sent from this StorageServiceMBean. Notification format is: type: "repair" userObject: int array of length 2, [0]=command number, [1]=ordinal of AntiEntropyService.Status

Specified by:
  `forceRepairAsync` in interface `StorageServiceMBean`
Returns:
  Repair command number, or 0 if nothing to repair

#### forceRepairAsync

    public int forceRepairAsync(java.lang.String keyspace,
                       boolean isSequential,
                       java.util.Collection<java.lang.String> dataCenters,
                       java.util.Collection<java.lang.String> hosts,
                       java.util.Collection<Range<Token>> ranges,
                       java.lang.String... columnFamilies)

#### forceRepairAsync

    public int forceRepairAsync(java.lang.String keyspace,
                       boolean isSequential,
                       boolean isLocal,
                       boolean primaryRange,
                       java.lang.String... columnFamilies)

Description copied from interface: `StorageServiceMBean`
Invoke repair asynchronously. You can track repair progress by subscribing JMX notification sent from this StorageServiceMBean. Notification format is: type: "repair" userObject: int array of length 2, [0]=command number, [1]=ordinal of AntiEntropyService.Status

Specified by:
  `forceRepairAsync` in interface `StorageServiceMBean`
Returns:
  Repair command number, or 0 if nothing to repair
See Also:
  `StorageServiceMBean.forceKeyspaceRepair(String, boolean, boolean, String...)`

#### forceRepairAsync

    public int forceRepairAsync(java.lang.String keyspace,
                       boolean isSequential,
                       boolean isLocal,
                       java.util.Collection<Range<Token>> ranges,
                       java.lang.String... columnFamilies)

#### forceRepairRangeAsync

    public int forceRepairRangeAsync(java.lang.String beginToken,
                            java.lang.String endToken,
                            java.lang.String keyspaceName,
                            boolean isSequential,
                            java.util.Collection<java.lang.String> dataCenters,
                            java.util.Collection<java.lang.String> hosts,
                            java.lang.String... columnFamilies)

Description copied from interface: `StorageServiceMBean`
Same as forceRepairAsync, but handles a specified range

Specified by:
  `forceRepairRangeAsync` in interface `StorageServiceMBean`

#### forceRepairRangeAsync

    public int forceRepairRangeAsync(java.lang.String beginToken,
                            java.lang.String endToken,
                            java.lang.String keyspaceName,
                            boolean isSequential,
                            boolean isLocal,
                            java.lang.String... columnFamilies)

Description copied from interface: `StorageServiceMBean`
Same as forceRepairAsync, but handles a specified range

Specified by:
  `forceRepairRangeAsync` in interface `StorageServiceMBean`

#### forceKeyspaceRepair

    public void forceKeyspaceRepair(java.lang.String keyspaceName,
                           boolean isSequential,
                           boolean isLocal,
                           java.lang.String... columnFamilies)
                             throws java.io.IOException

Trigger proactive repair for a keyspace and column families.

Specified by:
  `forceKeyspaceRepair` in interface `StorageServiceMBean`
Parameters:
  `keyspaceName` -
  `columnFamilies` -
Throws:
  `java.io.IOException`

#### forceKeyspaceRepairPrimaryRange

    public void forceKeyspaceRepairPrimaryRange(java.lang.String keyspaceName,
                                       boolean isSequential,
                                       boolean isLocal,
                                       java.lang.String... columnFamilies)
                                         throws java.io.IOException

Description copied from interface: `StorageServiceMBean`
Triggers proactive repair but only for the node primary range.

Specified by:
  `forceKeyspaceRepairPrimaryRange` in interface `StorageServiceMBean`
Throws:
  `java.io.IOException`

#### forceKeyspaceRepairRange

    public void forceKeyspaceRepairRange(java.lang.String beginToken,
                                java.lang.String endToken,
                                java.lang.String keyspaceName,
                                boolean isSequential,
                                boolean isLocal,
                                java.lang.String... columnFamilies)
                                  throws java.io.IOException

Description copied from interface: `StorageServiceMBean`
Perform repair of a specific range. This allows incremental repair to be performed by having an external controller submitting repair jobs. Note that the provided range much be a subset of one of the node local range.

Specified by:
  `forceKeyspaceRepairRange` in interface `StorageServiceMBean`
Throws:
  `java.io.IOException`

#### forceKeyspaceRepairRange

    public void forceKeyspaceRepairRange(java.lang.String keyspaceName,
                                java.util.Collection<Range<Token>> ranges,
                                boolean isSequential,
                                boolean isLocal,
                                java.lang.String... columnFamilies)
                                  throws java.io.IOException

Throws:
  `java.io.IOException`

#### forceKeyspaceRepair

    public RepairFuture forceKeyspaceRepair(Range<Token> range,
                                   java.lang.String keyspaceName,
                                   boolean isSequential,
                                   java.util.Collection<java.lang.String> dataCenters,
                                   java.util.Collection<java.lang.String> hosts,
                                   java.lang.String... columnFamilies)
                                     throws java.io.IOException

Throws:
  `java.io.IOException`

#### forceTerminateAllRepairSessions

    public void forceTerminateAllRepairSessions()

Specified by:
  `forceTerminateAllRepairSessions` in interface `StorageServiceMBean`

#### getPrimaryRangesForEndpoint

    public java.util.Collection<Range<Token>> getPrimaryRangesForEndpoint(java.lang.String keyspace,
                                                                 java.net.InetAddress ep)

Get the "primary ranges" for the specified keyspace and endpoint. "Primary ranges" are the ranges that the node is responsible for storing replica primarily. The node that stores replica primarily is defined as the first node returned by `AbstractReplicationStrategy.calculateNaturalEndpoints(org.apache.cassandra.dht.Token, org.apache.cassandra.locator.TokenMetadata)`.

Parameters:
  `keyspace` -
  `ep` - endpoint we are interested in.
Returns:
  primary ranges for the specified endpoint.

#### getPrimaryRangeForEndpoint

    @Deprecated
    public Range<Token> getPrimaryRangeForEndpoint(java.net.InetAddress ep)

Deprecated.
Previously, primary range is the range that the node is responsible for and calculated only from the token assigned to the node. But this does not take replication strategy into account, and therefore returns insufficient range especially using NTS with replication only to certain DC(see CASSANDRA-5424).

Parameters:
  `ep` - endpoint we are interested in.
Returns:
  range for the specified endpoint.

#### getAllRanges

    public java.util.List<Range<Token>> getAllRanges(java.util.List<Token> sortedTokens)

Get all ranges that span the ring given a set of tokens. All ranges are in sorted order of ranges.

Returns:
  ranges in sorted order

#### getNaturalEndpoints

    public java.util.List<java.net.InetAddress> getNaturalEndpoints(java.lang.String keyspaceName,
                                                           java.lang.String cf,
                                                           java.lang.String key)

This method returns the N endpoints that are responsible for storing the specified key i.e for replication.

Specified by:
  `getNaturalEndpoints` in interface `StorageServiceMBean`
Parameters:
  `keyspaceName` - keyspace name also known as keyspace
  `cf` - Column family name
  `key` - key for which we need to find the endpoint
Returns:
  the endpoint responsible for this key

#### getNaturalEndpoints

    public java.util.List<java.net.InetAddress> getNaturalEndpoints(java.lang.String keyspaceName,
                                                           java.nio.ByteBuffer key)

Specified by:
  `getNaturalEndpoints` in interface `StorageServiceMBean`

#### getNaturalEndpoints

    public java.util.List<java.net.InetAddress> getNaturalEndpoints(java.lang.String keyspaceName,
                                                           RingPosition pos)

This method returns the N endpoints that are responsible for storing the specified key i.e for replication.

Parameters:
  `keyspaceName` - keyspace name also known as keyspace
  `pos` - position for which we need to find the endpoint
Returns:
  the endpoint responsible for this token

#### getLiveNaturalEndpoints

    public java.util.List<java.net.InetAddress> getLiveNaturalEndpoints(Keyspace keyspace,
                                                               java.nio.ByteBuffer key)

This method attempts to return N endpoints that are responsible for storing the specified key i.e for replication.

Parameters:
  `keyspace` - keyspace name also known as keyspace
  `key` - key for which we need to find the endpoint
Returns:
  the endpoint responsible for this key

#### getLiveNaturalEndpoints

    public java.util.List<java.net.InetAddress> getLiveNaturalEndpoints(Keyspace keyspace,
                                                               RingPosition pos)

#### setLog4jLevel

    public void setLog4jLevel(java.lang.String classQualifier,
                     java.lang.String rawLevel)

Description copied from interface: `StorageServiceMBean`
set the logging level at runtime

Specified by:
  `setLog4jLevel` in interface `StorageServiceMBean`

#### getSplits

    public java.util.List<Pair<Range<Token>,java.lang.Long>> getSplits(java.lang.String keyspaceName,
                                                              java.lang.String cfName,
                                                              Range<Token> range,
                                                              int keysPerSplit,
                                                              CFMetaData metadata)

Returns:
  list of Token ranges (_not_ keys!) together with estimated key count, breaking up the data this node is responsible for into pieces of roughly keysPerSplit

#### decommission

    public void decommission()
                      throws java.lang.InterruptedException

Description copied from interface: `StorageServiceMBean`
transfer this node's data to other machines and remove it from service.

Specified by:
  `decommission` in interface `StorageServiceMBean`
Throws:
  `java.lang.InterruptedException`

#### move

    public void move(java.lang.String newToken)
              throws java.io.IOException

Specified by:
  `move` in interface `StorageServiceMBean`
Parameters:
  `newToken` - token to move this node to. This node will unload its data onto its neighbors, and bootstrap to the new token.
Throws:
  `java.io.IOException`

#### relocate

    public void relocate(java.util.Collection<java.lang.String> srcTokens)
                  throws java.io.IOException

Specified by:
  `relocate` in interface `StorageServiceMBean`
Parameters:
  `srcTokens` - tokens to move to this node
Throws:
  `java.io.IOException`

#### getRemovalStatus

    public java.lang.String getRemovalStatus()

Get the status of a token removal.

Specified by:
  `getRemovalStatus` in interface `StorageServiceMBean`

#### forceRemoveCompletion

    public void forceRemoveCompletion()

Force a remove operation to complete. This may be necessary if a remove operation blocks forever due to node/stream failure. removeToken() must be called first, this is a last resort measure. No further attempt will be made to restore replicas.

Specified by:
  `forceRemoveCompletion` in interface `StorageServiceMBean`

#### removeNode

    public void removeNode(java.lang.String hostIdString)

Remove a node that has died, attempting to restore the replica count. If the node is alive, decommission should be attempted. If decommission fails, then removeToken should be called. If we fail while trying to restore the replica count, finally forceRemoveCompleteion should be called to forcibly remove the node without regard to replica count.

Specified by:
  `removeNode` in interface `StorageServiceMBean`
Parameters:
  `hostIdString` - token for the node

#### confirmReplication

    public void confirmReplication(java.net.InetAddress node)

#### isClientMode

    public boolean isClientMode()

#### requestGC

    public void requestGC()

#### getOperationMode

    public java.lang.String getOperationMode()

Description copied from interface: `StorageServiceMBean`
get the operational mode (leaving, joining, normal, decommissioned, client)

Specified by:
  `getOperationMode` in interface `StorageServiceMBean`

#### getDrainProgress

    public java.lang.String getDrainProgress()

Description copied from interface: `StorageServiceMBean`
get the progress of a drain operation

Specified by:
  `getDrainProgress` in interface `StorageServiceMBean`

#### drain

    public void drain()
               throws java.io.IOException,
                      java.lang.InterruptedException,
                      java.util.concurrent.ExecutionException

Shuts node off to writes, empties memtables and the commit log. There are two differences between drain and the normal shutdown hook: - Drain waits for in-progress streaming to complete - Drain flushes *all* columnfamilies (shutdown hook only flushes non-durable CFs)

Specified by:
  `drain` in interface `StorageServiceMBean`
Throws:
  `java.io.IOException`
  `java.lang.InterruptedException`
  `java.util.concurrent.ExecutionException`

#### truncate

    public void truncate(java.lang.String keyspace,
                java.lang.String columnFamily)
                  throws java.util.concurrent.TimeoutException,
                         java.io.IOException

Description copied from interface: `StorageServiceMBean`
Truncates (deletes) the given columnFamily from the provided keyspace. Calling truncate results in actual deletion of all data in the cluster under the given columnFamily and it will fail unless all hosts are up. All data in the given column family will be deleted, but its definition will not be affected.

Specified by:
  `truncate` in interface `StorageServiceMBean`
Parameters:
  `keyspace` - The keyspace to delete from
  `columnFamily` - The column family to delete data from.
Throws:
  `java.util.concurrent.TimeoutException`
  `java.io.IOException`

#### getOwnership

    public java.util.Map<java.net.InetAddress,java.lang.Float> getOwnership()

Description copied from interface: `StorageServiceMBean`
given a list of tokens (representing the nodes in the cluster), returns a mapping from "token -> %age of cluster owned by that token"

Specified by:
  `getOwnership` in interface `StorageServiceMBean`

#### effectiveOwnership

    public java.util.LinkedHashMap<java.net.InetAddress,java.lang.Float> effectiveOwnership(java.lang.String keyspace)
                                                                                     throws java.lang.IllegalStateException

Calculates ownership. If there are multiple DC's and the replication strategy is DC aware then ownership will be calculated per dc, i.e. each DC will have total ring ownership divided amongst its nodes. Without replication total ownership will be a multiple of the number of DC's and this value will then go up within each DC depending on the number of replicas within itself. For DC unaware replication strategies, ownership without replication will be 100%.

Specified by:
  `effectiveOwnership` in interface `StorageServiceMBean`
Throws:
  `java.lang.IllegalStateException` - when node is not configured properly.

#### getKeyspaces

    public java.util.List<java.lang.String> getKeyspaces()

Specified by:
  `getKeyspaces` in interface `StorageServiceMBean`

#### updateSnitch

    public void updateSnitch(java.lang.String epSnitchClassName,
                    java.lang.Boolean dynamic,
                    java.lang.Integer dynamicUpdateInterval,
                    java.lang.Integer dynamicResetInterval,
                    java.lang.Double dynamicBadnessThreshold)
                      throws java.lang.ClassNotFoundException

Description copied from interface: `StorageServiceMBean`
Change endpointsnitch class and dynamic-ness (and dynamic attributes) at runtime

Specified by:
  `updateSnitch` in interface `StorageServiceMBean`
Parameters:
  `epSnitchClassName` - the canonical path name for a class implementing IEndpointSnitch
  `dynamic` - boolean that decides whether dynamicsnitch is used or not
  `dynamicUpdateInterval` - integer, in ms (default 100)
  `dynamicResetInterval` - integer, in ms (default 600,000)
  `dynamicBadnessThreshold` - double, (default 0.0)
Throws:
  `java.lang.ClassNotFoundException`

#### calculateStreamAndFetchRanges

    public Pair<java.util.Set<Range<Token>>,java.util.Set<Range<Token>>> calculateStreamAndFetchRanges(java.util.Collection<Range<Token>> current,
                                                                                              java.util.Collection<Range<Token>> updated)

Calculate pair of ranges to stream/fetch for given two range collections (current ranges for keyspace and ranges after move to new token)

Parameters:
  `current` - collection of the ranges by current token
  `updated` - collection of the ranges after token is changed
Returns:
  pair of ranges to stream/fetch for given current and updated range collections

#### bulkLoad

    public void bulkLoad(java.lang.String directory)

Description copied from interface: `StorageServiceMBean`
Starts a bulk load and blocks until it completes.

Specified by:
  `bulkLoad` in interface `StorageServiceMBean`

#### bulkLoadAsync

    public java.lang.String bulkLoadAsync(java.lang.String directory)

Description copied from interface: `StorageServiceMBean`
Starts a bulk load asynchronously and returns the String representation of the planID for the new streaming session.

Specified by:
  `bulkLoadAsync` in interface `StorageServiceMBean`

#### getExceptionCount

    public int getExceptionCount()

Specified by:
  `getExceptionCount` in interface `StorageServiceMBean`

#### rescheduleFailedDeletions

    public void rescheduleFailedDeletions()

Specified by:
  `rescheduleFailedDeletions` in interface `StorageServiceMBean`

#### loadNewSSTables

    public void loadNewSSTables(java.lang.String ksName,
                       java.lang.String cfName)

#Load new SSTables to the given keyspace/columnFamily

Specified by:
  `loadNewSSTables` in interface `StorageServiceMBean`
Parameters:
  `ksName` - The parent keyspace name
  `cfName` - The ColumnFamily name where SSTables belong

#### sampleKeyRange

    public java.util.List<java.lang.String> sampleKeyRange()

#Return a List of Tokens representing a sample of keys across all ColumnFamilyStores. Note: this should be left as an operation, not an attribute (methods starting with "get") to avoid sending potentially multiple MB of data when accessing this mbean by default. See CASSANDRA-4452.

Specified by:
  `sampleKeyRange` in interface `StorageServiceMBean`
Returns:
  set of Tokens as Strings

#### rebuildSecondaryIndex

    public void rebuildSecondaryIndex(java.lang.String ksName,
                             java.lang.String cfName,
                             java.lang.String... idxNames)

Description copied from interface: `StorageServiceMBean`
rebuild the specified indexes

Specified by:
  `rebuildSecondaryIndex` in interface `StorageServiceMBean`

#### resetLocalSchema

    public void resetLocalSchema()
                          throws java.io.IOException

Specified by:
  `resetLocalSchema` in interface `StorageServiceMBean`
Throws:
  `java.io.IOException`

#### setTraceProbability

    public void setTraceProbability(double probability)

Description copied from interface: `StorageServiceMBean`
Enables/Disables tracing for the whole system. Only thrift requests can start tracing currently.

Specified by:
  `setTraceProbability` in interface `StorageServiceMBean`
Parameters:
  `probability` - ]0,1[ will enable tracing on a partial number of requests with the provided probability. 0 will disable tracing and 1 will enable tracing for all requests (which mich severely cripple the system)

#### getTracingProbability

    public double getTracingProbability()

Description copied from interface: `StorageServiceMBean`
Returns the configured tracing probability.

Specified by:
  `getTracingProbability` in interface `StorageServiceMBean`

#### enableScheduledRangeXfers

    public void enableScheduledRangeXfers()

Description copied from interface: `StorageServiceMBean`
Begin processing of queued range transfers.

Specified by:
  `enableScheduledRangeXfers` in interface `StorageServiceMBean`

#### disableScheduledRangeXfers

    public void disableScheduledRangeXfers()

Description copied from interface: `StorageServiceMBean`
Disable processing of queued range transfers.

Specified by:
  `disableScheduledRangeXfers` in interface `StorageServiceMBean`

#### disableAutoCompaction

    public void disableAutoCompaction(java.lang.String ks,
                             java.lang.String... columnFamilies)
                               throws java.io.IOException

Specified by:
  `disableAutoCompaction` in interface `StorageServiceMBean`
Throws:
  `java.io.IOException`

#### enableAutoCompaction

    public void enableAutoCompaction(java.lang.String ks,
                            java.lang.String... columnFamilies)
                              throws java.io.IOException

Specified by:
  `enableAutoCompaction` in interface `StorageServiceMBean`
Throws:
  `java.io.IOException`

#### getClusterName

    public java.lang.String getClusterName()

Returns the name of the cluster

Specified by:
  `getClusterName` in interface `StorageServiceMBean`

#### getPartitionerName

    public java.lang.String getPartitionerName()

Returns the cluster partitioner

Specified by:
  `getPartitionerName` in interface `StorageServiceMBean`

#### getTombstoneWarnThreshold

    public int getTombstoneWarnThreshold()

Description copied from interface: `StorageServiceMBean`
Returns the threshold for warning of queries with many tombstones

Specified by:
  `getTombstoneWarnThreshold` in interface `StorageServiceMBean`

#### setTombstoneWarnThreshold

    public void setTombstoneWarnThreshold(int threshold)

Description copied from interface: `StorageServiceMBean`
Sets the threshold for warning queries with many tombstones

Specified by:
  `setTombstoneWarnThreshold` in interface `StorageServiceMBean`

#### getTombstoneFailureThreshold

    public int getTombstoneFailureThreshold()

Description copied from interface: `StorageServiceMBean`
Returns the threshold for abandoning queries with many tombstones

Specified by:
  `getTombstoneFailureThreshold` in interface `StorageServiceMBean`

#### setTombstoneFailureThreshold

    public void setTombstoneFailureThreshold(int threshold)

Description copied from interface: `StorageServiceMBean`
Sets the threshold for abandoning queries with many tombstones

Specified by:
  `setTombstoneFailureThreshold` in interface `StorageServiceMBean`