public class RetryingCacheDecorator extends Object implements ArtifactCache, CacheDecorator
Constructor and Description |
---|
RetryingCacheDecorator(ArtifactCacheMode cacheMode,
ArtifactCache delegate,
int maxFetchRetries,
BuckEventBus buckEventBus) |
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.
|
ArtifactCache |
getDelegate() |
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.
|
com.google.common.util.concurrent.ListenableFuture<Unit> |
store(com.google.common.collect.ImmutableList<Pair<ArtifactInfo,BorrowablePath>> artifacts)
Store the list of artifacts at path specified by output to cache in passed order, such that it
can later be fetched using ruleKey as the lookup key.
|
public RetryingCacheDecorator(ArtifactCacheMode cacheMode, ArtifactCache delegate, int maxFetchRetries, BuckEventBus buckEventBus)
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 ArtifactCache getDelegate()
getDelegate
in interface CacheDecorator
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<Unit> store(com.google.common.collect.ImmutableList<Pair<ArtifactInfo,BorrowablePath>> artifacts)
ArtifactCache
This is a noop if ArtifactCache.getCacheReadMode()
} returns READONLY
.
store
in interface ArtifactCache
artifacts
- list of artifact info and path to be uploaded to the cache in given order.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