|
|||||||||
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 | |
---|---|
java.lang.String |
beginTag()
|
(package private) boolean |
canMemorySizeChangeDuringLogging()
Overrides this method to indicate that getLogSize and writeToLog can change the memory size of the LN. |
protected void |
dumpLogAdditional(java.lang.StringBuffer sb,
boolean verbose)
Dump additional fields. |
java.lang.String |
dumpString(int nSpaces,
boolean dumpTags)
|
java.lang.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()
|
long |
getMemorySizeIncludedByParent()
Overrides this method to add space occupied by this object's fields. |
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. |
(package private) void |
makeDeleted()
Clear out the obsoleteOffsets to save memory when the LN is deleted. |
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. |
void |
postFetchInit(DatabaseImpl db,
long sourceLsn)
Initialize a node that has been faulted in from the log. |
void |
readFromLog(java.nio.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. |
java.lang.String |
toString()
Default toString method at the root of the tree. |
void |
writeToLog(java.nio.ByteBuffer logBuffer)
Serialize this object into the buffer. |
Methods inherited from class com.sleepycat.je.tree.LN |
---|
accountForSubtreeRemoval, canBeAncestor, copyData, delete, dumpLog, getData, getLastLoggedSize, isDeleted, isDirty, isEvictable, isEvictableInexact, isSoughtNode, isValidForDelete, log, logUpdateMemUsage, logUpdateMemUsage, modify, optionalLog, optionalLogProvisional, optionalLogUpdateMemUsage, rebuildINList, setDirty, setLastLoggedSize |
Methods inherited from class com.sleepycat.je.tree.Node |
---|
containsDuplicates, dump, getLastId, getLevel, getNextNodeId, getNodeId, getTransactionId, getType, latchShared, matchLNByNodeId, releaseLatch, 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.Loggable |
---|
getTransactionId |
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 java.lang.String toString()
Node
toString
in class Node
public java.lang.String beginTag()
beginTag
in class LN
public java.lang.String endTag()
endTag
in class LN
public java.lang.String dumpString(int nSpaces, boolean dumpTags)
dumpString
in class LN
protected void dumpLogAdditional(java.lang.StringBuffer sb, boolean verbose)
dumpLogAdditional
in class LN
protected LogEntryType getTransactionalLogType()
getTransactionalLogType
in class LN
public LogEntryType getLogType()
getLogType
in class LN
Node.getLogType()
public int getLogSize()
getLogSize
in interface Loggable
getLogSize
in class LN
LN.getLogSize()
public void writeToLog(java.nio.ByteBuffer logBuffer)
Loggable
writeToLog
in interface Loggable
writeToLog
in class LN
logBuffer
- is the destination bufferLN.writeToLog(java.nio.ByteBuffer)
public void readFromLog(java.nio.ByteBuffer itemBuffer, byte entryTypeVersion) throws LogException
Loggable
readFromLog
in interface Loggable
readFromLog
in class LN
LogException
LN.readFromLog(java.nio.ByteBuffer, byte)
boolean canMemorySizeChangeDuringLogging()
canMemorySizeChangeDuringLogging
in class LN
public long getMemorySizeIncludedByParent()
getMemorySizeIncludedByParent
in class LN
void makeDeleted()
makeDeleted
in class LN
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |