org.apache.cassandra.db.commitlog

## Class AbstractCommitLogService

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

    public abstract class AbstractCommitLogService
    extends java.lang.Object

### Field Summary

Fields
`protected java.util.concurrent.Semaphore` `haveWork`
`protected long` `lastSyncedAt`
`protected java.util.concurrent.atomic.AtomicLong` `pending`
`protected WaitQueue` `syncComplete`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `awaitTermination()`
`void` `finishWriteFor(org.apache.cassandra.db.commitlog.CommitLogSegment.Allocation alloc)` Block for @param alloc to be sync'd as necessary, and handle bookkeeping
`long` `getCompletedTasks()`
`long` `getPendingTasks()`
`protected abstract void` `maybeWaitForSync(org.apache.cassandra.db.commitlog.CommitLogSegment.Allocation alloc)`
`WaitQueue.Signal` `requestExtraSync()` Sync immediately, but don't block for the sync to cmplete
`void` `restartUnsafe()` FOR TESTING ONLY
`void` `shutdown()`

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

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

### Field Detail

#### lastSyncedAt

    protected volatile long lastSyncedAt

#### pending

    protected final java.util.concurrent.atomic.AtomicLong pending

#### syncComplete

    protected final WaitQueue syncComplete

#### haveWork

    protected final java.util.concurrent.Semaphore haveWork

### Method Detail

#### finishWriteFor

    public void finishWriteFor(org.apache.cassandra.db.commitlog.CommitLogSegment.Allocation alloc)

Block for @param alloc to be sync'd as necessary, and handle bookkeeping

#### maybeWaitForSync

    protected abstract void maybeWaitForSync(org.apache.cassandra.db.commitlog.CommitLogSegment.Allocation alloc)

#### requestExtraSync

    public WaitQueue.Signal requestExtraSync()

Sync immediately, but don't block for the sync to cmplete

#### shutdown

    public void shutdown()

#### restartUnsafe

    public void restartUnsafe()

FOR TESTING ONLY

#### awaitTermination

    public void awaitTermination()
                          throws java.lang.InterruptedException

Throws:
  `java.lang.InterruptedException`

#### getCompletedTasks

    public long getCompletedTasks()

#### getPendingTasks

    public long getPendingTasks()