Add filesystem cache implementation (#23175)

Signed-off-by: Raven Black <ravenblack@dropbox.com>

Mirrored from https://github.com/envoyproxy/envoy @ da9962b60bd7bea6eccd5f2e00965585d1119bfd
pull/626/head
data-plane-api(Azure Pipelines) 2 years ago
parent 73d4858edd
commit 5e419437c0
  1. 1
      BUILD
  2. 13
      envoy/extensions/http/cache/file_system_http_cache/v3/BUILD
  3. 80
      envoy/extensions/http/cache/file_system_http_cache/v3/file_system_http_cache.proto
  4. 1
      versioning/BUILD

@ -230,6 +230,7 @@ proto_library(
"//envoy/extensions/formatter/req_without_query/v3:pkg",
"//envoy/extensions/health_checkers/redis/v3:pkg",
"//envoy/extensions/health_checkers/thrift/v3:pkg",
"//envoy/extensions/http/cache/file_system_http_cache/v3:pkg",
"//envoy/extensions/http/cache/simple_http_cache/v3:pkg",
"//envoy/extensions/http/custom_response/local_response_policy/v3:pkg",
"//envoy/extensions/http/custom_response/redirect_policy/v3:pkg",

@ -0,0 +1,13 @@
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
licenses(["notice"]) # Apache 2
api_proto_package(
deps = [
"//envoy/extensions/common/async_files/v3:pkg",
"@com_github_cncf_udpa//udpa/annotations:pkg",
"@com_github_cncf_udpa//xds/annotations/v3:pkg",
],
)

@ -0,0 +1,80 @@
syntax = "proto3";
package envoy.extensions.http.cache.file_system_http_cache.v3;
import "envoy/extensions/common/async_files/v3/async_file_manager.proto";
import "google/protobuf/wrappers.proto";
import "xds/annotations/v3/status.proto";
import "udpa/annotations/status.proto";
import "validate/validate.proto";
option java_package = "io.envoyproxy.envoy.extensions.http.cache.file_system_http_cache.v3";
option java_outer_classname = "FileSystemHttpCacheProto";
option java_multiple_files = true;
option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/http/cache/file_system_http_cache/v3;file_system_http_cachev3";
option (udpa.annotations.file_status).package_version_status = ACTIVE;
option (xds.annotations.v3.file_status).work_in_progress = true;
// [#protodoc-title: FileSystemHttpCacheConfig]
// [#extension: envoy.extensions.http.cache.file_system_http_cache]
// Configuration for a cache implementation that caches in the local file system.
//
// By default this cache uses a least-recently-used eviction strategy.
// [#next-free-field: 7]
message FileSystemHttpCacheConfig {
// Configuration of a manager for how the file system is used asynchronously.
common.async_files.v3.AsyncFileManagerConfig manager_config = 1
[(validate.rules).message = {required: true}];
// 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).string = {min_len: 1}];
// The maximum size of the cache in bytes - when reached, another entry is removed.
//
// 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.
//
// [#not-implemented-hide:]
google.protobuf.UInt64Value max_cache_size_bytes = 3;
// 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_cache_entry_size_bytes = 4;
// The maximum number of cache entries - when reached, another entry is removed.
//
// If unset there is no limit.
//
// [#not-implemented-hide:]
google.protobuf.UInt64Value max_cache_entry_count = 5;
// 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;
}

@ -168,6 +168,7 @@ proto_library(
"//envoy/extensions/formatter/req_without_query/v3:pkg",
"//envoy/extensions/health_checkers/redis/v3:pkg",
"//envoy/extensions/health_checkers/thrift/v3:pkg",
"//envoy/extensions/http/cache/file_system_http_cache/v3:pkg",
"//envoy/extensions/http/cache/simple_http_cache/v3:pkg",
"//envoy/extensions/http/custom_response/local_response_policy/v3:pkg",
"//envoy/extensions/http/custom_response/redirect_policy/v3:pkg",

Loading…
Cancel
Save