|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.sleepycat.je.tree.Node
com.sleepycat.je.tree.LN
com.sleepycat.je.tree.FileSummaryLN
public final class FileSummaryLN
A FileSummaryLN represents a Leaf Node in the UtilizationProfile database.
The contents of the FileSummaryLN are not fixed until the moment at which the LN is added to the log. A base summary object contains the summary last added to the log. A tracked summary object contains live summary info being updated in real time. The tracked summary is added to the base summary just before logging it, and then the tracked summary is reset. This ensures that the logged summary will accurately reflect the totals calculated at the point in the log where the LN is added.
This is all done in the writeToLog method, which operates under the log write latch. All utilization tracking must be done under the log write latch.
In record version 1, obsolete offset tracking was added and multiple records are stored for a single file rather than a single record. Each record contains the offsets that were tracked since the last record was written.
The key is 8 bytes: 4 bytes for the file number followed by 4 bytes for the sequence number. The lowest valued key for a given file contains the most recent summary information, while to get a complete list of obsolete offsets all records for the file must be read. A range search using just the first 4 bytes can be used to find the most recent record -- this is possible because the sequence number values are decreasing over time for a given file. Here are example keys for three summary records in file 1:
(file=1, sequence=Integer.MAX_VALUE - 300) (file=1, sequence=Integer.MAX_VALUE - 200) (file=1, sequence=Integer.MAX_VALUE - 100)
The sequence number is the number of obsolete entries counted so far, subtracted from Integer.MAX_VALUE to cause the latest written record to have the lowest key.
Version 0: Keys are old format strings. No obsolete detail is present.
Version 1: Keys are two 4 byte integers: {file, sequence}. Obsolete detail is present. Some offsets may be invalid if RMW was used.
Version 2: The RMW problem with invalid offsets was corrected. There is no data format change; all versions of JE 2.0.x can read version 1.
UtilizationProfile
Constructor Summary | |
---|---|
FileSummaryLN()
Creates an empty LN to be filled in from the log. |
|
FileSummaryLN(FileSummary baseSummary)
Creates a new LN with a given base summary. |
Method Summary | |
---|---|
String |
beginTag()
|
boolean |
countAsObsoleteWhenLogged()
Returns true if this item should be counted as obsoleted when logged. |
protected void |
dumpLogAdditional(StringBuffer sb)
Dump additional fields. |
String |
dumpString(int nSpaces,
boolean dumpTags)
|
String |
endTag()
|
FileSummary |
getBaseSummary()
Returns the base summary for the file that is stored in the LN. |
long |
getFileNumber(byte[] bytes)
Convert a FileSummaryLN key from a byte array to a long. |
int |
getLogSize()
|
LogEntryType |
getLogType()
All objects that are reponsible for a generating a type of log entry must implement this. |
PackedOffsets |
getObsoleteOffsets()
Returns the obsolete offsets for the file. |
TrackedFileSummary |
getTrackedSummary()
Returns the tracked summary, or null if setTrackedSummary was not called. |
protected LogEntryType |
getTransactionalLogType()
Log type for transactional entries. |
boolean |
hasStringKey(byte[] bytes)
Returns true if the given key for this LN is a String file number key. |
static byte[] |
makeFullKey(long fileNum,
int sequence)
Returns the full two-part key for a given file number and unique sequence. |
static byte[] |
makePartialKey(long fileNum)
Returns the first 4 bytes of the key for the given file number. |
boolean |
marshallOutsideWriteLatch()
Return true if this item can be marshalled outside the log write latch. |
void |
postFetchInit(DatabaseImpl db,
long sourceLsn)
Initialize a node that has been faulted in from the log. |
void |
readFromLog(ByteBuffer itemBuffer,
byte entryTypeVersion)
Initialize this object from the data in itemBuf. |
void |
setTrackedSummary(TrackedFileSummary trackedSummary)
Sets the live summary object that will be added to the base summary at the time the LN is logged. |
String |
toString()
Default toString method at the root of the tree. |
void |
writeToLog(ByteBuffer logBuffer)
Serialize this object into the buffer. |
Methods inherited from class com.sleepycat.je.tree.LN |
---|
accountForSubtreeRemoval, addToDirtyMap, canBeAncestor, copyData, delete, dumpLog, getData, getMemorySizeIncludedByParent, getTransactionId, isDeleted, isSoughtNode, isValidForDelete, log, logEntryIsTransactional, logProvisional, makeDeleted, modify, rebuildINList |
Methods inherited from class com.sleepycat.je.tree.Node |
---|
containsDuplicates, dump, getLastId, getLevel, getNextNodeId, getNodeId, getType, matchLNByNodeId, postLogWork, setLastNodeId, setNodeId, shortDescription, verify |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface com.sleepycat.je.log.LoggableObject |
---|
postLogWork |
Constructor Detail |
---|
public FileSummaryLN(FileSummary baseSummary)
public FileSummaryLN() throws DatabaseException
DatabaseException
Method Detail |
---|
public void setTrackedSummary(TrackedFileSummary trackedSummary)
public TrackedFileSummary getTrackedSummary()
public FileSummary getBaseSummary()
public PackedOffsets getObsoleteOffsets()
public boolean hasStringKey(byte[] bytes)
public long getFileNumber(byte[] bytes)
public static byte[] makePartialKey(long fileNum)
public static byte[] makeFullKey(long fileNum, int sequence)
sequence
- is a unique identifier for the LN for the given file,
and must be greater than the last sequence.public void postFetchInit(DatabaseImpl db, long sourceLsn) throws DatabaseException
postFetchInit
in class Node
DatabaseException
public String toString()
Node
toString
in class Node
public String beginTag()
beginTag
in class LN
public String endTag()
endTag
in class LN
public String dumpString(int nSpaces, boolean dumpTags)
dumpString
in class LN
protected void dumpLogAdditional(StringBuffer sb)
dumpLogAdditional
in class LN
protected LogEntryType getTransactionalLogType()
getTransactionalLogType
in class LN
public LogEntryType getLogType()
LoggableObject
getLogType
in interface LoggableObject
getLogType
in class LN
LN.getLogType()
public boolean marshallOutsideWriteLatch()
LoggableObject
marshallOutsideWriteLatch
in interface LoggableObject
marshallOutsideWriteLatch
in class Node
FileSummaryLNs must be marshalled within the log write latch, because
that critical section is used to guarantee that all previous log
entries are reflected in the summary.
public boolean countAsObsoleteWhenLogged()
LoggableObject
countAsObsoleteWhenLogged
in interface LoggableObject
countAsObsoleteWhenLogged
in class LN
LoggableObject.countAsObsoleteWhenLogged()
public int getLogSize()
getLogSize
in interface LogWritable
getLogSize
in class LN
LN.getLogSize()
public void writeToLog(ByteBuffer logBuffer)
LogWritable
writeToLog
in interface LogWritable
writeToLog
in class LN
logBuffer
- is the destination bufferLN.writeToLog(java.nio.ByteBuffer)
public void readFromLog(ByteBuffer itemBuffer, byte entryTypeVersion) throws LogException
LogReadable
readFromLog
in interface LogReadable
readFromLog
in class LN
LogException
LN.readFromLog(java.nio.ByteBuffer, byte)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |