Class MetadataCacheImpl<T>

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void accept​(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.
      void invalidate​(java.lang.String path)
      Force the invalidation of an object in the metadata cache.
      void invalidateAll()  
      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.
      void refresh​(java.lang.String path)
      Invalidate and reload an object in the metadata cache.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.util.function.Consumer

        andThen
    • Method Detail

      • get

        public java.util.concurrent.CompletableFuture<java.util.Optional<T>> get​(java.lang.String path)
        Description copied from interface: MetadataCache
        Tries to fetch one item from the cache or fallback to the store if not present.

        If the key is not found, the Optional will be empty.

        Specified by:
        get in interface MetadataCache<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: MetadataCache
        Tries to fetch one item from the cache or fallback to the store if not present.

        If the key is not found, the Optional will be empty.

        Specified by:
        getWithStats in interface MetadataCache<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: MetadataCache
        Check if an object is present in cache without triggering a load from the metadata store.
        Specified by:
        getIfCached in interface MetadataCache<T>
        Parameters:
        path - the path of the object in the metadata store
        Returns:
        the cached object or an empty Optional is 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: MetadataCache
        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 modifyFunction will get passed an Optional.empty() object.

        Specified by:
        readModifyUpdateOrCreate in interface MetadataCache<T>
        Parameters:
        path - the path of the object in the metadata store
        modifyFunction - 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: MetadataCache
        Perform 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:
        readModifyUpdate in interface MetadataCache<T>
        Parameters:
        path - the path of the object in the metadata store
        modifyFunction - 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: MetadataCache
        Create a new object in the metadata store.

        This operation will make sure to keep the cache consistent.

        Specified by:
        create in interface MetadataCache<T>
        Parameters:
        path - the path of the object in the metadata store
        value - 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: MetadataCache
        Delete an object from the metadata store.

        This operation will make sure to keep the cache consistent.

        Specified by:
        delete in interface MetadataCache<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: MetadataCache
        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.
        Specified by:
        exists in interface MetadataCache<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: MetadataCache
        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.
        Specified by:
        getChildren in interface MetadataCache<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: MetadataCache
        Force the invalidation of an object in the metadata cache.
        Specified by:
        invalidate in interface MetadataCache<T>
        Parameters:
        path - the path of the object in the metadata store
      • refresh

        public void refresh​(java.lang.String path)
        Description copied from interface: MetadataCache
        Invalidate and reload an object in the metadata cache.
        Specified by:
        refresh in interface MetadataCache<T>
        Parameters:
        path - the path of the object in the metadata store
      • invalidateAll

        public void invalidateAll()
      • accept

        public void accept​(Notification t)
        Specified by:
        accept in interface java.util.function.Consumer<T>