com.sleepycat.je.log
Class LogManager

java.lang.Object
  extended by com.sleepycat.je.log.LogManager
Direct Known Subclasses:
LatchedLogManager, SyncedLogManager

public abstract class LogManager
extends Object

The LogManager supports reading and writing to the JE log.


Nested Class Summary
(package private) static class LogManager.LogResult
          LogResult holds the multivalue return from logInternal.
 
Field Summary
protected  EnvironmentImpl envImpl
           
(package private) static int HEADER_BYTES
           
(package private) static int HEADER_CHECKSUM_OFFSET
           
(package private) static int HEADER_CONTENT_BYTES
           
(package private) static int HEADER_ENTRY_TYPE_OFFSET
           
(package private) static int HEADER_PREV_OFFSET
           
(package private) static int HEADER_SIZE_OFFSET
           
(package private) static int HEADER_VERSION_OFFSET
           
protected  LogBufferPool logBufferPool
           
protected  Latch logWriteLatch
           
(package private) static int PREV_BYTES
           
 
Constructor Summary
LogManager(EnvironmentImpl envImpl, boolean readOnly)
          There is a single log manager per database environment.
 
Method Summary
abstract  void countObsoleteINs(List lsnList)
          Counts the given obsolete IN LSNs under the log write latch.
protected  void countObsoleteINsInternal(List lsnList)
           
abstract  void countObsoleteNode(long lsn, LogEntryType type)
          Count node as obsolete under the log write latch.
protected  void countObsoleteNodeInternal(UtilizationTracker tracker, long lsn, LogEntryType type)
           
abstract  void countObsoleteNodes(TrackedFileSummary[] summaries)
          Counts file summary info under the log write latch.
protected  void countObsoleteNodesInternal(UtilizationTracker tracker, TrackedFileSummary[] summaries)
           
 void flush()
          Flush all log entries, fsync the log file.
protected abstract  void flushInternal()
           
 Object get(long lsn)
          Fault in the first object in the log entry log entry at this LSN.
 long getLastLsnAtRecovery()
           
 LogEntry getLogEntry(long lsn)
          Instantiate all the objects in the log entry at this LSN.
(package private)  LogEntry getLogEntry(long lsn, RandomAccessFile file)
           
abstract  TrackedFileSummary getUnflushableTrackedSummary(long file)
          Returns a tracked summary for the given file which will not be flushed.
protected  TrackedFileSummary getUnflushableTrackedSummaryInternal(long file)
           
 void loadStats(StatsConfig config, EnvironmentStats stats)
           
 long log(LoggableObject item)
          Write a log entry.
 long log(LoggableObject item, boolean isProvisional, long oldNodeLsn)
          Write a log entry.
 long logForceFlip(LoggableObject item)
          Log this single object and force a flip of the log files.
 long logForceFlush(LoggableObject item, boolean fsyncRequired)
          Log this single object and force a write of the log files.
protected  LogManager.LogResult logInternal(LoggableObject item, boolean isProvisional, boolean flushRequired, boolean forceNewLogFile, long oldNodeLsn, boolean marshallOutsideLatch, ByteBuffer marshalledBuffer, UtilizationTracker tracker)
          Called within the log write critical section.
protected abstract  LogManager.LogResult logItem(LoggableObject item, boolean isProvisional, boolean flushRequired, boolean forceNewLogFile, long oldNodeLsn, boolean marshallOutsideLatch, ByteBuffer marshalledBuffer, UtilizationTracker tracker)
           
(package private)  ByteBuffer putIntoBuffer(LoggableObject item, int itemSize, long prevLogEntryOffset, boolean isProvisional, int entrySize)
          Serialize a loggable object into this buffer.
 void resetPool(DbConfigManager configManager)
          Reset the pool when the cache is resized.
 void setLastLsnAtRecovery(long lastLsnAtRecovery)
           
 void setReadHook(TestHook hook)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HEADER_BYTES

static final int HEADER_BYTES
See Also:
Constant Field Values

PREV_BYTES

static final int PREV_BYTES
See Also:
Constant Field Values

HEADER_CONTENT_BYTES

static final int HEADER_CONTENT_BYTES
See Also:
Constant Field Values

HEADER_CHECKSUM_OFFSET

static final int HEADER_CHECKSUM_OFFSET
See Also:
Constant Field Values

HEADER_ENTRY_TYPE_OFFSET

static final int HEADER_ENTRY_TYPE_OFFSET
See Also:
Constant Field Values

HEADER_VERSION_OFFSET

static final int HEADER_VERSION_OFFSET
See Also:
Constant Field Values

HEADER_PREV_OFFSET

static final int HEADER_PREV_OFFSET
See Also:
Constant Field Values

HEADER_SIZE_OFFSET

static final int HEADER_SIZE_OFFSET
See Also:
Constant Field Values

logBufferPool

protected LogBufferPool logBufferPool

logWriteLatch

protected Latch logWriteLatch

envImpl

protected EnvironmentImpl envImpl
Constructor Detail

LogManager

public LogManager(EnvironmentImpl envImpl,
                  boolean readOnly)
           throws DatabaseException
There is a single log manager per database environment.

Throws:
DatabaseException
Method Detail

getLastLsnAtRecovery

public long getLastLsnAtRecovery()

setLastLsnAtRecovery

