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(FileIO, String, long). 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 Summary

      Constructors 
      Constructor Description
      ContentCache​(long expireAfterAccessMs, long maxTotalBytes, long maxContentLength)
      Constructor for ContentCache class.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void cleanUp()  
      long estimatedCacheSize()  
      long expireAfterAccess()  
      org.apache.iceberg.io.ContentCache.CacheEntry get​(java.lang.String key, java.util.function.Function<java.lang.String,​org.apache.iceberg.io.ContentCache.CacheEntry> mappingFunction)  
      org.apache.iceberg.io.ContentCache.CacheEntry getIfPresent​(java.lang.String location)  
      void invalidate​(java.lang.String key)  
      void invalidateAll()  
      long maxContentLength()  
      long maxTotalBytes()  
      com.github.benmanes.caffeine.cache.stats.CacheStats stats()  
      java.lang.String toString()  
      InputFile tryCache​(FileIO io, java.lang.String location, long length)
      Try cache the file-content of file in the given location upon stream reading.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • 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

        public org.apache.iceberg.io.ContentCache.CacheEntry get​(java.lang.String key,
                                                                 java.util.function.Function<java.lang.String,​org.apache.iceberg.io.ContentCache.CacheEntry> mappingFunction)
      • getIfPresent

        public org.apache.iceberg.io.ContentCache.CacheEntry getIfPresent​(java.lang.String location)
      • tryCache

        public InputFile tryCache​(FileIO io,
                                  java.lang.String location,
                                  long length)
        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:
        io - a FileIO associated with the location.
        location - URL/path of a file accessible by io.
        length - the known length of such file.
        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