public final class FieldCacheSanityChecker extends Object
Lucene 2.9 Introduced numerous enhancements into how the FieldCache is used by the low levels of Lucene searching (for Sorting and ValueSourceQueries) to improve both the speed for Sorting, as well as reopening of IndexReaders. But these changes have shifted the usage of FieldCache from "top level" IndexReaders (frequently a MultiReader or DirectoryReader) down to the leaf level SegmentReaders. As a result, existing applications that directly access the FieldCache may find RAM usage increase significantly when upgrading to 2.9 or Later. This class provides an API for these applications (or their Unit tests) to check at run time if the FieldCache contains "insane" usages of the FieldCache.
FieldCache
,
FieldCacheSanityChecker.Insanity
,
FieldCacheSanityChecker.InsanityType
Modifier and Type | Class and Description |
---|---|
static class |
FieldCacheSanityChecker.Insanity
Simple container for a collection of related CacheEntry objects that
in conjunction with each other represent some "insane" usage of the
FieldCache.
|
static class |
FieldCacheSanityChecker.InsanityType
An Enumeration of the different types of "insane" behavior that
may be detected in a FieldCache.
|
Constructor and Description |
---|
FieldCacheSanityChecker() |
Modifier and Type | Method and Description |
---|---|
FieldCacheSanityChecker.Insanity[] |
check(FieldCache.CacheEntry... cacheEntries)
Tests a CacheEntry[] for indication of "insane" cache usage.
|
static FieldCacheSanityChecker.Insanity[] |
checkSanity(FieldCache.CacheEntry... cacheEntries)
Quick and dirty convenience method that instantiates an instance with
"good defaults" and uses it to test the CacheEntrys
|
static FieldCacheSanityChecker.Insanity[] |
checkSanity(FieldCache cache)
Quick and dirty convenience method
|
void |
setRamUsageEstimator(boolean flag)
If set, estimate size for all CacheEntry objects will be calculateed.
|
public void setRamUsageEstimator(boolean flag)
public static FieldCacheSanityChecker.Insanity[] checkSanity(FieldCache cache)
public static FieldCacheSanityChecker.Insanity[] checkSanity(FieldCache.CacheEntry... cacheEntries)
public FieldCacheSanityChecker.Insanity[] check(FieldCache.CacheEntry... cacheEntries)
NOTE:FieldCache CreationPlaceholder objects are ignored. (:TODO: is this a bad idea? are we masking a real problem?)