public class DirArtifactCache extends Object implements ArtifactCache
Constructor and Description |
---|
DirArtifactCache(String name,
ProjectFilesystem filesystem,
Path cacheDir,
CacheReadMode cacheReadMode,
Optional<Long> maxCacheSizeBytes,
com.google.common.util.concurrent.ListeningExecutorService storeExecutorService) |
Modifier and Type | Method and Description |
---|---|
void |
close() |
com.google.common.util.concurrent.ListenableFuture<CacheDeleteResult> |
deleteAsync(List<RuleKey> ruleKeys) |
com.google.common.util.concurrent.ListenableFuture<CacheResult> |
fetchAsync(BuildTarget target,
RuleKey ruleKey,
LazyPath output)
Fetch a cached artifact, keyed by ruleKey, save the artifact to path specified by output, and
return true on success.
|
CacheReadMode |
getCacheReadMode()
This method must return the same value over the lifetime of this object.
|
com.google.common.util.concurrent.ListenableFuture<com.google.common.collect.ImmutableMap<RuleKey,CacheResult>> |
multiContainsAsync(com.google.common.collect.ImmutableSet<RuleKey> ruleKeys)
Check if the cache contains the given artifacts, keyed by ruleKeys, without fetching them, and
return a map of results wrapped in a
ListenableFuture . |
void |
skipPendingAndFutureAsyncFetches()
All pending (and future) async fetches will be immediately marked as skipped.
|
com.google.common.util.concurrent.ListenableFuture<Unit> |
store(ArtifactInfo info,
BorrowablePath output)
Store the artifact at path specified by output to cache, such that it can later be fetched
using ruleKey as the lookup key.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
store
public DirArtifactCache(String name, ProjectFilesystem filesystem, Path cacheDir, CacheReadMode cacheReadMode, Optional<Long> maxCacheSizeBytes, com.google.common.util.concurrent.ListeningExecutorService storeExecutorService) throws IOException
IOException
public com.google.common.util.concurrent.ListenableFuture<CacheResult> fetchAsync(@Nullable BuildTarget target, RuleKey ruleKey, LazyPath output)
ArtifactCache
fetchAsync
in interface ArtifactCache
target
- rule for which this is an artifactruleKey
- cache fetch keyoutput
- Path to store artifact to. Path should not be accessed unless store operation is
guaranteed by the cache, to avoid potential extra disk I/O.CacheResultType.MISS
(indicating a failure) or some type of
hit.public void skipPendingAndFutureAsyncFetches()
ArtifactCache
skipPendingAndFutureAsyncFetches
in interface ArtifactCache
public com.google.common.util.concurrent.ListenableFuture<Unit> store(ArtifactInfo info, BorrowablePath output)
ArtifactCache
This is a noop if ArtifactCache.getCacheReadMode()
} returns READONLY
.
store
in interface ArtifactCache
info
- information to store with the artifactoutput
- path to read artifact from. If its borrowable, you may freely move the file into
cache without obtaining a copy of the file.ListenableFuture
that completes once the store has finished.public com.google.common.util.concurrent.ListenableFuture<com.google.common.collect.ImmutableMap<RuleKey,CacheResult>> multiContainsAsync(com.google.common.collect.ImmutableSet<RuleKey> ruleKeys)
ArtifactCache
ListenableFuture
. This is supposed to be fast, but
best-effort, meaning that there will be false-positives.multiContainsAsync
in interface ArtifactCache
ruleKeys
- Set of cache fetch keys.CacheResult
which can be a CacheResultType.MISS
/ CacheResultType.ERROR
(indicating a failure) or CacheResultType.CONTAINS
.public com.google.common.util.concurrent.ListenableFuture<CacheDeleteResult> deleteAsync(List<RuleKey> ruleKeys)
deleteAsync
in interface ArtifactCache
public CacheReadMode getCacheReadMode()
ArtifactCache
getCacheReadMode
in interface ArtifactCache
ArtifactCache
supports storing artifacts.public void close()
close
in interface ArtifactCache
close
in interface AutoCloseable