Expose the list of pack files in the DfsBlockCache
Callers may want to inspect the contents of the cache, which this allows them to do in a read-only fashion without any locking. Change-Id: Ifd78e8ce34e26e5cc33e9dd61d70c593ce479ee0
This commit is contained in:
parent
35d72ac806
commit
dff9d56b94
|
@ -46,9 +46,11 @@
|
|||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.concurrent.atomic.AtomicReferenceArray;
|
||||
|
@ -156,6 +158,9 @@ public static DfsBlockCache getInstance() {
|
|||
/** Cache of pack files, indexed by description. */
|
||||
private final Map<DfsPackDescription, DfsPackFile> packCache;
|
||||
|
||||
/** View of pack files in the pack cache. */
|
||||
private final Collection<DfsPackFile> packFiles;
|
||||
|
||||
/** Number of times a block was found in the cache. */
|
||||
private final AtomicLong statHit;
|
||||
|
||||
|
@ -203,7 +208,9 @@ else if (eb < 4)
|
|||
readAheadLimit = cfg.getReadAheadLimit();
|
||||
readAheadService = cfg.getReadAheadService();
|
||||
|
||||
packCache = new HashMap<DfsPackDescription, DfsPackFile>();
|
||||
packCache = new ConcurrentHashMap<DfsPackDescription, DfsPackFile>(
|
||||
16, 0.75f, 1);
|
||||
packFiles = Collections.unmodifiableCollection(packCache.values());
|
||||
|
||||
statHit = new AtomicLong();
|
||||
statMiss = new AtomicLong();
|
||||
|
@ -234,6 +241,16 @@ public long getEvictions() {
|
|||
return statEvict;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the pack files stored in this cache.
|
||||
*
|
||||
* @return a collection of pack files, some of which may not actually be
|
||||
* present; the caller should check the pack's cached size.
|
||||
*/
|
||||
public Collection<DfsPackFile> getPackFiles() {
|
||||
return packFiles;
|
||||
}
|
||||
|
||||
DfsPackFile getOrCreate(DfsPackDescription dsc, DfsPackKey key) {
|
||||
// TODO This table grows without bound. It needs to clean up
|
||||
// entries that aren't in cache anymore, and aren't being used
|
||||
|
|
Loading…
Reference in New Issue