Class FileSystemHttpCacheConfig

  • All Implemented Interfaces:
    com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, FileSystemHttpCacheConfigOrBuilder, Serializable

    public final class FileSystemHttpCacheConfig
    extends com.google.protobuf.GeneratedMessageV3
    implements FileSystemHttpCacheConfigOrBuilder
     Configuration for a cache implementation that caches in the local file system.
     By default this cache uses a least-recently-used eviction strategy.
     For implementation details, see `DESIGN.md <https://github.com/envoyproxy/envoy/blob/main/source/extensions/http/cache/file_system_http_cache/DESIGN.md>`_.
     [#next-free-field: 11]
     
    Protobuf type envoy.extensions.http.cache.file_system_http_cache.v3.FileSystemHttpCacheConfig
    See Also:
    Serialized Form
    • Field Detail

      • MANAGER_CONFIG_FIELD_NUMBER

        public static final int MANAGER_CONFIG_FIELD_NUMBER
        See Also:
        Constant Field Values
      • CACHE_PATH_FIELD_NUMBER

        public static final int CACHE_PATH_FIELD_NUMBER
        See Also:
        Constant Field Values
      • MAX_CACHE_SIZE_BYTES_FIELD_NUMBER

        public static final int MAX_CACHE_SIZE_BYTES_FIELD_NUMBER
        See Also:
        Constant Field Values
      • MAX_INDIVIDUAL_CACHE_ENTRY_SIZE_BYTES_FIELD_NUMBER

        public static final int MAX_INDIVIDUAL_CACHE_ENTRY_SIZE_BYTES_FIELD_NUMBER
        See Also:
        Constant Field Values
      • MAX_CACHE_ENTRY_COUNT_FIELD_NUMBER

        public static final int MAX_CACHE_ENTRY_COUNT_FIELD_NUMBER
        See Also:
        Constant Field Values
      • CACHE_SUBDIVISIONS_FIELD_NUMBER

        public static final int CACHE_SUBDIVISIONS_FIELD_NUMBER
        See Also:
        Constant Field Values
      • EVICT_FRACTION_FIELD_NUMBER

        public static final int EVICT_FRACTION_FIELD_NUMBER
        See Also:
        Constant Field Values
      • MAX_EVICTION_PERIOD_FIELD_NUMBER

        public static final int MAX_EVICTION_PERIOD_FIELD_NUMBER
        See Also:
        Constant Field Values
      • MIN_EVICTION_PERIOD_FIELD_NUMBER

        public static final int MIN_EVICTION_PERIOD_FIELD_NUMBER
        See Also:
        Constant Field Values
      • CREATE_CACHE_PATH_FIELD_NUMBER

        public static final int CREATE_CACHE_PATH_FIELD_NUMBER
        See Also:
        Constant Field Values
    • Method Detail

      • newInstance

        protected Object newInstance​(com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter unused)
        Overrides:
        newInstance in class com.google.protobuf.GeneratedMessageV3
      • getUnknownFields

        public final com.google.protobuf.UnknownFieldSet getUnknownFields()
        Specified by:
        getUnknownFields in interface com.google.protobuf.MessageOrBuilder
        Overrides:
        getUnknownFields in class com.google.protobuf.GeneratedMessageV3
      • getDescriptor

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
      • internalGetFieldAccessorTable

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
        Specified by:
        internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessageV3
      • hasManagerConfig

        public boolean hasManagerConfig()
         Configuration of a manager for how the file system is used asynchronously.
         
        .envoy.extensions.common.async_files.v3.AsyncFileManagerConfig manager_config = 1 [(.validate.rules) = { ... }
        Specified by:
        hasManagerConfig in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        Whether the managerConfig field is set.
      • getManagerConfig

        public AsyncFileManagerConfig getManagerConfig()
         Configuration of a manager for how the file system is used asynchronously.
         
        .envoy.extensions.common.async_files.v3.AsyncFileManagerConfig manager_config = 1 [(.validate.rules) = { ... }
        Specified by:
        getManagerConfig in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        The managerConfig.
      • getCachePath

        public String getCachePath()
         Path at which the cache files will be stored.
         This also doubles as the unique identifier for a cache, so a cache can be shared
         between different routes, or separate paths can be used to specify separate caches.
         If the same ``cache_path`` is used in more than one ``CacheConfig``, the rest of the
         ``FileSystemHttpCacheConfig`` must also match, and will refer to the same cache
         instance.
         
        string cache_path = 2 [(.validate.rules) = { ... }
        Specified by:
        getCachePath in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        The cachePath.
      • getCachePathBytes

        public com.google.protobuf.ByteString getCachePathBytes()
         Path at which the cache files will be stored.
         This also doubles as the unique identifier for a cache, so a cache can be shared
         between different routes, or separate paths can be used to specify separate caches.
         If the same ``cache_path`` is used in more than one ``CacheConfig``, the rest of the
         ``FileSystemHttpCacheConfig`` must also match, and will refer to the same cache
         instance.
         
        string cache_path = 2 [(.validate.rules) = { ... }
        Specified by:
        getCachePathBytes in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        The bytes for cachePath.
      • hasMaxCacheSizeBytes

        public boolean hasMaxCacheSizeBytes()
         The maximum size of the cache in bytes - when reached, cache eviction is triggered.
         This is measured as the sum of file sizes, such that it includes headers, trailers,
         and metadata, but does not include e.g. file system overhead and block size padding.
         If unset there is no limit except file system failure.
         
        .google.protobuf.UInt64Value max_cache_size_bytes = 3;
        Specified by:
        hasMaxCacheSizeBytes in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        Whether the maxCacheSizeBytes field is set.
      • getMaxCacheSizeBytes

        public com.google.protobuf.UInt64Value getMaxCacheSizeBytes()
         The maximum size of the cache in bytes - when reached, cache eviction is triggered.
         This is measured as the sum of file sizes, such that it includes headers, trailers,
         and metadata, but does not include e.g. file system overhead and block size padding.
         If unset there is no limit except file system failure.
         
        .google.protobuf.UInt64Value max_cache_size_bytes = 3;
        Specified by:
        getMaxCacheSizeBytes in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        The maxCacheSizeBytes.
      • getMaxCacheSizeBytesOrBuilder

        public com.google.protobuf.UInt64ValueOrBuilder getMaxCacheSizeBytesOrBuilder()
         The maximum size of the cache in bytes - when reached, cache eviction is triggered.
         This is measured as the sum of file sizes, such that it includes headers, trailers,
         and metadata, but does not include e.g. file system overhead and block size padding.
         If unset there is no limit except file system failure.
         
        .google.protobuf.UInt64Value max_cache_size_bytes = 3;
        Specified by:
        getMaxCacheSizeBytesOrBuilder in interface FileSystemHttpCacheConfigOrBuilder
      • hasMaxIndividualCacheEntrySizeBytes

        public boolean hasMaxIndividualCacheEntrySizeBytes()
         The maximum size of a cache entry in bytes - larger responses will not be cached.
         This is measured as the file size for the cache entry, such that it includes
         headers, trailers, and metadata.
         If unset there is no limit.
         [#not-implemented-hide:]
         
        .google.protobuf.UInt64Value max_individual_cache_entry_size_bytes = 4;
        Specified by:
        hasMaxIndividualCacheEntrySizeBytes in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        Whether the maxIndividualCacheEntrySizeBytes field is set.
      • getMaxIndividualCacheEntrySizeBytes

        public com.google.protobuf.UInt64Value getMaxIndividualCacheEntrySizeBytes()
         The maximum size of a cache entry in bytes - larger responses will not be cached.
         This is measured as the file size for the cache entry, such that it includes
         headers, trailers, and metadata.
         If unset there is no limit.
         [#not-implemented-hide:]
         
        .google.protobuf.UInt64Value max_individual_cache_entry_size_bytes = 4;
        Specified by:
        getMaxIndividualCacheEntrySizeBytes in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        The maxIndividualCacheEntrySizeBytes.
      • getMaxIndividualCacheEntrySizeBytesOrBuilder

        public com.google.protobuf.UInt64ValueOrBuilder getMaxIndividualCacheEntrySizeBytesOrBuilder()
         The maximum size of a cache entry in bytes - larger responses will not be cached.
         This is measured as the file size for the cache entry, such that it includes
         headers, trailers, and metadata.
         If unset there is no limit.
         [#not-implemented-hide:]
         
        .google.protobuf.UInt64Value max_individual_cache_entry_size_bytes = 4;
        Specified by:
        getMaxIndividualCacheEntrySizeBytesOrBuilder in interface FileSystemHttpCacheConfigOrBuilder
      • hasMaxCacheEntryCount

        public boolean hasMaxCacheEntryCount()
         The maximum number of cache entries - when reached, cache eviction is triggered.
         If unset there is no limit.
         
        .google.protobuf.UInt64Value max_cache_entry_count = 5;
        Specified by:
        hasMaxCacheEntryCount in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        Whether the maxCacheEntryCount field is set.
      • getMaxCacheEntryCount

        public com.google.protobuf.UInt64Value getMaxCacheEntryCount()
         The maximum number of cache entries - when reached, cache eviction is triggered.
         If unset there is no limit.
         
        .google.protobuf.UInt64Value max_cache_entry_count = 5;
        Specified by:
        getMaxCacheEntryCount in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        The maxCacheEntryCount.
      • getMaxCacheEntryCountOrBuilder

        public com.google.protobuf.UInt64ValueOrBuilder getMaxCacheEntryCountOrBuilder()
         The maximum number of cache entries - when reached, cache eviction is triggered.
         If unset there is no limit.
         
        .google.protobuf.UInt64Value max_cache_entry_count = 5;
        Specified by:
        getMaxCacheEntryCountOrBuilder in interface FileSystemHttpCacheConfigOrBuilder
      • getCacheSubdivisions

        public int getCacheSubdivisions()
         A number of folders into which to subdivide the cache.
         Setting this can help with performance in file systems where a large number of inodes
         in a single branch degrades performance. The optimal value in that case would be
         ``sqrt(expected_cache_entry_count)``.
         On file systems that perform well with many inodes, the default value of 1 should be used.
         [#not-implemented-hide:]
         
        uint32 cache_subdivisions = 6;
        Specified by:
        getCacheSubdivisions in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        The cacheSubdivisions.
      • getEvictFraction

        public float getEvictFraction()
         The amount of the maximum cache size or count to evict when cache eviction is
         triggered. For example, if ``max_cache_size_bytes`` is 10000000 and ``evict_fraction``
         is 0.2, then when the cache exceeds 10MB, entries will be evicted until the cache size is
         less than or equal to 8MB.
         The default value of 0 means when the cache exceeds 10MB, entries will be evicted only
         until the cache is less than or equal to 10MB.
         Evicting a larger fraction will mean the eviction thread will run less often (sparing
         CPU load) at the cost of more cache misses due to the extra evicted entries.
         [#not-implemented-hide:]
         
        float evict_fraction = 7;
        Specified by:
        getEvictFraction in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        The evictFraction.
      • hasMaxEvictionPeriod

        public boolean hasMaxEvictionPeriod()
         The longest amount of time to wait before running a cache eviction pass. An eviction
         pass may not necessarily remove any files, but it will update the cache state to match
         the on-disk state. This can be important if multiple instances are accessing the same
         cache in parallel. (e.g. if two instances each independently added non-overlapping 10MB
         of content to a cache with a 15MB limit, neither instance would be aware that the limit
         was exceeded without this synchronizing pass.)
         If an eviction pass has not happened within this duration, the eviction thread will
         be awoken and perform an eviction pass.
         If unset, there will be no eviction passes except those triggered by cache limits.
         [#not-implemented-hide:]
         
        .google.protobuf.Duration max_eviction_period = 8;
        Specified by:
        hasMaxEvictionPeriod in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        Whether the maxEvictionPeriod field is set.
      • getMaxEvictionPeriod

        public com.google.protobuf.Duration getMaxEvictionPeriod()
         The longest amount of time to wait before running a cache eviction pass. An eviction
         pass may not necessarily remove any files, but it will update the cache state to match
         the on-disk state. This can be important if multiple instances are accessing the same
         cache in parallel. (e.g. if two instances each independently added non-overlapping 10MB
         of content to a cache with a 15MB limit, neither instance would be aware that the limit
         was exceeded without this synchronizing pass.)
         If an eviction pass has not happened within this duration, the eviction thread will
         be awoken and perform an eviction pass.
         If unset, there will be no eviction passes except those triggered by cache limits.
         [#not-implemented-hide:]
         
        .google.protobuf.Duration max_eviction_period = 8;
        Specified by:
        getMaxEvictionPeriod in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        The maxEvictionPeriod.
      • getMaxEvictionPeriodOrBuilder

        public com.google.protobuf.DurationOrBuilder getMaxEvictionPeriodOrBuilder()
         The longest amount of time to wait before running a cache eviction pass. An eviction
         pass may not necessarily remove any files, but it will update the cache state to match
         the on-disk state. This can be important if multiple instances are accessing the same
         cache in parallel. (e.g. if two instances each independently added non-overlapping 10MB
         of content to a cache with a 15MB limit, neither instance would be aware that the limit
         was exceeded without this synchronizing pass.)
         If an eviction pass has not happened within this duration, the eviction thread will
         be awoken and perform an eviction pass.
         If unset, there will be no eviction passes except those triggered by cache limits.
         [#not-implemented-hide:]
         
        .google.protobuf.Duration max_eviction_period = 8;
        Specified by:
        getMaxEvictionPeriodOrBuilder in interface FileSystemHttpCacheConfigOrBuilder
      • hasMinEvictionPeriod

        public boolean hasMinEvictionPeriod()
         The shortest amount of time between cache eviction passes. This can be used to reduce
         eviction churn, if your cache max size can be flexible. If a cache eviction pass already
         occurred more recently than this period when another would be triggered, that new
         pass is cancelled.
         This means the cache can potentially grow beyond ``max_cache_size_bytes`` by as much as
         can be written within the duration specified.
         Generally you would use *either* ``min_eviction_period`` *or* ``evict_fraction`` to
         reduce churn. Both together will work but since they're both aiming for the same goal,
         it's simpler not to.
         [#not-implemented-hide:]
         
        .google.protobuf.Duration min_eviction_period = 9;
        Specified by:
        hasMinEvictionPeriod in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        Whether the minEvictionPeriod field is set.
      • getMinEvictionPeriod

        public com.google.protobuf.Duration getMinEvictionPeriod()
         The shortest amount of time between cache eviction passes. This can be used to reduce
         eviction churn, if your cache max size can be flexible. If a cache eviction pass already
         occurred more recently than this period when another would be triggered, that new
         pass is cancelled.
         This means the cache can potentially grow beyond ``max_cache_size_bytes`` by as much as
         can be written within the duration specified.
         Generally you would use *either* ``min_eviction_period`` *or* ``evict_fraction`` to
         reduce churn. Both together will work but since they're both aiming for the same goal,
         it's simpler not to.
         [#not-implemented-hide:]
         
        .google.protobuf.Duration min_eviction_period = 9;
        Specified by:
        getMinEvictionPeriod in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        The minEvictionPeriod.
      • getMinEvictionPeriodOrBuilder

        public com.google.protobuf.DurationOrBuilder getMinEvictionPeriodOrBuilder()
         The shortest amount of time between cache eviction passes. This can be used to reduce
         eviction churn, if your cache max size can be flexible. If a cache eviction pass already
         occurred more recently than this period when another would be triggered, that new
         pass is cancelled.
         This means the cache can potentially grow beyond ``max_cache_size_bytes`` by as much as
         can be written within the duration specified.
         Generally you would use *either* ``min_eviction_period`` *or* ``evict_fraction`` to
         reduce churn. Both together will work but since they're both aiming for the same goal,
         it's simpler not to.
         [#not-implemented-hide:]
         
        .google.protobuf.Duration min_eviction_period = 9;
        Specified by:
        getMinEvictionPeriodOrBuilder in interface FileSystemHttpCacheConfigOrBuilder
      • getCreateCachePath

        public boolean getCreateCachePath()
         If true, and the cache path does not exist, attempt to create the cache path, including
         any missing directories leading up to it. On failure, the config is rejected.
         If false, and the cache path does not exist, the config is rejected.
         [#not-implemented-hide:]
         
        bool create_cache_path = 10;
        Specified by:
        getCreateCachePath in interface FileSystemHttpCacheConfigOrBuilder
        Returns:
        The createCachePath.
      • isInitialized

        public final boolean isInitialized()
        Specified by:
        isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
        Overrides:
        isInitialized in class com.google.protobuf.GeneratedMessageV3
      • writeTo

        public void writeTo​(com.google.protobuf.CodedOutputStream output)
                     throws IOException
        Specified by:
        writeTo in interface com.google.protobuf.MessageLite
        Overrides:
        writeTo in class com.google.protobuf.GeneratedMessageV3
        Throws:
        IOException
      • getSerializedSize

        public int getSerializedSize()
        Specified by:
        getSerializedSize in interface com.google.protobuf.MessageLite
        Overrides:
        getSerializedSize in class com.google.protobuf.GeneratedMessageV3
      • equals

        public boolean equals​(Object obj)
        Specified by:
        equals in interface com.google.protobuf.Message
        Overrides:
        equals in class com.google.protobuf.AbstractMessage
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface com.google.protobuf.Message
        Overrides:
        hashCode in class com.google.protobuf.AbstractMessage
      • parseFrom

        public static FileSystemHttpCacheConfig parseFrom​(ByteBuffer data)
                                                   throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static FileSystemHttpCacheConfig parseFrom​(ByteBuffer data,
                                                          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                   throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static FileSystemHttpCacheConfig parseFrom​(com.google.protobuf.ByteString data)
                                                   throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static FileSystemHttpCacheConfig parseFrom​(com.google.protobuf.ByteString data,
                                                          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                   throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static FileSystemHttpCacheConfig parseFrom​(byte[] data)
                                                   throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static FileSystemHttpCacheConfig parseFrom​(byte[] data,
                                                          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                   throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • newBuilderForType

        public FileSystemHttpCacheConfig.Builder newBuilderForType()
        Specified by:
        newBuilderForType in interface com.google.protobuf.Message
        Specified by:
        newBuilderForType in interface com.google.protobuf.MessageLite
      • toBuilder

        public FileSystemHttpCacheConfig.Builder toBuilder()
        Specified by:
        toBuilder in interface com.google.protobuf.Message
        Specified by:
        toBuilder in interface com.google.protobuf.MessageLite
      • newBuilderForType

        protected FileSystemHttpCacheConfig.Builder newBuilderForType​(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
        Specified by:
        newBuilderForType in class com.google.protobuf.GeneratedMessageV3
      • getParserForType

        public com.google.protobuf.Parser<FileSystemHttpCacheConfig> getParserForType()
        Specified by:
        getParserForType in interface com.google.protobuf.Message
        Specified by:
        getParserForType in interface com.google.protobuf.MessageLite
        Overrides:
        getParserForType in class com.google.protobuf.GeneratedMessageV3
      • getDefaultInstanceForType

        public FileSystemHttpCacheConfig getDefaultInstanceForType()
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder