org.apache.cassandra.db.commitlog

## Class CommitLog

- java.lang.Object
- - org.apache.cassandra.db.commitlog.CommitLog

All Implemented Interfaces:
  CommitLogMBean

    public class CommitLog
    extends java.lang.Object
    implements CommitLogMBean

### Nested Class Summary

Nested Classes
`static class` `CommitLog.Configuration`

### Field Summary

Fields
`CommitLogSegmentManager` `allocator`
`CommitLogArchiver` `archiver`
`static CommitLog` `instance`
`java.lang.String` `location`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`int` `activeSegments()` Used by tests.
`ReplayPosition` `add(Mutation mutation)` Add a Mutation to the commit log.
`void` `discardCompletedSegments(java.util.UUID cfId, ReplayPosition context)` Modifies the per-CF dirty cursors of any commit log segments for the column family according to the position given.
`void` `forceRecycleAllSegments()` Flushes all dirty CFs, waiting for them to free and recycle any segments they were retaining
`void` `forceRecycleAllSegments(java.lang.Iterable<java.util.UUID> droppedCfs)` Flushes all dirty CFs, waiting for them to free and recycle any segments they were retaining
`long` `getActiveContentSize()`
`long` `getActiveOnDiskSize()`
`java.util.Map<java.lang.String,java.lang.Double>` `getActiveSegmentCompressionRatios()`
`java.util.List<java.lang.String>` `getActiveSegmentNames()`
`java.lang.String` `getArchiveCommand()` Command to execute to archive a commitlog segment.
`java.util.List<java.lang.String>` `getArchivingSegmentNames()`
`ReplayPosition` `getContext()`
`java.lang.String` `getRestoreCommand()` Command to execute to make an archived commitlog live again
`java.lang.String` `getRestoreDirectories()` Directory to scan the recovery files in
`long` `getRestorePointInTime()` Restore mutations created up to and including this timestamp in GMT Format: yyyy:MM:dd HH:mm:ss (2012:04:31 20:43:12) Recovery will continue through the segment when the first client-supplied timestamp greater than this time is encountered, but only mutations less than or equal to this timestamp will be applied.
`java.lang.String` `getRestorePrecision()` get precision of the timestamp used in the restore (MILLISECONDS, MICROSECONDS, ...) to determine if passed the restore point in time.
`static boolean` `handleCommitError(java.lang.String message, java.lang.Throwable t)`
`int` `recover()` Perform recovery on commit logs located in the directory specified by the config file.
`int` `recover(java.io.File... clogs)` Perform recovery on a list of commit log files.
`void` `recover(java.lang.String path)` Perform recovery on a single commit log.
`void` `requestExtraSync()` Preempts the CLExecutor, telling to to sync immediately
`void` `resetConfiguration()` FOR TESTING PURPOSES.
`int` `resetUnsafe(boolean deleteSegments)` FOR TESTING PURPOSES.
`int` `restartUnsafe()` FOR TESTING PURPOSES.
`void` `shutdownBlocking()` Shuts down the threads used by the commit log, blocking until completion.
`void` `stopUnsafe(boolean deleteSegments)` FOR TESTING PURPOSES.
`void` `sync(boolean syncAllSegments)` Forces a disk flush on the commit log files that need it.

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

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

### Field Detail

#### instance

    public static final CommitLog instance

#### allocator

    public final CommitLogSegmentManager allocator

#### archiver

    public final CommitLogArchiver archiver

#### location

    public final java.lang.String location

### Method Detail

#### recover

    public int recover()
                throws java.io.IOException

Perform recovery on commit logs located in the directory specified by the config file.

Returns:
  the number of mutations replayed
Throws:
  `java.io.IOException`

#### recover

    public int recover(java.io.File... clogs)
                throws java.io.IOException

Perform recovery on a list of commit log files.

Parameters:
  `clogs` - the list of commit log files to replay
Returns:
  the number of mutations replayed
Throws:
  `java.io.IOException`

#### recover

    public void recover(java.lang.String path)
                 throws java.io.IOException

Perform recovery on a single commit log.

Specified by:
  `recover` in interface `CommitLogMBean`
Throws:
  `java.io.IOException`

#### getContext

    public ReplayPosition getContext()

Returns:
  a ReplayPosition which, if >= one returned from add(), implies add() was started (but not necessarily finished) prior to this call

#### forceRecycleAllSegments

    public void forceRecycleAllSegments(java.lang.Iterable<java.util.UUID> droppedCfs)

Flushes all dirty CFs, waiting for them to free and recycle any segments they were retaining

