public class Cleaner extends java.lang.Object implements DaemonRunner, EnvConfigObserver
| Modifier and Type | Field and Description |
|---|---|
(package private) static java.lang.String |
CLEAN_IN |
(package private) static java.lang.String |
CLEAN_LN |
(package private) static java.lang.String |
CLEAN_MIGRATE_LN |
(package private) static java.lang.String |
CLEAN_PENDING_LN |
(package private) long |
cleanerBytesInterval |
(package private) boolean |
clusterAll |
(package private) boolean |
clusterResident |
(package private) java.util.logging.Level |
detailedTraceLevel |
(package private) static boolean |
DO_CRITICAL_EVICTION
Whether the cleaner should participate in critical eviction.
|
(package private) boolean |
expunge |
(package private) boolean |
fetchObsoleteSize |
(package private) boolean |
lazyMigration |
(package private) long |
lockTimeout |
(package private) int |
lookAheadCacheSize |
(package private) int |
maxBatchFiles |
(package private) int |
nBacklogFiles |
(package private) long |
nCleanerDeletions |
(package private) long |
nCleanerRuns |
(package private) long |
nClusterLNsProcessed |
(package private) long |
nDeadlockRetries |
(package private) long |
nEntriesRead |
(package private) long |
nINsCleaned |
(package private) long |
nINsDead |
(package private) long |
nINsMigrated |
(package private) long |
nINsObsolete |
(package private) long |
nLNQueueHits |
(package private) long |
nLNsCleaned |
(package private) long |
nLNsDead |
(package private) long |
nLNsLocked |
(package private) long |
nLNsMarked |
(package private) long |
nLNsMigrated |
(package private) long |
nLNsObsolete |
(package private) long |
nMarkedLNsProcessed |
(package private) long |
nPendingLNsLocked |
(package private) long |
nPendingLNsProcessed |
(package private) long |
nRepeatIteratorReads |
(package private) long |
nToBeCleanedLNsProcessed |
(package private) static boolean |
PROACTIVE_MIGRATION
Whether to fetch LNs for files in the to-be-cleaned set during lazy
migration.
|
(package private) int |
readBufferSize |
(package private) boolean |
trackDetail |
(package private) static CacheMode |
UPDATE_GENERATION
Whether to update the IN generation count during searches.
|
| Constructor and Description |
|---|
Cleaner(EnvironmentImpl env,
java.lang.String name) |
| Modifier and Type | Method and Description |
|---|---|
(package private) void |
addPendingDB(DatabaseImpl db)
Adds the DB ID to the pending DB set if it is being deleted but deletion
is not yet complete.
|
void |
clearDeleteProhibited() |
void |
close()
Release resources and update memory budget.
|
(package private) void |
deleteSafeToDeleteFiles()
Deletes all files that are safe-to-delete, if there are no read/only
processes and concurrent backups.
|
int |
doClean(boolean cleanMultipleFiles,
boolean forceCleaning)
Cleans selected files and returns the number of files cleaned.
|
void |
envConfigUpdate(DbConfigManager cm,
EnvironmentMutableConfig ignore)
Process notifications of mutable property changes.
|
boolean |
getFetchObsoleteSize() |
FileSelector.CheckpointStartCleanerState |
getFilesAtCheckpointStart()
Returns a copy of the cleaned and processed files at the time a
checkpoint starts.
|
(package private) byte[] |
getLNMainKey(BIN bin,
int index)
Returns the main key for a given BIN entry.
|
int |
getNWakeupRequests() |
UtilizationProfile |
getUtilizationProfile() |
UtilizationTracker |
getUtilizationTracker() |
(package private) void |
injectFileForCleaning(java.lang.Long fileNum)
For unit testing.
|
boolean |
isEvictable(BIN bin,
int index)
Returns whether the given BIN entry may be stripped by the evictor.
|
void |
lazyMigrateDupCountLN(DIN din,
ChildReference dclRef,
boolean proactiveMigration)
This method should be called just before logging a root DIN.
|
void |
lazyMigrateLNs(BIN bin,
boolean proactiveMigration,
boolean backgroundIO)
This method should be called just before logging a BIN.
|
void |
loadStats(StatsConfig config,
EnvironmentStats stat)
Load stats.
|
(package private) void |
processPending()
If any LNs are pending, process them.
|
void |
requestShutdown() |
void |
runOrPause(boolean run) |
void |
setDeleteProhibited() |
void |
setExceptionListener(ExceptionListener exceptionListener) |
void |
shutdown() |
(package private) void |
trace(java.util.logging.Level level,
java.lang.String action,
Node node,
long logLsn,
boolean completed,
boolean obsolete,
boolean dirtiedMigrated)
Send trace messages to the java.util.logger.
|
void |
updateFilesAtCheckpointEnd(FileSelector.CheckpointStartCleanerState info)
When a checkpoint is complete, update the files that were returned at
the beginning of the checkpoint.
|
void |
updateReadOnlyFileCollections()
Update the lowUtilizationFiles and mustBeCleanedFiles fields with new
read-only collections, and update the backlog file count.
|
void |
wakeup() |
static final java.lang.String CLEAN_IN
static final java.lang.String CLEAN_LN
static final java.lang.String CLEAN_MIGRATE_LN
static final java.lang.String CLEAN_PENDING_LN
static final boolean PROACTIVE_MIGRATION
static final CacheMode UPDATE_GENERATION
static final boolean DO_CRITICAL_EVICTION
int nBacklogFiles
long nCleanerRuns
long nCleanerDeletions
long nINsObsolete
long nINsCleaned
long nINsDead
long nINsMigrated
long nLNsObsolete
long nLNsCleaned
long nLNsDead
long nLNsLocked
long nLNsMigrated
long nLNsMarked
long nLNQueueHits
long nPendingLNsProcessed
long nMarkedLNsProcessed
long nToBeCleanedLNsProcessed
long nClusterLNsProcessed
long nPendingLNsLocked
long nEntriesRead
long nRepeatIteratorReads
long lockTimeout
int readBufferSize
int lookAheadCacheSize
long nDeadlockRetries
boolean expunge
boolean clusterResident
boolean clusterAll
int maxBatchFiles
java.util.logging.Level detailedTraceLevel
long cleanerBytesInterval
boolean trackDetail
boolean fetchObsoleteSize
boolean lazyMigration
public Cleaner(EnvironmentImpl env, java.lang.String name) throws DatabaseException
DatabaseExceptionpublic void envConfigUpdate(DbConfigManager cm, EnvironmentMutableConfig ignore) throws DatabaseException
envConfigUpdate in interface EnvConfigObserverDatabaseExceptionpublic UtilizationTracker getUtilizationTracker()
public UtilizationProfile getUtilizationProfile()
public boolean getFetchObsoleteSize()
public void runOrPause(boolean run)
runOrPause in interface DaemonRunnerpublic void wakeup()
public void requestShutdown()
requestShutdown in interface DaemonRunnerpublic void shutdown()
shutdown in interface DaemonRunnerpublic int getNWakeupRequests()
getNWakeupRequests in interface DaemonRunnerpublic void setExceptionListener(ExceptionListener exceptionListener)
setExceptionListener in interface DaemonRunnerpublic int doClean(boolean cleanMultipleFiles,
boolean forceCleaning)
throws DatabaseException
cleanMultipleFiles - is true to clean until we're under budget,
or false to clean at most one file.forceCleaning - is true to clean even if we're not under the
utilization threshold.DatabaseExceptionpublic void loadStats(StatsConfig config, EnvironmentStats stat) throws DatabaseException
DatabaseExceptionvoid injectFileForCleaning(java.lang.Long fileNum)
void deleteSafeToDeleteFiles()
throws DatabaseException
DatabaseExceptionpublic void setDeleteProhibited()
public void clearDeleteProhibited()
public FileSelector.CheckpointStartCleanerState getFilesAtCheckpointStart() throws DatabaseException
If non-null is returned, the checkpoint should flush an extra level, and addCheckpointedFiles() should be called when the checkpoint is complete.
DatabaseExceptionpublic void updateFilesAtCheckpointEnd(FileSelector.CheckpointStartCleanerState info) throws DatabaseException
DatabaseExceptionpublic void updateReadOnlyFileCollections()
void processPending()
throws DatabaseException
DatabaseExceptionpublic boolean isEvictable(BIN bin, int index)
public void lazyMigrateLNs(BIN bin, boolean proactiveMigration, boolean backgroundIO) throws DatabaseException
On return this method guarantees that no MIGRATE flag will be set on any child entry. If this method is *not* called before logging a BIN, then the addPendingLNs method must be called.
bin - is the latched BIN. The latch will not be released by this
method.proactiveMigration - perform proactive migration if needed; this is
false during a split, to reduce the delay in the user operation.DatabaseExceptionpublic void lazyMigrateDupCountLN(DIN din, ChildReference dclRef, boolean proactiveMigration) throws DatabaseException
On return this method guarantees that the MIGRATE flag will not be set on the child entry. If this method is *not* called before logging a root DIN, then the addPendingDupCountLN method must be called.
din - is the latched DIN. The latch will not be released by this
method.dclRef - is the reference to the DupCountLN.proactiveMigration - perform proactive migration if needed; this is
false during a split, to reduce the delay in the user operation.DatabaseExceptionbyte[] getLNMainKey(BIN bin, int index) throws DatabaseException
DatabaseExceptionvoid addPendingDB(DatabaseImpl db)
void trace(java.util.logging.Level level,
java.lang.String action,
Node node,
long logLsn,
boolean completed,
boolean obsolete,
boolean dirtiedMigrated)
public void close()
Copyright (c) 2004,2008 Oracle. All rights reserved.