Class CommitLog

java.lang.Object
org.apache.cassandra.db.commitlog.CommitLog
All Implemented Interfaces:
CommitLogMBean

public class CommitLog extends Object implements CommitLogMBean
  • Field Details

  • Method Details

    • start

      public CommitLog start()
      Tries to start the CommitLog if not already started.
    • isStarted

      public boolean isStarted()
    • hasFilesToReplay

      public boolean hasFilesToReplay()
    • getUnmanagedFiles

      public File[] getUnmanagedFiles()
    • recoverSegmentsOnDisk

      public int recoverSegmentsOnDisk() throws IOException
      Perform recovery on commit logs located in the directory specified by the config file.
      Returns:
      the number of mutations replayed
      Throws:
      IOException
    • recoverFiles

      public int recoverFiles(File... clogs) throws 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:
      IOException
    • recoverPath

      public void recoverPath(String path) throws IOException
      Throws:
      IOException
    • recover

      public void recover(String path) throws IOException
      Perform recovery on a single commit log. Kept w/sub-optimal name due to coupling w/MBean / JMX
      Specified by:
      recover in interface CommitLogMBean
      Throws:
      IOException
    • getCurrentPosition

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

      public void forceRecycleAllSegments(Collection<TableId> droppedTables)
      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 flush) throws IOException
      Forces a disk flush on the commit log files that need it. Blocking.
      Throws:
      IOException
    • requestExtraSync

      public void requestExtraSync()
      Preempts the CLExecutor, telling to to sync immediately
    • add

      public CommitLogPosition add(Mutation mutation) throws CDCWriteException
      Add a Mutation to the commit log. If CDC is enabled, this can fail.
      Parameters:
      mutation - the Mutation to add to the log
      Throws:
      CDCWriteException
    • discardCompletedSegments

      public void discardCompletedSegments(TableId id, CommitLogPosition lowerBound, CommitLogPosition upperBound)
      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:
      id - the table that was flushed
      lowerBound - the lowest covered replay position of the flush
      lowerBound - the highest covered replay position of the flush
    • getArchiveCommand

      public 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 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 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 There are only three different formats to express three time precisions: Seconds, Milliseconds, and Microseconds. Seconds format: yyyy:MM:dd HH:mm:ss (2012:04:31 20:43:12) Milliseconds format: yyyy:MM:dd HH:mm:ss.SSS (2012:04:31 20:43:12.633) Microseconds format: yyyy:MM:dd HH:mm:ss.SSSSSS (2012:04:31 20:43:12.633222) 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 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 List<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 List<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 Map<String,Double> getActiveSegmentCompressionRatios()
      Specified by:
      getActiveSegmentCompressionRatios in interface CommitLogMBean
      Returns:
      A map between active log segments and the compression ratio achieved for each.
    • getCDCBlockWrites

      public boolean getCDCBlockWrites()
      Specified by:
      getCDCBlockWrites in interface CommitLogMBean
    • setCDCBlockWrites

      public void setCDCBlockWrites(boolean val)
      Specified by:
      setCDCBlockWrites in interface CommitLogMBean
    • isCDCOnRepairEnabled

      public boolean isCDCOnRepairEnabled()
      Description copied from interface: CommitLogMBean
      Returns true if internodes streaming of CDC data should go through write path
      Specified by:
      isCDCOnRepairEnabled in interface CommitLogMBean
    • setCDCOnRepairEnabled

      public void setCDCOnRepairEnabled(boolean value)
      Description copied from interface: CommitLogMBean
      Set whether enable write path for CDC data during internodes streaming, e.g. repair
      Specified by:
      setCDCOnRepairEnabled in interface CommitLogMBean
    • shutdownBlocking

      public void shutdownBlocking() throws InterruptedException
      Shuts down the threads used by the commit log, blocking until completion. TODO this should accept a timeout, and throw TimeoutException
      Throws:
      InterruptedException
    • resetUnsafe

      public int resetUnsafe(boolean deleteSegments) throws IOException
      FOR TESTING PURPOSES
      Returns:
      the number of files recovered
      Throws:
      IOException
    • resetConfiguration

      public void resetConfiguration()
      FOR TESTING PURPOSES.
    • stopUnsafe

      public void stopUnsafe(boolean deleteSegments)
      FOR TESTING PURPOSES
    • restartUnsafe

      public int restartUnsafe() throws IOException
      FOR TESTING PURPOSES
      Throws:
      IOException
    • freeDiskSpace

      public static long freeDiskSpace()
    • handleCommitError

      public static boolean handleCommitError(String message, Throwable t)