#### forceRecycleAllSegments

    public void forceRecycleAllSegments()

Flushes all dirty CFs, waiting for them to free and recycle any segments they were retaining

#### sync

    public void sync(boolean syncAllSegments)

Forces a disk flush on the commit log files that need it. Blocking.

#### requestExtraSync

    public void requestExtraSync()

Preempts the CLExecutor, telling to to sync immediately

#### add

    public ReplayPosition add(Mutation mutation)

Add a Mutation to the commit log.

Parameters:
  `mutation` - the Mutation to add to the log

#### discardCompletedSegments

    public void discardCompletedSegments(java.util.UUID cfId,
                                         ReplayPosition context)

Modifies the per-CF dirty cursors of any commit log segments for the column family according to the position given. Discards any commit log segments that are no longer used.

Parameters:
  `cfId` - the column family ID that was flushed
  `context` - the replay position of the flush

#### getArchiveCommand

    public java.lang.String getArchiveCommand()

Description copied from interface: `CommitLogMBean`
Command to execute to archive a commitlog segment. Blank to disabled.

Specified by:
  `getArchiveCommand` in interface `CommitLogMBean`

#### getRestoreCommand

    public java.lang.String getRestoreCommand()

Description copied from interface: `CommitLogMBean`
Command to execute to make an archived commitlog live again

Specified by:
  `getRestoreCommand` in interface `CommitLogMBean`

#### getRestoreDirectories

    public java.lang.String getRestoreDirectories()

Description copied from interface: `CommitLogMBean`
Directory to scan the recovery files in

Specified by:
  `getRestoreDirectories` in interface `CommitLogMBean`

#### getRestorePointInTime

    public long getRestorePointInTime()

Description copied from interface: `CommitLogMBean`
Restore mutations created up to and including this timestamp in GMT Format: yyyy:MM:dd HH:mm:ss (2012:04:31 20:43:12) Recovery will continue through the segment when the first client-supplied timestamp greater than this time is encountered, but only mutations less than or equal to this timestamp will be applied.

Specified by:
  `getRestorePointInTime` in interface `CommitLogMBean`

#### getRestorePrecision

    public java.lang.String getRestorePrecision()

Description copied from interface: `CommitLogMBean`
get precision of the timestamp used in the restore (MILLISECONDS, MICROSECONDS, ...) to determine if passed the restore point in time.

Specified by:
  `getRestorePrecision` in interface `CommitLogMBean`

#### getActiveSegmentNames

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

Specified by:
  `getActiveSegmentNames` in interface `CommitLogMBean`
Returns:
  file names (not full paths) of active commit log segments (segments containing unflushed data)

#### getArchivingSegmentNames

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

Specified by:
  `getArchivingSegmentNames` in interface `CommitLogMBean`
Returns:
  Files which are pending for archival attempt. Does NOT include failed archive attempts.

#### getActiveContentSize

    public long getActiveContentSize()

Specified by:
  `getActiveContentSize` in interface `CommitLogMBean`
Returns:
  The size of the mutations in all active commit log segments (uncompressed).

#### getActiveOnDiskSize

    public long getActiveOnDiskSize()

Specified by:
  `getActiveOnDiskSize` in interface `CommitLogMBean`
Returns:
  The space taken on disk by the commit log (compressed).

#### getActiveSegmentCompressionRatios

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

Specified by:
  `getActiveSegmentCompressionRatios` in interface `CommitLogMBean`
Returns:
  A map between active log segments and the compression ratio achieved for each.

#### shutdownBlocking

    public void shutdownBlocking()
                          throws java.lang.InterruptedException

Shuts down the threads used by the commit log, blocking until completion.

Throws:
  `java.lang.InterruptedException`

#### resetUnsafe

    public int resetUnsafe(boolean deleteSegments)
                    throws java.io.IOException

FOR TESTING PURPOSES. See CommitLogAllocator.

Returns:
  the number of files recovered
Throws:
  `java.io.IOException`

#### stopUnsafe

    public void stopUnsafe(boolean deleteSegments)

FOR TESTING PURPOSES. See CommitLogAllocator.

#### resetConfiguration

    public void resetConfiguration()

FOR TESTING PURPOSES.

#### restartUnsafe

    public int restartUnsafe()
                      throws java.io.IOException

FOR TESTING PURPOSES. See CommitLogAllocator

Throws:
  `java.io.IOException`

#### activeSegments

    public int activeSegments()

Used by tests.

Returns:
  the number of active segments (segments with unflushed data in them)

#### handleCommitError

    public static boolean handleCommitError(java.lang.String message,
                                            java.lang.Throwable t)