Class ContentCache


  • public class ContentCache
    extends java.lang.Object
    Class that provides file-content caching during reading.

    The file-content caching is initiated by calling tryCache(InputFile). Given a FileIO, a file location string, and file length that is within allowed limit, ContentCache will return a ContentCache.CachingInputFile that is backed by the cache. Calling ContentCache.CachingInputFile.newStream() will return a ByteBufferInputStream backed by list of ByteBuffer from the cache if such file-content exist in the cache. If the file-content does not exist in the cache yet, a regular InputFile will be instantiated, read-ahead, and loaded into the cache before returning ByteBufferInputStream. The regular InputFile is also used as a fallback if cache loading fail.

    • Constructor Detail

      • ContentCache

        public ContentCache​(long expireAfterAccessMs,
                            long maxTotalBytes,
                            long maxContentLength)
        Constructor for ContentCache class.
        Parameters:
        expireAfterAccessMs - controls the duration for which entries in the ContentCache are hold since last access. Must be greater or equal than 0. Setting 0 means cache entries expire only if it gets evicted due to memory pressure.
        maxTotalBytes - controls the maximum total amount of bytes to cache in ContentCache. Must be greater than 0.
        maxContentLength - controls the maximum length of file to be considered for caching. Must be greater than 0.
    • Method Detail

      • expireAfterAccess

        public long expireAfterAccess()
      • maxContentLength

        public long maxContentLength()
      • maxTotalBytes

        public long maxTotalBytes()
      • stats

        public com.github.benmanes.caffeine.cache.stats.CacheStats stats()
      • get

        @Deprecated
        public org.apache.iceberg.io.ContentCache.CacheEntry get​(java.lang.String key,
                                                                 java.util.function.Function<java.lang.String,​org.apache.iceberg.io.ContentCache.FileContent> mappingFunction)
        Deprecated.
        will be removed in 1.7; use tryCache(InputFile) instead
      • getIfPresent

        @Deprecated
        public org.apache.iceberg.io.ContentCache.CacheEntry getIfPresent​(java.lang.String location)
        Deprecated.
        will be removed in 1.7; use tryCache(InputFile) instead
      • tryCache

        @Deprecated
        public InputFile tryCache​(FileIO io,
                                  java.lang.String location,
                                  long length)
        Deprecated.
        will be removed in 1.7; use tryCache(InputFile) instead
      • tryCache

        public InputFile tryCache​(InputFile input)
        Try cache the file-content of file in the given location upon stream reading.

        If length is longer than maximum length allowed by ContentCache, a regular InputFile and no caching will be done for that file. Otherwise, this method will return a ContentCache.CachingInputFile that serve file reads backed by ContentCache.

        Parameters:
        input - an InputFile to cache
        Returns:
        a ContentCache.CachingInputFile if length is within allowed limit. Otherwise, a regular InputFile for given location.
      • invalidate

        public void invalidate​(java.lang.String key)
      • invalidateAll

        public void invalidateAll()
      • cleanUp

        public void cleanUp()
      • estimatedCacheSize

        public long estimatedCacheSize()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object