Class CommitLog

    • Method Detail

      • start

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

        public boolean isStarted()
      • hasFilesToReplay

        public boolean hasFilesToReplay()
      • recoverSegmentsOnDisk

        public int recoverSegmentsOnDisk()
                                  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
      • recoverFiles

        public int recoverFiles​(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
      • recoverPath

        public void recoverPath​(java.lang.String path)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • recover

        public void recover​(java.lang.String path)
                     throws java.io.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:
        java.io.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​(java.util.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 java.io.IOException
        Forces a disk flush on the commit log files that need it. Blocking.
        Throws:
        java.io.IOException
      • requestExtraSync

        public void requestExtraSync()
        Preempts the CLExecutor, telling to to sync immediately
      • 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 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
      • 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.
      • 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 java.lang.InterruptedException
        Shuts down the threads used by the commit log, blocking until completion. TODO this should accept a timeout, and throw TimeoutException
        Throws:
        java.lang.InterruptedException
      • resetUnsafe

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

        public void resetConfiguration()
        FOR TESTING PURPOSES.
      • stopUnsafe

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

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

        public static long freeDiskSpace()
      • handleCommitError

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