Class MetadataCacheImpl<T>
- java.lang.Object
-
- org.apache.pulsar.metadata.cache.impl.MetadataCacheImpl<T>
-
- All Implemented Interfaces:
java.util.function.Consumer<Notification>,MetadataCache<T>
public class MetadataCacheImpl<T> extends java.lang.Object implements MetadataCache<T>, java.util.function.Consumer<Notification>
-
-
Constructor Summary
Constructors Constructor Description MetadataCacheImpl(MetadataStore store, com.fasterxml.jackson.core.type.TypeReference<T> typeRef, MetadataCacheConfig cacheConfig)MetadataCacheImpl(MetadataStore store, com.fasterxml.jackson.databind.JavaType type, MetadataCacheConfig cacheConfig)MetadataCacheImpl(MetadataStore store, MetadataSerde<T> serde, MetadataCacheConfig cacheConfig)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(Notification t)java.util.concurrent.CompletableFuture<java.lang.Void>create(java.lang.String path, T value)Create a new object in the metadata store.java.util.concurrent.CompletableFuture<java.lang.Void>delete(java.lang.String path)Delete an object from the metadata store.java.util.concurrent.CompletableFuture<java.lang.Boolean>exists(java.lang.String path)Read whether a specific path exists.java.util.concurrent.CompletableFuture<java.util.Optional<T>>get(java.lang.String path)Tries to fetch one item from the cache or fallback to the store if not present.java.util.concurrent.CompletableFuture<java.util.List<java.lang.String>>getChildren(java.lang.String path)Return all the nodes (lexicographically sorted) that are children to the specific path.java.util.Optional<T>getIfCached(java.lang.String path)Check if an object is present in cache without triggering a load from the metadata store.java.util.concurrent.CompletableFuture<java.util.Optional<CacheGetResult<T>>>getWithStats(java.lang.String path)Tries to fetch one item from the cache or fallback to the store if not present.voidinvalidate(java.lang.String path)Force the invalidation of an object in the metadata cache.voidinvalidateAll()java.util.concurrent.CompletableFuture<T>readModifyUpdate(java.lang.String path, java.util.function.Function<T,T> modifyFunction)Perform an atomic read-modify-update of the value.java.util.concurrent.CompletableFuture<T>readModifyUpdateOrCreate(java.lang.String path, java.util.function.Function<java.util.Optional<T>,T> modifyFunction)Perform an atomic read-modify-update of the value.voidrefresh(java.lang.String path)Invalidate and reload an object in the metadata cache.
-
-
-
Constructor Detail
-
MetadataCacheImpl
public MetadataCacheImpl(MetadataStore store, com.fasterxml.jackson.core.type.TypeReference<T> typeRef, MetadataCacheConfig cacheConfig)
-
MetadataCacheImpl
public MetadataCacheImpl(MetadataStore store, com.fasterxml.jackson.databind.JavaType type, MetadataCacheConfig cacheConfig)
-
MetadataCacheImpl
public MetadataCacheImpl(MetadataStore store, MetadataSerde<T> serde, MetadataCacheConfig cacheConfig)
-
-
Method Detail
-
get
public java.util.concurrent.CompletableFuture<java.util.Optional<T>> get(java.lang.String path)
Description copied from interface:MetadataCacheTries to fetch one item from the cache or fallback to the store if not present.If the key is not found, the
Optionalwill be empty.- Specified by:
getin interfaceMetadataCache<T>- Parameters:
path- the path of the object in the metadata store- Returns:
- a future to track the completion of the operation
-
getWithStats
public java.util.concurrent.CompletableFuture<java.util.Optional<CacheGetResult<T>>> getWithStats(java.lang.String path)
Description copied from interface:MetadataCacheTries to fetch one item from the cache or fallback to the store if not present.If the key is not found, the
Optionalwill be empty.- Specified by:
getWithStatsin interfaceMetadataCache<T>- Parameters:
path- the path of the object in the metadata store- Returns:
- a future to track the completion of the operation
-
getIfCached
public java.util.Optional<T> getIfCached(java.lang.String path)
Description copied from interface:MetadataCacheCheck if an object is present in cache without triggering a load from the metadata store.- Specified by:
getIfCachedin interfaceMetadataCache<T>- Parameters:
path- the path of the object in the metadata store- Returns:
- the cached object or an empty
Optionalis the cache doesn't have the object
-
readModifyUpdateOrCreate
public java.util.concurrent.CompletableFuture<T> readModifyUpdateOrCreate(java.lang.String path, java.util.function.Function<java.util.Optional<T>,T> modifyFunction)
Description copied from interface:MetadataCachePerform an atomic read-modify-update of the value.The modify function can potentially be called multiple times if there are concurrent updates happening.
If the object does not exist yet, the
modifyFunctionwill get passed anOptional.empty()object.- Specified by:
readModifyUpdateOrCreatein interfaceMetadataCache<T>- Parameters:
path- the path of the object in the metadata storemodifyFunction- a function that will be passed the current value and returns a modified value to be stored- Returns:
- a future to track the completion of the operation
-
readModifyUpdate
public java.util.concurrent.CompletableFuture<T> readModifyUpdate(java.lang.String path, java.util.function.Function<T,T> modifyFunction)
Description copied from interface:MetadataCachePerform an atomic read-modify-update of the value.The modify function can potentially be called multiple times if there are concurrent updates happening.
- Specified by:
readModifyUpdatein interfaceMetadataCache<T>- Parameters:
path- the path of the object in the metadata storemodifyFunction- a function that will be passed the current value and returns a modified value to be stored- Returns:
- a future to track the completion of the operation
-
create
public java.util.concurrent.CompletableFuture<java.lang.Void> create(java.lang.String path, T value)Description copied from interface:MetadataCacheCreate a new object in the metadata store.This operation will make sure to keep the cache consistent.
- Specified by:
createin interfaceMetadataCache<T>- Parameters:
path- the path of the object in the metadata storevalue- the object to insert in metadata store- Returns:
- a future to track the completion of the operation
-
delete
public java.util.concurrent.CompletableFuture<java.lang.Void> delete(java.lang.String path)
Description copied from interface:MetadataCacheDelete an object from the metadata store.This operation will make sure to keep the cache consistent.
- Specified by:
deletein interfaceMetadataCache<T>- Parameters:
path- the path of the object in the metadata store- Returns:
- a future to track the completion of the operation
-
exists
public java.util.concurrent.CompletableFuture<java.lang.Boolean> exists(java.lang.String path)
Description copied from interface:MetadataCacheRead whether a specific path exists. Note: In case of keys with multiple levels (eg: '/a/b/c'), checking the existence of a parent (eg. '/a') might not necessarily return true, unless the key had been explicitly created.- Specified by:
existsin interfaceMetadataCache<T>- Parameters:
path- the path of the key to check on the store- Returns:
- a future to track the async request
-
getChildren
public java.util.concurrent.CompletableFuture<java.util.List<java.lang.String>> getChildren(java.lang.String path)
Description copied from interface:MetadataCacheReturn all the nodes (lexicographically sorted) that are children to the specific path. If the path itself does not exist, it will return an empty list.- Specified by:
getChildrenin interfaceMetadataCache<T>- Parameters:
path- the path of the key to get from the store- Returns:
- a future to track the async request
-
invalidate
public void invalidate(java.lang.String path)
Description copied from interface:MetadataCacheForce the invalidation of an object in the metadata cache.- Specified by:
invalidatein interfaceMetadataCache<T>- Parameters:
path- the path of the object in the metadata store
-
refresh
public void refresh(java.lang.String path)
Description copied from interface:MetadataCacheInvalidate and reload an object in the metadata cache.- Specified by:
refreshin interfaceMetadataCache<T>- Parameters:
path- the path of the object in the metadata store
-
invalidateAll
public void invalidateAll()
-
accept
public void accept(Notification t)
- Specified by:
acceptin interfacejava.util.function.Consumer<T>
-
-