org.apache.cassandra.db.commitlog

## Class CommitLogAllocator

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

-     public class CommitLogAllocator
      extends java.lang.Object

  Performs the pre-allocation of commit log segments in a background thread. All the public methods are thread safe.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `TICK_CYCLE_TIME` The (theoretical) max milliseconds between loop runs to perform janitorial tasks

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CommitLogAllocator()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `awaitTermination()` Returns when the allocator thread terminates.
    `long` | `bytesUsed()`
    `void` | `enableReserveSegmentCreation()` Throws a flag that enables the behavior of keeping at least one spare segment available at all times.
    `CommitLogSegment` | `fetchSegment()` Fetches an empty segment file.
    `java.util.Collection<CommitLogSegment>` | `getActiveSegments()`
    `boolean` | `manages(java.lang.String name)`
    `void` | `recycleSegment(CommitLogSegment segment)` Indicates that a segment is no longer in use and that it should be recycled.
    `void` | `recycleSegment(java.io.File file)` Differs from the above because it can work on any file instead of just existing commit log segments managed by this allocator.
    `void` | `resetUnsafe()` Resets all the segments, for testing purposes.
    `void` | `shutdown()` Initiates the shutdown process for the allocator thread.

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

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

- - ### Field Detail

    - #### TICK_CYCLE_TIME

          public static final int TICK_CYCLE_TIME

      The (theoretical) max milliseconds between loop runs to perform janitorial tasks
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### CommitLogAllocator

          public CommitLogAllocator()

  - ### Method Detail

    - #### fetchSegment

          public CommitLogSegment fetchSegment()

      Fetches an empty segment file.
      Returns:
        the next writable segment

    - #### recycleSegment

          public void recycleSegment(CommitLogSegment segment)

      Indicates that a segment is no longer in use and that it should be recycled.
      Parameters:
        `segment` - segment that is no longer in use

    - #### recycleSegment

          public void recycleSegment(java.io.File file)

      Differs from the above because it can work on any file instead of just existing commit log segments managed by this allocator.
      Parameters:
        `file` - segment file that is no longer in use.

    - #### bytesUsed

          public long bytesUsed()

      Returns:
        the space (in bytes) used by all segment files.

    - #### manages

          public boolean manages(java.lang.String name)

      Parameters:
        `name` - the filename to check
      Returns:
        true if file is managed by this allocator.

    - #### enableReserveSegmentCreation

          public void enableReserveSegmentCreation()

      Throws a flag that enables the behavior of keeping at least one spare segment available at all times.

    - #### resetUnsafe

          public void resetUnsafe()

      Resets all the segments, for testing purposes. DO NOT USE THIS OUTSIDE OF TESTS.

    - #### shutdown

          public void shutdown()

      Initiates the shutdown process for the allocator thread.

    - #### awaitTermination

          public void awaitTermination()
                                throws java.lang.InterruptedException

      Returns when the allocator thread terminates.
      Throws:
        `java.lang.InterruptedException`

    - #### getActiveSegments

          public java.util.Collection<CommitLogSegment> getActiveSegments()

      Returns:
        a read-only collection of the active commit log segments

Copyright © 2014 The Apache Software Foundation