Interface FDBRecordStoreStateCache
-
- All Known Implementing Classes:
MetaDataVersionStampStoreStateCache
,PassThroughRecordStoreStateCache
,ReadVersionRecordStoreStateCache
@API(EXPERIMENTAL) public interface FDBRecordStoreStateCache
A cache forFDBRecordStoreStateCacheEntry
objects. These cache entries contain information necessary to initialize a record store, so caching this information can make accessing a record store multiple times in quick succession cheaper both in that latency is saved at record store creation time. Additionally, in scenarios when a client is connecting to a very small number of record stores, loading this information from disk can load potential hot keys which can generally degrade cluster performance. Caching this information avoids performing those reads.Note that if the client is connecting to multiple clusters, there should be one cache per cluster. In general, as there is one
FDBDatabase
object per cluster, it is sufficient to provide aFDBRecordStoreStateCacheFactory
to theFDBDatabaseFactory
singleton. One can also provide a cache instance to anFDBRecordStore
at build time.Clients should generally not call methods defined on this interface, as they are intended mainly for internal use within the Record Layer.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description void
clear()
Remove all entries from the cache.CompletableFuture<FDBRecordStoreStateCacheEntry>
get(FDBRecordStore recordStore, FDBRecordStoreBase.StoreExistenceCheck existenceCheck)
Load the record store state for the record store stored at the given location.default void
validateContext(FDBRecordContext context)
void
validateDatabase(FDBDatabase database)
-
-
-
Method Detail
-
get
@API(INTERNAL) @Nonnull CompletableFuture<FDBRecordStoreStateCacheEntry> get(@Nonnull FDBRecordStore recordStore, @Nonnull FDBRecordStoreBase.StoreExistenceCheck existenceCheck)
Load the record store state for the record store stored at the given location. If this information is available in the cache, it will be served from memory without communicating with the database. Otherwise, the information may require performing network and disk I/O. Note that the cache entry returned should be consistent with the view of the database as viewed by the transaction provided as input. The cache implementations are generally differentiated by the manner in which they invalidate data to ensure that the value returned is consistent with this contract.This method should generally not be called by clients importing the Record Layer.
- Parameters:
recordStore
- the record store to load the store state ofexistenceCheck
- whether to error if the store does or does not exist- Returns:
- a future that will complete with the cached store state
-
validateDatabase
@API(INTERNAL) void validateDatabase(@Nonnull FDBDatabase database)
-
validateContext
@API(INTERNAL) default void validateContext(@Nonnull FDBRecordContext context)
-
clear
void clear()
Remove all entries from the cache.
-
-