public void setLastLsnAtRecovery(long lastLsnAtRecovery)

resetPool

public void resetPool(DbConfigManager configManager)
               throws DatabaseException
Reset the pool when the cache is resized. This method is called after the memory budget has been calculated.

Throws:
DatabaseException

logForceFlush

public long logForceFlush(LoggableObject item,
                          boolean fsyncRequired)
                   throws DatabaseException
Log this single object and force a write of the log files.

Parameters:
item - object to be logged
fsyncRequired - if true, log files should also be fsynced.
Returns:
LSN of the new log entry
Throws:
DatabaseException

logForceFlip

public long logForceFlip(LoggableObject item)
                  throws DatabaseException
Log this single object and force a flip of the log files.

Parameters:
item - object to be logged
fsyncRequired - if true, log files should also be fsynced.
Returns:
LSN of the new log entry
Throws:
DatabaseException

log

public long log(LoggableObject item)
         throws DatabaseException
Write a log entry.

Returns:
LSN of the new log entry
Throws:
DatabaseException

log

public long log(LoggableObject item,
                boolean isProvisional,
                long oldNodeLsn)
         throws DatabaseException
Write a log entry.

Returns:
LSN of the new log entry
Throws:
DatabaseException

logItem

protected abstract LogManager.LogResult logItem(LoggableObject item,
                                                boolean isProvisional,
                                                boolean flushRequired,
                                                boolean forceNewLogFile,
                                                long oldNodeLsn,
                                                boolean marshallOutsideLatch,
                                                ByteBuffer marshalledBuffer,
                                                UtilizationTracker tracker)
                                         throws IOException,
                                                DatabaseException
Throws:
IOException
DatabaseException

logInternal

protected LogManager.LogResult logInternal(LoggableObject item,
                                           boolean isProvisional,
                                           boolean flushRequired,
                                           boolean forceNewLogFile,
                                           long oldNodeLsn,
                                           boolean marshallOutsideLatch,
                                           ByteBuffer marshalledBuffer,
                                           UtilizationTracker tracker)
                                    throws IOException,
                                           DatabaseException
Called within the log write critical section.

Throws:
IOException
DatabaseException

putIntoBuffer

ByteBuffer putIntoBuffer(LoggableObject item,
                         int itemSize,
                         long prevLogEntryOffset,
                         boolean isProvisional,
                         int entrySize)
                   throws DatabaseException
Serialize a loggable object into this buffer. Return it ready for a copy.

Throws:
DatabaseException

getLogEntry

public LogEntry getLogEntry(long lsn)
                     throws DatabaseException
Instantiate all the objects in the log entry at this LSN.

Parameters:
lsn - location of entry in log.
Returns:
log entry that embodies all the objects in the log entry.
Throws:
DatabaseException

getLogEntry

LogEntry getLogEntry(long lsn,
                     RandomAccessFile file)
               throws DatabaseException
Throws:
DatabaseException

get

public Object get(long lsn)
           throws DatabaseException
Fault in the first object in the log entry log entry at this LSN.

Parameters:
lsn - location of object in log
Returns:
the object in the log
Throws:
DatabaseException

flush

public void flush()
           throws DatabaseException
Flush all log entries, fsync the log file.

Throws:
DatabaseException

flushInternal

protected abstract void flushInternal()
                               throws LogException,
                                      DatabaseException
Throws:
LogException
DatabaseException

loadStats

public void loadStats(StatsConfig config,
                      EnvironmentStats stats)
               throws DatabaseException
Throws:
DatabaseException

getUnflushableTrackedSummary

public abstract TrackedFileSummary getUnflushableTrackedSummary(long file)
                                                         throws DatabaseException
Returns a tracked summary for the given file which will not be flushed. Used for watching changes that occur while a file is being cleaned.

Throws:
DatabaseException

getUnflushableTrackedSummaryInternal

protected TrackedFileSummary getUnflushableTrackedSummaryInternal(long file)
                                                           throws DatabaseException
Throws:
DatabaseException

countObsoleteNode

public abstract void countObsoleteNode(long lsn,
                                       LogEntryType type)
                                throws DatabaseException
Count node as obsolete under the log write latch. This is done here because the log write latch is managed here, and all utilization counting must be performed under the log write latch.

Throws:
DatabaseException

countObsoleteNodeInternal

protected void countObsoleteNodeInternal(UtilizationTracker tracker,
                                         long lsn,
                                         LogEntryType type)
                                  throws DatabaseException
Throws:
DatabaseException

countObsoleteNodes

public abstract void countObsoleteNodes(TrackedFileSummary[] summaries)
                                 throws DatabaseException
Counts file summary info under the log write latch.

Throws:
DatabaseException

countObsoleteNodesInternal

protected void countObsoleteNodesInternal(UtilizationTracker tracker,
                                          TrackedFileSummary[] summaries)
                                   throws DatabaseException
Throws:
DatabaseException

countObsoleteINs

public abstract void countObsoleteINs(List lsnList)
                               throws DatabaseException
Counts the given obsolete IN LSNs under the log write latch.

Throws:
DatabaseException

countObsoleteINsInternal

protected void countObsoleteINsInternal(List lsnList)
                                 throws DatabaseException
Throws:
DatabaseException

setReadHook

public void setReadHook(TestHook hook)


Copyright 2004-2005 Sleepycat, Inc. All Rights Reserved.