|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.bigdata.rawstore.AbstractRawStore
com.bigdata.rawstore.AbstractRawWormStore
com.bigdata.journal.AbstractBufferStrategy
public abstract class AbstractBufferStrategy
Abstract base class for IBufferStrategy implementation.
| Field Summary | |
|---|---|
protected BufferMode |
bufferMode
The buffer strategy implemented by this class. |
protected static String |
ERR_ADDRESS_IS_NULL
Text of the error message used when a ZERO (0L) is passed as an address to IRawStore.read(long) or similar methods. |
protected static String |
ERR_ADDRESS_NOT_WRITTEN
Text of the error message used when an address is given has never been written. |
protected static String |
ERR_BAD_RECORD_SIZE
Error message used when the record size is invalid (e.g., negative). |
protected static String |
ERR_BUFFER_EMPTY
Text of the error message used when a ByteBuffer with zero bytes
Buffer.remaining() is passed to IRawStore.write(ByteBuffer). |
protected static String |
ERR_BUFFER_NULL
Text of the error message used when a null reference is
provided for a ByteBuffer. |
protected static String |
ERR_INT32
Text of the error message used when a write operation would exceed the #of bytes that can be addressed by a ByteBuffer backed by an
array or native memory (both are limited to int32 bytes since they
are addressed by a Java int). |
protected static String |
ERR_NOT_OPEN
Error message used when the store is closed. |
protected static String |
ERR_READ_ONLY
Error message used when the writes are not allowed. |
protected static String |
ERR_RECORD_LENGTH_ZERO
Text of the error message used when an address provided to IRawStore.read(long) or a similar method encodes a record length
of zero (0). |
protected static String |
ERR_TRUNCATE
Text of the error message used when IBufferStrategy.truncate(long) would truncate data that has
already been written. |
protected long |
initialExtent
|
protected static org.apache.log4j.Logger |
log
Log for btree operations. |
protected long |
maximumExtent
|
protected long |
nextOffset
The next offset at which a data item would be written on the store as an offset into the user extent (offset zero(0) addresses the first byte after the root blocks). |
protected static boolean |
WARN
|
| Fields inherited from class com.bigdata.rawstore.AbstractRawWormStore |
|---|
am |
| Fields inherited from class com.bigdata.rawstore.AbstractRawStore |
|---|
serializer |
| Fields inherited from interface com.bigdata.rawstore.IAddressManager |
|---|
NULL |
| Method Summary | |
|---|---|
protected void |
assertOpen()
|
void |
close()
Manages the open flag state. |
void |
closeForWrites()
Sets the readOnly flag. |
void |
destroy()
Closes the store immediately, deletes its persistent resources, and clears any records for the store from the IGlobalLRU. |
BufferMode |
getBufferMode()
The buffer mode supported by the implementation |
long |
getInitialExtent()
The initial extent. |
long |
getMaximumExtent()
The maximum extent allowable before a buffer overflow operation will be rejected. |
long |
getNextOffset()
The next offset at which a data item would be written on the store as an offset into the user extent. |
IResourceMetadata |
getResourceMetadata()
Not supported - this is available on the AbstractJournal. |
UUID |
getUUID()
Not supported - this is available on the AbstractJournal. |
boolean |
isOpen()
true iff the store is open. |
boolean |
isReadOnly()
true iff the store does not allow writes. |
boolean |
overflow(long needed)
Invoked if the store would exceed its current extent by IRawStore.write(ByteBuffer). |
long |
size()
The #of application data bytes written on the store (does not count any headers or root blocks that may exist for the store). |
protected static long |
transferFromDiskTo(IDiskBasedStrategy src,
RandomAccessFile out)
Helper method used by DiskBackedBufferStrategy and
DiskOnlyStrategy to implement
IBufferStrategy.transferTo(RandomAccessFile) using a
FileChannel to FileChannel transfer. |
| Methods inherited from class com.bigdata.rawstore.AbstractRawWormStore |
|---|
getAddressManager, getByteCount, getOffset, getOffsetBits, packAddr, toAddr, toString, unpackAddr |
| Methods inherited from class com.bigdata.rawstore.AbstractRawStore |
|---|
deserialize, deserialize, deserialize, serialize |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface com.bigdata.journal.IBufferStrategy |
|---|
getCounters, getExtent, getHeaderSize, getUserExtent, readRootBlock, transferTo, truncate, writeRootBlock |
| Methods inherited from interface com.bigdata.rawstore.IRawStore |
|---|
deleteResources, force, getFile, isFullyBuffered, isStable, read, write |
| Methods inherited from interface com.bigdata.rawstore.IAddressManager |
|---|
getByteCount, getOffset, packAddr, toAddr, toString, unpackAddr |
| Methods inherited from interface com.bigdata.rawstore.IStoreSerializer |
|---|
deserialize, deserialize, deserialize, serialize |
| Field Detail |
|---|
protected static final org.apache.log4j.Logger log
protected static final boolean WARN
protected static final String ERR_BUFFER_EMPTY
ByteBuffer with zero bytes
Buffer.remaining() is passed to IRawStore.write(ByteBuffer).
protected static final String ERR_BUFFER_NULL
null reference is
provided for a ByteBuffer.
protected static final String ERR_ADDRESS_NOT_WRITTEN
nextOffset on which data
would be written may be easily detected.
protected static final String ERR_ADDRESS_IS_NULL
IRawStore.read(long) or similar methods. This value 0L is
reserved to indicate a persistent null reference and may never be read.
protected static final String ERR_RECORD_LENGTH_ZERO
IRawStore.read(long) or a similar method encodes a record length
of zero (0). Empty records are not permitted on write and addresses with
a zero length are rejected on read.
protected static final String ERR_INT32
ByteBuffer backed by an
array or native memory (both are limited to int32 bytes since they
are addressed by a Java int).
protected static final String ERR_TRUNCATE
IBufferStrategy.truncate(long) would truncate data that has
already been written.
protected static final String ERR_READ_ONLY
protected static final String ERR_BAD_RECORD_SIZE
ERR_RECORD_LENGTH_ZERO and
ERR_BUFFER_EMPTY.protected static final String ERR_NOT_OPEN
protected final long initialExtent
protected final long maximumExtent
protected final BufferMode bufferMode
protected long nextOffset
Note: It is NOT safe to reload the current root block and therefore reset
this to an earlier offset unless all transactions are discarded. The
reason is that transactions may use objects (btrees) to provide
isolation. Those objects write on the store but do not register as
ICommitters and therefore never make themselves restart safe.
However, you can not discard the writes of those objects unless the
entire store is being restarted, e.g., after a shutdown or a crash.
| Method Detail |
|---|
public final long getInitialExtent()
IBufferStrategy
getInitialExtent in interface IBufferStrategypublic final long getMaximumExtent()
IBufferStrategy
Note: The semantics here differ from those defined by
Options.MAXIMUM_EXTENT. The latter specifies the threshold at
which a journal will overflow (onto another journal) while this specifies
the maximum size to which a buffer is allowed to grow.
Note: This is normally zero (0L), which basically means that
the maximum extent is ignored by the IBufferStrategy but
respected by the AbstractJournal, resulting in a soft limit
on journal overflow.
getMaximumExtent in interface IBufferStrategy0L
iff no limit is imposed.public final BufferMode getBufferMode()
IBufferStrategy
getBufferMode in interface IBufferStrategypublic final long getNextOffset()
IBufferStrategy
getNextOffset in interface IBufferStrategypublic final long size()
IRawStore
size in interface IRawStoreprotected final void assertOpen()
public boolean isOpen()
IRawStoretrue iff the store is open.
isOpen in interface IRawStoretrue iff the store is open.public boolean isReadOnly()
IRawStoretrue iff the store does not allow writes.
isReadOnly in interface IRawStorepublic void close()
open flag state.
close in interface IRawStorepublic final void destroy()
IRawStoreIGlobalLRU.
destroy in interface IRawStoreIRawStore.deleteResources()public final boolean overflow(long needed)
IRawStore.write(ByteBuffer). The default behavior extends the capacity of
the buffer by the at least the requested amount and a maximum of 32M or
the Options.INITIAL_EXTENT.
If the data are fully buffered, then the maximum store size is limited to int32 bytes which is the maximum #of bytes that can be addressed in RAM (the pragmatic maximum is slightly less than 2G due to the limits of the JVM to address system memory).
protected static long transferFromDiskTo(IDiskBasedStrategy src,
RandomAccessFile out)
throws IOException
DiskBackedBufferStrategy and
DiskOnlyStrategy to implement
IBufferStrategy.transferTo(RandomAccessFile) using a
FileChannel to FileChannel transfer.
src - The source.out - The output file.
IOExceptionpublic UUID getUUID()
AbstractJournal.
getUUID in interface IRawStoreUnsupportedOperationException - alwayspublic IResourceMetadata getResourceMetadata()
AbstractJournal.
getResourceMetadata in interface IRawStoreUnsupportedOperationException - alwayspublic void closeForWrites()
readOnly flag.
Note: This method SHOULD be extended to release write caches, etc.
closeForWrites in interface IBufferStrategy
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||