java.lang.Object
com.google.protobuf.AbstractMessageLite
com.google.protobuf.AbstractMessage
com.google.protobuf.GeneratedMessageV3
io.envoyproxy.envoy.extensions.http.cache_v2.file_system_http_cache.v3.FileSystemHttpCacheV2Config
All Implemented Interfaces:
com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, FileSystemHttpCacheV2ConfigOrBuilder, Serializable

public final class FileSystemHttpCacheV2Config extends com.google.protobuf.GeneratedMessageV3 implements FileSystemHttpCacheV2ConfigOrBuilder
 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_v2/file_system_http_cache/DESIGN.md>`_.
 [#next-free-field: 11]
 
Protobuf type envoy.extensions.http.cache_v2.file_system_http_cache.v3.FileSystemHttpCacheV2Config
See Also:
  • Field Details

    • MANAGER_CONFIG_FIELD_NUMBER

      public static final int MANAGER_CONFIG_FIELD_NUMBER
      See Also:
    • CACHE_PATH_FIELD_NUMBER

      public static final int CACHE_PATH_FIELD_NUMBER
      See Also:
    • MAX_CACHE_SIZE_BYTES_FIELD_NUMBER

      public static final int MAX_CACHE_SIZE_BYTES_FIELD_NUMBER
      See Also:
    • MAX_INDIVIDUAL_CACHE_ENTRY_SIZE_BYTES_FIELD_NUMBER

      public static final int MAX_INDIVIDUAL_CACHE_ENTRY_SIZE_BYTES_FIELD_NUMBER
      See Also:
    • MAX_CACHE_ENTRY_COUNT_FIELD_NUMBER

      public static final int MAX_CACHE_ENTRY_COUNT_FIELD_NUMBER
      See Also:
    • CACHE_SUBDIVISIONS_FIELD_NUMBER

      public static final int CACHE_SUBDIVISIONS_FIELD_NUMBER
      See Also:
    • EVICT_FRACTION_FIELD_NUMBER

      public static final int EVICT_FRACTION_FIELD_NUMBER
      See Also:
    • MAX_EVICTION_PERIOD_FIELD_NUMBER

      public static final int MAX_EVICTION_PERIOD_FIELD_NUMBER
      See Also:
    • MIN_EVICTION_PERIOD_FIELD_NUMBER

      public static final int MIN_EVICTION_PERIOD_FIELD_NUMBER
      See Also:
    • CREATE_CACHE_PATH_FIELD_NUMBER

      public static final int CREATE_CACHE_PATH_FIELD_NUMBER
      See Also:
  • Method Details

    • newInstance

      protected Object newInstance(com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter unused)
      Overrides:
      newInstance 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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
      Returns:
      The managerConfig.
    • getManagerConfigOrBuilder

      public AsyncFileManagerConfigOrBuilder getManagerConfigOrBuilder()
       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:
      getManagerConfigOrBuilder in interface FileSystemHttpCacheV2ConfigOrBuilder
    • 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 ``CacheV2Config``, the rest of the
       ``FileSystemHttpCacheV2Config`` must also match, and will refer to the same cache
       instance.
       
      string cache_path = 2 [(.validate.rules) = { ... }
      Specified by:
      getCachePath in interface FileSystemHttpCacheV2ConfigOrBuilder
      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 ``CacheV2Config``, the rest of the
       ``FileSystemHttpCacheV2Config`` must also match, and will refer to the same cache
       instance.
       
      string cache_path = 2 [(.validate.rules) = { ... }
      Specified by:
      getCachePathBytes in interface FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
    • 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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
    • 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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
    • 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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
    • 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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2ConfigOrBuilder
    • 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 FileSystemHttpCacheV2ConfigOrBuilder
      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 FileSystemHttpCacheV2Config parseFrom(ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

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

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

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

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

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

      public static FileSystemHttpCacheV2Config parseFrom(InputStream input) throws IOException
      Throws:
      IOException
    • parseFrom

      public static FileSystemHttpCacheV2Config parseFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • parseDelimitedFrom

      public static FileSystemHttpCacheV2Config parseDelimitedFrom(InputStream input) throws IOException
      Throws:
      IOException
    • parseDelimitedFrom

      public static FileSystemHttpCacheV2Config parseDelimitedFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • parseFrom

      public static FileSystemHttpCacheV2Config parseFrom(com.google.protobuf.CodedInputStream input) throws IOException
      Throws:
      IOException
    • parseFrom

      public static FileSystemHttpCacheV2Config parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Throws:
      IOException
    • newBuilderForType

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

      public static FileSystemHttpCacheV2Config.Builder newBuilder()
    • newBuilder

    • toBuilder

      Specified by:
      toBuilder in interface com.google.protobuf.Message
      Specified by:
      toBuilder in interface com.google.protobuf.MessageLite
    • newBuilderForType

      protected FileSystemHttpCacheV2Config.Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
      Specified by:
      newBuilderForType in class com.google.protobuf.GeneratedMessageV3
    • getDefaultInstance

      public static FileSystemHttpCacheV2Config getDefaultInstance()
    • parser

      public static com.google.protobuf.Parser<FileSystemHttpCacheV2Config> parser()
    • getParserForType

      public com.google.protobuf.Parser<FileSystemHttpCacheV2Config> 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 FileSystemHttpCacheV2Config getDefaultInstanceForType()
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder