org.apache.kahadb.journal
Class Journal

java.lang.Object
  extended by org.apache.kahadb.journal.Journal
Direct Known Subclasses:
ReadOnlyJournal

public class Journal
extends java.lang.Object

Manages DataFiles


Field Summary
protected  DataFileAccessorPool accessorPool
           
protected  org.apache.kahadb.journal.DataFileAppender appender
           
protected  boolean archiveDataLogs
           
static byte[] BATCH_CONTROL_RECORD_HEADER
           
static byte[] BATCH_CONTROL_RECORD_MAGIC
           
static int BATCH_CONTROL_RECORD_SIZE
           
static byte BATCH_CONTROL_RECORD_TYPE
           
protected  boolean checkForCorruptionOnStartup
           
protected  boolean checksum
           
protected  java.lang.Runnable cleanupTask
           
protected  LinkedNodeList<DataFile> dataFiles
           
static java.lang.String DEFAULT_ARCHIVE_DIRECTORY
           
static int DEFAULT_CLEANUP_INTERVAL
           
static java.lang.String DEFAULT_DIRECTORY
           
static java.lang.String DEFAULT_FILE_PREFIX
           
static java.lang.String DEFAULT_FILE_SUFFIX
           
static int DEFAULT_MAX_FILE_LENGTH
           
static int DEFAULT_MAX_WRITE_BATCH_SIZE
           
protected  java.io.File directory
           
protected  java.io.File directoryArchive
           
protected  java.util.Map<java.io.File,DataFile> fileByFileMap
           
protected  java.util.Map<java.lang.Integer,DataFile> fileMap
           
protected  java.lang.String filePrefix
           
protected  java.lang.String fileSuffix
           
protected  java.util.Map<DataFileAppender.WriteKey,DataFileAppender.WriteCommand> inflightWrites
           
protected  java.util.concurrent.atomic.AtomicReference<Location> lastAppendLocation
           
protected  int maxFileLength
           
static int PREFERED_DIFF
           
protected  int preferedFileLength
           
static int RECORD_HEAD_SPACE
           
protected  boolean started
           
protected  java.util.concurrent.atomic.AtomicLong totalLength
           
static byte USER_RECORD_TYPE
           
protected  int writeBatchSize
           
 
Constructor Summary
Journal()
           
 
Method Summary
 void appendedExternally(Location loc, int length)
           
 int checkBatchRecord(org.apache.kahadb.journal.DataFileAccessor reader, int offset)
           
 void close()
           
 boolean delete()
           
 java.lang.Integer getCurrentDataFileId()
           
 java.io.File getDirectory()
           
 java.io.File getDirectoryArchive()
           
 long getDiskSize()
           
 java.io.File getFile(int nextNum)
           
 java.util.Map<java.lang.Integer,DataFile> getFileMap()
           
 java.lang.String getFilePrefix()
           
 java.util.Set<java.io.File> getFiles()
          Get a set of files - only valid after start()
 java.lang.String getFileSuffix()
           
 java.util.Map<DataFileAppender.WriteKey,DataFileAppender.WriteCommand> getInflightWrites()
           
 Location getLastAppendLocation()
           
 int getMaxFileLength()
           
 Location getNextLocation(DataFile dataFile, Location lastLocation, boolean thisFileOnly)
           
 Location getNextLocation(java.io.File file, Location lastLocation, boolean thisFileOnly)
           
 Location getNextLocation(Location location)
           
 ReplicationTarget getReplicationTarget()
           
 int getWriteBatchSize()
           
 boolean isArchiveDataLogs()
           
 boolean isCheckForCorruptionOnStartup()
           
 boolean isChecksum()
           
 ByteSequence read(Location location)
           
protected  Location recoveryCheck(DataFile dataFile)
           
 void removeDataFiles(java.util.Set<java.lang.Integer> files)
           
 void setArchiveDataLogs(boolean archiveDataLogs)
           
 void setCheckForCorruptionOnStartup(boolean checkForCorruptionOnStartup)
           
 void setChecksum(boolean checksumWrites)
           
 void setDirectory(java.io.File directory)
           
 void setDirectoryArchive(java.io.File directoryArchive)
           
 void setFilePrefix(java.lang.String filePrefix)
           
 void setFileSuffix(java.lang.String fileSuffix)
           
 void setLastAppendLocation(Location lastSyncedLocation)
           
 void setMaxFileLength(int maxFileLength)
           
 void setReplicationTarget(ReplicationTarget replicationTarget)
           
 void setSizeAccumulator(java.util.concurrent.atomic.AtomicLong storeSizeAccumulator)
           
 void setWriteBatchSize(int writeBatchSize)
           
 void start()
           
 java.lang.String toString()
           
 void update(Location location, ByteSequence data, boolean sync)
           
 Location write(ByteSequence data, boolean sync)
           
 Location write(ByteSequence data, java.lang.Runnable onComplete)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

