public class RecoveryUtilizationTracker extends BaseLocalUtilizationTracker
Per-database information is keyed by DatabaseId because the DatabaseImpl is not always available during recovery. In fact this is the only reason that a "local" tracker is used during recovery -- to avoid requiring that the DatabaseImpl is available, which is necessary to use the "global" UtilizationTracker. There is no requirement to accumulate totals locally, since recovery is single threaded.
When finished with this object, its information should be added to the Environment's UtilizationTracker and DatabaseImpl objects by calling transferToUtilizationTracker. This is done at the end of recovery, just prior to the checkpoint. It does not have to be done under the log write latch, since recovery is single threaded.
bytesSinceActivate, cleaner, env
Constructor and Description |
---|
RecoveryUtilizationTracker(EnvironmentImpl env) |
Modifier and Type | Method and Description |
---|---|
void |
countNewLogEntry(long lsn,
LogEntryType type,
int size,
DatabaseId dbId)
Counts the addition of all new log entries including LNs.
|
boolean |
countObsoleteIfUncounted(long oldLsn,
long newLsn,
LogEntryType type,
int size,
DatabaseId dbId,
boolean countExact)
Counts the oldLsn of a node obsolete if it has not already been counted
at the point of newLsn in the log.
|
void |
countObsoleteUnconditional(long lsn,
LogEntryType type,
int size,
DatabaseId dbId,
boolean countExact)
Counts the LSN of a node obsolete unconditionally.
|
(package private) DatabaseImpl |
databaseKeyToDatabaseImpl(java.lang.Object databaseKey)
Returns the DatabaseImpl from the database key, which in this case is
the DatabaseId.
|
int |
fetchLNSize(int size,
long lsn)
Fetches the LN to get its size only if necessary and so configured.
|
(package private) boolean |
isFileUncounted(java.lang.Long fileNum,
long lsn)
Overrides this method for recovery and returns whether the FileSummaryLN
for the given file is prior to the given LSN.
|
(package private) void |
releaseDatabaseImpl(DatabaseImpl db)
Must release the database, since DbTree.getDb was called by
databaseKeyToDatabaseImpl.
|
void |
resetDbInfo(DatabaseId dbId)
Clears all accmulated utilization info for the given database.
|
void |
resetFileInfo(long fileNum)
Clears all accmulated utilization info for the given file.
|
void |
saveLastLoggedFileSummaryLN(long fileNum,
long lsn)
Saves the LSN of the last logged FileSummaryLN.
|
void |
saveLastLoggedMapLN(DatabaseId dbId,
long lsn)
Saves the LSN of the last logged MapLN.
|
getDatabaseMap, getDbFileSummary, removeDbFileSummaries, transferToUtilizationTracker
close, countNew, countObsolete, countObsoleteDb, getEnvironment, getFileSummary, getTrackedFile, getTrackedFiles, isLNType, resetFile, trackObsoleteInfo
public RecoveryUtilizationTracker(EnvironmentImpl env)
public void saveLastLoggedFileSummaryLN(long fileNum, long lsn)
public void saveLastLoggedMapLN(DatabaseId dbId, long lsn)
public void countNewLogEntry(long lsn, LogEntryType type, int size, DatabaseId dbId)
public void countObsoleteUnconditional(long lsn, LogEntryType type, int size, DatabaseId dbId, boolean countExact)
Even when countExact is true, duplicate offsets are not checked (no assertion is fired) because recovery is known to count the same LSN offset twice in certain circumstances.
public boolean countObsoleteIfUncounted(long oldLsn, long newLsn, LogEntryType type, int size, DatabaseId dbId, boolean countExact)
Even when countExact is true, duplicate offsets are not checked (no assertion is fired) because recovery is known to count the same LSN offset twice in certain circumstances.
public int fetchLNSize(int size, long lsn) throws DatabaseException
DatabaseException
boolean isFileUncounted(java.lang.Long fileNum, long lsn)
isFileUncounted
in class BaseUtilizationTracker
public void resetFileInfo(long fileNum)
public void resetDbInfo(DatabaseId dbId)
DatabaseImpl databaseKeyToDatabaseImpl(java.lang.Object databaseKey) throws DatabaseException
databaseKeyToDatabaseImpl
in class BaseLocalUtilizationTracker
DatabaseException
void releaseDatabaseImpl(DatabaseImpl db)
releaseDatabaseImpl
in class BaseLocalUtilizationTracker
Copyright (c) 2004-2012 Oracle. All rights reserved.