public class LoggingArtifactCacheDecorator extends Object implements ArtifactCache, CacheDecorator
ArtifactCache
to log a ArtifactCacheEvent
for the start
and finish of each event. The underlying cache must only provide synchronous operations.Constructor and Description |
---|
LoggingArtifactCacheDecorator(BuckEventBus eventBus,
ArtifactCache delegate,
ArtifactCacheEventFactory eventFactory) |
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.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
store
public LoggingArtifactCacheDecorator(BuckEventBus eventBus, ArtifactCache delegate, ArtifactCacheEventFactory eventFactory)
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
public ArtifactCache getDelegate()
getDelegate
in interface CacheDecorator