RECORD_HEAD_SPACE

public static final int RECORD_HEAD_SPACE
See Also:
Constant Field Values

USER_RECORD_TYPE

public static final byte USER_RECORD_TYPE
See Also:
Constant Field Values

BATCH_CONTROL_RECORD_TYPE

public static final byte BATCH_CONTROL_RECORD_TYPE
See Also:
Constant Field Values

BATCH_CONTROL_RECORD_MAGIC

public static final byte[] BATCH_CONTROL_RECORD_MAGIC

BATCH_CONTROL_RECORD_SIZE

public static final int BATCH_CONTROL_RECORD_SIZE

BATCH_CONTROL_RECORD_HEADER

public static final byte[] BATCH_CONTROL_RECORD_HEADER

DEFAULT_DIRECTORY

public static final java.lang.String DEFAULT_DIRECTORY
See Also:
Constant Field Values

DEFAULT_ARCHIVE_DIRECTORY

public static final java.lang.String DEFAULT_ARCHIVE_DIRECTORY
See Also:
Constant Field Values

DEFAULT_FILE_PREFIX

public static final java.lang.String DEFAULT_FILE_PREFIX
See Also:
Constant Field Values

DEFAULT_FILE_SUFFIX

public static final java.lang.String DEFAULT_FILE_SUFFIX
See Also:
Constant Field Values

DEFAULT_MAX_FILE_LENGTH

public static final int DEFAULT_MAX_FILE_LENGTH
See Also:
Constant Field Values

DEFAULT_CLEANUP_INTERVAL

public static final int DEFAULT_CLEANUP_INTERVAL
See Also:
Constant Field Values

PREFERED_DIFF

public static final int PREFERED_DIFF
See Also:
Constant Field Values

DEFAULT_MAX_WRITE_BATCH_SIZE

public static final int DEFAULT_MAX_WRITE_BATCH_SIZE
See Also:
Constant Field Values

inflightWrites

protected final java.util.Map<DataFileAppender.WriteKey,DataFileAppender.WriteCommand> inflightWrites

directory

protected java.io.File directory

directoryArchive

protected java.io.File directoryArchive

filePrefix

protected java.lang.String filePrefix

fileSuffix

protected java.lang.String fileSuffix

started

protected boolean started

maxFileLength

protected int maxFileLength

preferedFileLength

protected int preferedFileLength

writeBatchSize

protected int writeBatchSize

appender

protected org.apache.kahadb.journal.DataFileAppender appender

accessorPool

protected DataFileAccessorPool accessorPool

fileMap

protected java.util.Map<java.lang.Integer,DataFile> fileMap

fileByFileMap

protected java.util.Map<java.io.File,DataFile> fileByFileMap

dataFiles

protected LinkedNodeList<DataFile> dataFiles

lastAppendLocation

protected final java.util.concurrent.atomic.AtomicReference<Location> lastAppendLocation

cleanupTask

protected java.lang.Runnable cleanupTask

totalLength

protected java.util.concurrent.atomic.AtomicLong totalLength

archiveDataLogs

protected boolean archiveDataLogs

checksum

protected boolean checksum

checkForCorruptionOnStartup

protected boolean checkForCorruptionOnStartup
Constructor Detail

Journal

public Journal()
Method Detail

start

public void start()
           throws java.io.IOException
Throws:
java.io.IOException

recoveryCheck

protected Location recoveryCheck(DataFile dataFile)
                          throws java.io.IOException
Throws:
java.io.IOException

checkBatchRecord

public int checkBatchRecord(org.apache.kahadb.journal.DataFileAccessor reader,
                            int offset)
                     throws java.io.IOException
Throws:
java.io.IOException

getFile

