Package org.apache.pulsar.metadata.api
Interface MetadataCache<T>
- All Known Implementing Classes:
MetadataCacheImpl
public interface MetadataCache<T>
Represent the caching layer access for a specific type of objects.
-
Method Summary
Modifier and TypeMethodDescriptionCreate a new object in the metadata store.Delete an object from the metadata store.Read whether a specific path exists.Tries to fetch one item from the cache or fallback to the store if not present.getChildren(String path) Return all the nodes (lexicographically sorted) that are children to the specific path.getIfCached(String path) Check if an object is present in cache without triggering a load from the metadata store.getWithStats(String path) Tries to fetch one item from the cache or fallback to the store if not present.voidinvalidate(String path) Force the invalidation of an object in the metadata cache.readModifyUpdate(String path, Function<T, T> modifyFunction) Perform an atomic read-modify-update of the value.Perform an atomic read-modify-update of the value.voidInvalidate and reload an object in the metadata cache.
-
Method Details
-
get
Tries 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.- Parameters:
path- the path of the object in the metadata store- Returns:
- a future to track the completion of the operation
-
getWithStats
Tries 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.- Parameters:
path- the path of the object in the metadata store- Returns:
- a future to track the completion of the operation
-
getIfCached
Check if an object is present in cache without triggering a load from the metadata store.- 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
-
getChildren
Return 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.- Parameters:
path- the path of the key to get from the store- Returns:
- a future to track the async request
-
exists
Read 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.- Parameters:
path- the path of the key to check on the store- Returns:
- a future to track the async request
-
readModifyUpdateOrCreate
Perform 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.- 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
Perform an atomic read-modify-update of the value.The modify function can potentially be called multiple times if there are concurrent updates happening.
- 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
Create a new object in the metadata store.This operation will make sure to keep the cache consistent.
- 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
- Throws:
MetadataStoreException.AlreadyExistsException- If the object is already present.
-
delete
Delete an object from the metadata store.This operation will make sure to keep the cache consistent.
- Parameters:
path- the path of the object in the metadata store- Returns:
- a future to track the completion of the operation
- Throws:
MetadataStoreException.NotFoundException- if the object is not present in the metadata store.
-
invalidate
Force the invalidation of an object in the metadata cache.- Parameters:
path- the path of the object in the metadata store
-
refresh
Invalidate and reload an object in the metadata cache.- Parameters:
path- the path of the object in the metadata store
-