public java.io.File getFile(int nextNum)

close

public void close()
           throws java.io.IOException
Throws:
java.io.IOException

delete

public boolean delete()
               throws java.io.IOException
Throws:
java.io.IOException

removeDataFiles

public void removeDataFiles(java.util.Set<java.lang.Integer> files)
                     throws java.io.IOException
Throws:
java.io.IOException

getMaxFileLength

public int getMaxFileLength()
Returns:
the maxFileLength

setMaxFileLength

public void setMaxFileLength(int maxFileLength)
Parameters:
maxFileLength - the maxFileLength to set

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

appendedExternally

public void appendedExternally(Location loc,
                               int length)
                        throws java.io.IOException
Throws:
java.io.IOException

getNextLocation

public Location getNextLocation(Location location)
                         throws java.io.IOException,
                                java.lang.IllegalStateException
Throws:
java.io.IOException
java.lang.IllegalStateException

getNextLocation

public Location getNextLocation(java.io.File file,
                                Location lastLocation,
                                boolean thisFileOnly)
                         throws java.lang.IllegalStateException,
                                java.io.IOException
Throws:
java.lang.IllegalStateException
java.io.IOException

getNextLocation

public Location getNextLocation(DataFile dataFile,
                                Location lastLocation,
                                boolean thisFileOnly)
                         throws java.io.IOException,
                                java.lang.IllegalStateException
Throws:
java.io.IOException
java.lang.IllegalStateException

read

public ByteSequence read(Location location)
                  throws java.io.IOException,
                         java.lang.IllegalStateException
Throws:
java.io.IOException
java.lang.IllegalStateException

write

public Location write(ByteSequence data,
                      boolean sync)
               throws java.io.IOException,
                      java.lang.IllegalStateException
Throws:
java.io.IOException
java.lang.IllegalStateException

write

public Location write(ByteSequence data,
                      java.lang.Runnable onComplete)
               throws java.io.IOException,
                      java.lang.IllegalStateException
Throws:
java.io.IOException
java.lang.IllegalStateException

update

public void update(Location location,
                   ByteSequence data,
                   boolean sync)
            throws java.io.IOException
Throws:
java.io.IOException

getDirectory

public java.io.File getDirectory()

setDirectory

public void setDirectory(java.io.File directory)

getFilePrefix

public java.lang.String getFilePrefix()

setFilePrefix

public void setFilePrefix(java.lang.String filePrefix)

getInflightWrites

public java.util.Map<DataFileAppender.WriteKey,DataFileAppender.WriteCommand> getInflightWrites()

getLastAppendLocation

public Location getLastAppendLocation()

setLastAppendLocation

public void setLastAppendLocation(Location lastSyncedLocation)

getDirectoryArchive

public java.io.File getDirectoryArchive()

setDirectoryArchive

public void setDirectoryArchive(java.io.File directoryArchive)

isArchiveDataLogs

public boolean isArchiveDataLogs()

setArchiveDataLogs

public void setArchiveDataLogs(boolean archiveDataLogs)

getCurrentDataFileId

public java.lang.Integer getCurrentDataFileId()

getFiles

public java.util.Set<java.io.File> getFiles()
Get a set of files - only valid after start()

Returns:
files currently being used

getFileMap

public java.util.Map<java.lang.Integer,DataFile> getFileMap()

getDiskSize

public long getDiskSize()

setReplicationTarget

public void setReplicationTarget(ReplicationTarget replicationTarget)

getReplicationTarget

public ReplicationTarget getReplicationTarget()

getFileSuffix

public java.lang.String getFileSuffix()

setFileSuffix

public void setFileSuffix(java.lang.String fileSuffix)

isChecksum

public boolean isChecksum()

setChecksum

public void setChecksum(boolean checksumWrites)

isCheckForCorruptionOnStartup

public boolean isCheckForCorruptionOnStartup()

setCheckForCorruptionOnStartup

public void setCheckForCorruptionOnStartup(boolean checkForCorruptionOnStartup)

setWriteBatchSize

public void setWriteBatchSize(int writeBatchSize)

getWriteBatchSize

public int getWriteBatchSize()

setSizeAccumulator

public void setSizeAccumulator(java.util.concurrent.atomic.AtomicLong storeSizeAccumulator)


Copyright © 2005-2012. All Rights Reserved.