diff --git a/CHANGELOG.md b/CHANGELOG.md index b1919b62957..c087036b327 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,11 @@ * [CHANGE] Querier: `-querier.query-ingesters-within` has been moved from a global flag to a per-tenant override. #4287 * [CHANGE] Querier: Use `-blocks-storage.tsdb.retention-period` instead of `-querier.query-ingesters-within` for calculating the lookback period for shuffle sharded ingesters. Setting `-querier.query-ingesters-within=0` no longer disables shuffle sharding on the read path. #4287 * [CHANGE] Block upload: `/api/v1/upload/block/{block}/files` endpoint now allows file uploads with no `Content-Length`. #4956 +* [CHANGE] Store-gateway: deprecate configuration parameters for chunk pooling, they will be removed in Mimir 2.11. The following options are now also ignored: #4996 + * `-blocks-storage.bucket-store.max-chunk-pool-bytes` + * `-blocks-storage.bucket-store.chunk-pool-min-bucket-size-bytes` + * `-blocks-storage.bucket-store.chunk-pool-max-bucket-size-bytes` +* [CHANGE] Store-gateway: remove metrics `cortex_bucket_store_chunk_pool_requested_bytes_total` and `cortex_bucket_store_chunk_pool_returned_bytes_total`. #4996 * [ENHANCEMENT] Add per-tenant limit `-validation.max-native-histogram-buckets` to be able to ignore native histogram samples that have too many buckets. #4765 * [ENHANCEMENT] Store-gateway: reduce memory usage in some LabelValues calls. #4789 * [ENHANCEMENT] Store-gateway: add a `stage` label to the metric `cortex_bucket_store_series_data_touched`. This label now applies to `data_type="chunks"` and `data_type="series"`. The `stage` label has 2 values: `processed` - the number of series that parsed - and `returned` - the number of series selected from the processed bytes to satisfy the query. #4797 #4830 diff --git a/cmd/mimir/config-descriptor.json b/cmd/mimir/config-descriptor.json index f7d94e45604..13e4748b329 100644 --- a/cmd/mimir/config-descriptor.json +++ b/cmd/mimir/config-descriptor.json @@ -7057,7 +7057,7 @@ "fieldDefaultValue": 2147483648, "fieldFlag": "blocks-storage.bucket-store.max-chunk-pool-bytes", "fieldType": "int", - "fieldCategory": "advanced" + "fieldCategory": "deprecated" }, { "kind": "field", @@ -7068,7 +7068,7 @@ "fieldDefaultValue": 16000, "fieldFlag": "blocks-storage.bucket-store.chunk-pool-min-bucket-size-bytes", "fieldType": "int", - "fieldCategory": "advanced" + "fieldCategory": "deprecated" }, { "kind": "field", @@ -7079,7 +7079,7 @@ "fieldDefaultValue": 50000000, "fieldFlag": "blocks-storage.bucket-store.chunk-pool-max-bucket-size-bytes", "fieldType": "int", - "fieldCategory": "advanced" + "fieldCategory": "deprecated" }, { "kind": "field", diff --git a/cmd/mimir/help-all.txt.tmpl b/cmd/mimir/help-all.txt.tmpl index 208e5d200a8..ee7f15e75b9 100644 --- a/cmd/mimir/help-all.txt.tmpl +++ b/cmd/mimir/help-all.txt.tmpl @@ -282,9 +282,9 @@ Usage of ./cmd/mimir/mimir: -blocks-storage.bucket-store.bucket-index.update-on-error-interval duration How frequently a bucket index, which previously failed to load, should be tried to load again. This option is used only by querier. (default 1m0s) -blocks-storage.bucket-store.chunk-pool-max-bucket-size-bytes int - Size - in bytes - of the largest chunks pool bucket. (default 50000000) + [deprecated] Size - in bytes - of the largest chunks pool bucket. (default 50000000) -blocks-storage.bucket-store.chunk-pool-min-bucket-size-bytes int - Size - in bytes - of the smallest chunks pool bucket. (default 16000) + [deprecated] Size - in bytes - of the smallest chunks pool bucket. (default 16000) -blocks-storage.bucket-store.chunks-cache.attributes-in-memory-max-items int Maximum number of object attribute items to keep in a first level in-memory LRU cache. Metadata will be stored and fetched in-memory before hitting the cache backend. 0 to disable the in-memory cache. (default 50000) -blocks-storage.bucket-store.chunks-cache.attributes-ttl duration @@ -488,7 +488,7 @@ Usage of ./cmd/mimir/mimir: -blocks-storage.bucket-store.index-header.max-idle-file-handles uint Maximum number of idle file handles the store-gateway keeps open for each index-header file. (default 1) -blocks-storage.bucket-store.max-chunk-pool-bytes uint - Max size - in bytes - of a chunks pool, used to reduce memory allocations. The pool is shared across all tenants. 0 to disable the limit. (default 2147483648) + [deprecated] Max size - in bytes - of a chunks pool, used to reduce memory allocations. The pool is shared across all tenants. 0 to disable the limit. (default 2147483648) -blocks-storage.bucket-store.max-concurrent int Max number of concurrent queries to execute against the long-term storage. The limit is shared across all tenants. (default 100) -blocks-storage.bucket-store.meta-sync-concurrency int diff --git a/docs/sources/mimir/configure/about-versioning.md b/docs/sources/mimir/configure/about-versioning.md index a4ebe34887d..4f5de9cf14f 100644 --- a/docs/sources/mimir/configure/about-versioning.md +++ b/docs/sources/mimir/configure/about-versioning.md @@ -141,3 +141,10 @@ The following features are currently deprecated and will be **removed in Mimir 2 - Ingester - `-blocks-storage.tsdb.max-tsdb-opening-concurrency-on-startup` + +The following features are currently deprecated and will be **removed in Mimir 2.11**: + +- Store-gateway + - `-blocks-storage.bucket-store.chunk-pool-min-bucket-size-bytes` + - `-blocks-storage.bucket-store.chunk-pool-max-bucket-size-bytes` + - `-blocks-storage.bucket-store.max-chunk-pool-bytes` diff --git a/docs/sources/mimir/references/configuration-parameters/index.md b/docs/sources/mimir/references/configuration-parameters/index.md index b8dcb23d96e..38603370c7c 100644 --- a/docs/sources/mimir/references/configuration-parameters/index.md +++ b/docs/sources/mimir/references/configuration-parameters/index.md @@ -3199,16 +3199,16 @@ bucket_store: # CLI flag: -blocks-storage.bucket-store.ignore-blocks-within [ignore_blocks_within: | default = 10h] - # (advanced) Max size - in bytes - of a chunks pool, used to reduce memory + # (deprecated) Max size - in bytes - of a chunks pool, used to reduce memory # allocations. The pool is shared across all tenants. 0 to disable the limit. # CLI flag: -blocks-storage.bucket-store.max-chunk-pool-bytes [max_chunk_pool_bytes: | default = 2147483648] - # (advanced) Size - in bytes - of the smallest chunks pool bucket. + # (deprecated) Size - in bytes - of the smallest chunks pool bucket. # CLI flag: -blocks-storage.bucket-store.chunk-pool-min-bucket-size-bytes [chunk_pool_min_bucket_size_bytes: | default = 16000] - # (advanced) Size - in bytes - of the largest chunks pool bucket. + # (deprecated) Size - in bytes - of the largest chunks pool bucket. # CLI flag: -blocks-storage.bucket-store.chunk-pool-max-bucket-size-bytes [chunk_pool_max_bucket_size_bytes: | default = 50000000] diff --git a/operations/helm/charts/mimir-distributed/values.yaml b/operations/helm/charts/mimir-distributed/values.yaml index afcd9a48391..e2a4ccd4d66 100644 --- a/operations/helm/charts/mimir-distributed/values.yaml +++ b/operations/helm/charts/mimir-distributed/values.yaml @@ -172,7 +172,6 @@ mimir: blocks_storage: backend: s3 bucket_store: - max_chunk_pool_bytes: 12884901888 # 12GiB {{- if index .Values "chunks-cache" "enabled" }} chunks_cache: backend: memcached diff --git a/operations/helm/tests/gateway-enterprise-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/gateway-enterprise-values-generated/mimir-distributed/templates/mimir-config.yaml index 0e4a4c4555b..072934b6def 100644 --- a/operations/helm/tests/gateway-enterprise-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/gateway-enterprise-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -47,7 +47,6 @@ data: blocks_storage: backend: s3 bucket_store: - max_chunk_pool_bytes: 12884901888 sync_dir: /data/tsdb-sync s3: access_key_id: grafana-mimir diff --git a/operations/helm/tests/gateway-nginx-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/gateway-nginx-values-generated/mimir-distributed/templates/mimir-config.yaml index 5948a29b18b..e7a0809b481 100644 --- a/operations/helm/tests/gateway-nginx-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/gateway-nginx-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -30,7 +30,6 @@ data: blocks_storage: backend: s3 bucket_store: - max_chunk_pool_bytes: 12884901888 sync_dir: /data/tsdb-sync s3: access_key_id: grafana-mimir diff --git a/operations/helm/tests/graphite-enabled-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/graphite-enabled-values-generated/mimir-distributed/templates/mimir-config.yaml index 2106f9cd1ac..17a6ae46a51 100644 --- a/operations/helm/tests/graphite-enabled-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/graphite-enabled-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -47,7 +47,6 @@ data: blocks_storage: backend: s3 bucket_store: - max_chunk_pool_bytes: 12884901888 sync_dir: /data/tsdb-sync s3: access_key_id: grafana-mimir diff --git a/operations/helm/tests/large-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/large-values-generated/mimir-distributed/templates/mimir-config.yaml index 7295f8f9c48..3a4ce938b20 100644 --- a/operations/helm/tests/large-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/large-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -35,7 +35,6 @@ data: addresses: dns+large-values-mimir-index-cache.citestns.svc:11211 max_idle_connections: 150 max_item_size: 5242880 - max_chunk_pool_bytes: 12884901888 metadata_cache: backend: memcached memcached: diff --git a/operations/helm/tests/metamonitoring-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/metamonitoring-values-generated/mimir-distributed/templates/mimir-config.yaml index 573138cfdea..a5bf4cd5bfe 100644 --- a/operations/helm/tests/metamonitoring-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/metamonitoring-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -30,7 +30,6 @@ data: blocks_storage: backend: s3 bucket_store: - max_chunk_pool_bytes: 12884901888 sync_dir: /data/tsdb-sync s3: access_key_id: grafana-mimir diff --git a/operations/helm/tests/openshift-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/openshift-values-generated/mimir-distributed/templates/mimir-config.yaml index da9ec3212fc..5488d0e675f 100644 --- a/operations/helm/tests/openshift-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/openshift-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -32,7 +32,6 @@ data: blocks_storage: backend: s3 bucket_store: - max_chunk_pool_bytes: 12884901888 sync_dir: /data/tsdb-sync tsdb: dir: /data/tsdb diff --git a/operations/helm/tests/scheduler-name-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/scheduler-name-values-generated/mimir-distributed/templates/mimir-config.yaml index 6622ba725cd..c694c2e7d1f 100644 --- a/operations/helm/tests/scheduler-name-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/scheduler-name-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -22,7 +22,6 @@ data: blocks_storage: backend: s3 bucket_store: - max_chunk_pool_bytes: 12884901888 sync_dir: /data/tsdb-sync tsdb: dir: /data/tsdb diff --git a/operations/helm/tests/small-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/small-values-generated/mimir-distributed/templates/mimir-config.yaml index 1d2144bacd3..a604e827f42 100644 --- a/operations/helm/tests/small-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/small-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -35,7 +35,6 @@ data: addresses: dns+small-values-mimir-index-cache.citestns.svc:11211 max_idle_connections: 150 max_item_size: 5242880 - max_chunk_pool_bytes: 12884901888 metadata_cache: backend: memcached memcached: diff --git a/operations/helm/tests/test-enterprise-configmap-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/test-enterprise-configmap-values-generated/mimir-distributed/templates/mimir-config.yaml index ebc01a21a96..7c35fc2bb43 100644 --- a/operations/helm/tests/test-enterprise-configmap-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/test-enterprise-configmap-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -47,7 +47,6 @@ data: blocks_storage: backend: s3 bucket_store: - max_chunk_pool_bytes: 12884901888 sync_dir: /data/tsdb-sync s3: access_key_id: ${MINIO_ROOT_USER} diff --git a/operations/helm/tests/test-enterprise-k8s-1.25-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/test-enterprise-k8s-1.25-values-generated/mimir-distributed/templates/mimir-config.yaml index 9f920623a01..1c80a198ceb 100644 --- a/operations/helm/tests/test-enterprise-k8s-1.25-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/test-enterprise-k8s-1.25-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -47,7 +47,6 @@ data: blocks_storage: backend: s3 bucket_store: - max_chunk_pool_bytes: 12884901888 sync_dir: /data/tsdb-sync s3: access_key_id: grafana-mimir diff --git a/operations/helm/tests/test-enterprise-legacy-label-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/test-enterprise-legacy-label-values-generated/mimir-distributed/templates/mimir-config.yaml index 495f66dd9de..55d6f21c0db 100644 --- a/operations/helm/tests/test-enterprise-legacy-label-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/test-enterprise-legacy-label-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -10,4 +10,4 @@ metadata: release: test-enterprise-legacy-label-values namespace: "citestns" data: - mimir.yaml: YWN0aXZpdHlfdHJhY2tlcjoKICBmaWxlcGF0aDogL2FjdGl2ZS1xdWVyeS10cmFja2VyL2FjdGl2aXR5LmxvZwphZG1pbl9hcGk6CiAgbGVhZGVyX2VsZWN0aW9uOgogICAgZW5hYmxlZDogdHJ1ZQogICAgcmluZzoKICAgICAga3ZzdG9yZToKICAgICAgICBzdG9yZTogbWVtYmVybGlzdAphZG1pbl9jbGllbnQ6CiAgc3RvcmFnZToKICAgIHMzOgogICAgICBhY2Nlc3Nfa2V5X2lkOiBncmFmYW5hLW1pbWlyCiAgICAgIGJ1Y2tldF9uYW1lOiBlbnRlcnByaXNlLW1ldHJpY3MtYWRtaW4KICAgICAgZW5kcG9pbnQ6IHRlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLW1pbmlvLmNpdGVzdG5zLnN2Yzo5MDAwCiAgICAgIGluc2VjdXJlOiB0cnVlCiAgICAgIHNlY3JldF9hY2Nlc3Nfa2V5OiBzdXBlcnNlY3JldAogICAgdHlwZTogczMKYWxlcnRtYW5hZ2VyOgogIGRhdGFfZGlyOiAvZGF0YQogIGVuYWJsZV9hcGk6IHRydWUKICBleHRlcm5hbF91cmw6IC9hbGVydG1hbmFnZXIKICBmYWxsYmFja19jb25maWdfZmlsZTogL2NvbmZpZ3MvYWxlcnRtYW5hZ2VyX2ZhbGxiYWNrX2NvbmZpZy55YW1sCmFsZXJ0bWFuYWdlcl9zdG9yYWdlOgogIGJhY2tlbmQ6IHMzCiAgczM6CiAgICBhY2Nlc3Nfa2V5X2lkOiBncmFmYW5hLW1pbWlyCiAgICBidWNrZXRfbmFtZTogZW50ZXJwcmlzZS1tZXRyaWNzLXJ1bGVyCiAgICBlbmRwb2ludDogdGVzdC1lbnRlcnByaXNlLWxlZ2FjeS1sYWJlbC12YWx1ZXMtbWluaW8uY2l0ZXN0bnMuc3ZjOjkwMDAKICAgIGluc2VjdXJlOiB0cnVlCiAgICBzZWNyZXRfYWNjZXNzX2tleTogc3VwZXJzZWNyZXQKYXV0aDoKICB0eXBlOiBlbnRlcnByaXNlCmJsb2Nrc19zdG9yYWdlOgogIGJhY2tlbmQ6IHMzCiAgYnVja2V0X3N0b3JlOgogICAgbWF4X2NodW5rX3Bvb2xfYnl0ZXM6IDEyODg0OTAxODg4CiAgICBzeW5jX2RpcjogL2RhdGEvdHNkYi1zeW5jCiAgczM6CiAgICBhY2Nlc3Nfa2V5X2lkOiBncmFmYW5hLW1pbWlyCiAgICBidWNrZXRfbmFtZTogZW50ZXJwcmlzZS1tZXRyaWNzLXRzZGIKICAgIGVuZHBvaW50OiB0ZXN0LWVudGVycHJpc2UtbGVnYWN5LWxhYmVsLXZhbHVlcy1taW5pby5jaXRlc3Rucy5zdmM6OTAwMAogICAgaW5zZWN1cmU6IHRydWUKICAgIHNlY3JldF9hY2Nlc3Nfa2V5OiBzdXBlcnNlY3JldAogIHRzZGI6CiAgICBkaXI6IC9kYXRhL3RzZGIKICAgIGhlYWRfY29tcGFjdGlvbl9pbnRlcnZhbDogMTVtCiAgICB3YWxfcmVwbGF5X2NvbmN1cnJlbmN5OiAzCmNsdXN0ZXJfbmFtZTogdGVzdC1lbnRlcnByaXNlLWxlZ2FjeS1sYWJlbC12YWx1ZXMKY29tcGFjdG9yOgogIGNvbXBhY3Rpb25faW50ZXJ2YWw6IDMwbQogIGRhdGFfZGlyOiAvZGF0YQogIGRlbGV0aW9uX2RlbGF5OiAyaAogIGZpcnN0X2xldmVsX2NvbXBhY3Rpb25fd2FpdF9wZXJpb2Q6IDI1bQogIG1heF9jbG9zaW5nX2Jsb2Nrc19jb25jdXJyZW5jeTogMgogIG1heF9vcGVuaW5nX2Jsb2Nrc19jb25jdXJyZW5jeTogNAogIHNoYXJkaW5nX3Jpbmc6CiAgICB3YWl0X3N0YWJpbGl0eV9taW5fZHVyYXRpb246IDFtCiAgc3ltYm9sc19mbHVzaGVyc19jb25jdXJyZW5jeTogNApmcm9udGVuZDoKICBwYXJhbGxlbGl6ZV9zaGFyZGFibGVfcXVlcmllczogdHJ1ZQogIHNjaGVkdWxlcl9hZGRyZXNzOiB0ZXN0LWVudGVycHJpc2UtbGVnYWN5LWxhYmVsLXZhbHVlcy1lbnRlcnByaXNlLW1ldHJpY3MtcXVlcnktc2NoZWR1bGVyLWhlYWRsZXNzLmNpdGVzdG5zLnN2Yzo5MDk1CmZyb250ZW5kX3dvcmtlcjoKICBncnBjX2NsaWVudF9jb25maWc6CiAgICBtYXhfc2VuZF9tc2dfc2l6ZTogNDE5NDMwNDAwCiAgc2NoZWR1bGVyX2FkZHJlc3M6IHRlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLWVudGVycHJpc2UtbWV0cmljcy1xdWVyeS1zY2hlZHVsZXItaGVhZGxlc3MuY2l0ZXN0bnMuc3ZjOjkwOTUKZ2F0ZXdheToKICBwcm94eToKICAgIGFkbWluX2FwaToKICAgICAgdXJsOiBodHRwOi8vdGVzdC1lbnRlcnByaXNlLWxlZ2FjeS1sYWJlbC12YWx1ZXMtZW50ZXJwcmlzZS1tZXRyaWNzLWFkbWluLWFwaS5jaXRlc3Rucy5zdmM6ODA4MAogICAgYWxlcnRtYW5hZ2VyOgogICAgICB1cmw6IGh0dHA6Ly90ZXN0LWVudGVycHJpc2UtbGVnYWN5LWxhYmVsLXZhbHVlcy1lbnRlcnByaXNlLW1ldHJpY3MtYWxlcnRtYW5hZ2VyLWhlYWRsZXNzLmNpdGVzdG5zLnN2Yzo4MDgwCiAgICBjb21wYWN0b3I6CiAgICAgIHVybDogaHR0cDovL3Rlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLWVudGVycHJpc2UtbWV0cmljcy1jb21wYWN0b3IuY2l0ZXN0bnMuc3ZjOjgwODAKICAgIGRlZmF1bHQ6CiAgICAgIHVybDogaHR0cDovL3Rlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLWVudGVycHJpc2UtbWV0cmljcy1hZG1pbi1hcGkuY2l0ZXN0bnMuc3ZjOjgwODAKICAgIGRpc3RyaWJ1dG9yOgogICAgICB1cmw6IGRuczovLy90ZXN0LWVudGVycHJpc2UtbGVnYWN5LWxhYmVsLXZhbHVlcy1lbnRlcnByaXNlLW1ldHJpY3MtZGlzdHJpYnV0b3ItaGVhZGxlc3MuY2l0ZXN0bnMuc3ZjLmNsdXN0ZXIubG9jYWw6OTA5NQogICAgaW5nZXN0ZXI6CiAgICAgIHVybDogaHR0cDovL3Rlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLWVudGVycHJpc2UtbWV0cmljcy1pbmdlc3Rlci1oZWFkbGVzcy5jaXRlc3Rucy5zdmM6ODA4MAogICAgcXVlcnlfZnJvbnRlbmQ6CiAgICAgIHVybDogaHR0cDovL3Rlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLWVudGVycHJpc2UtbWV0cmljcy1xdWVyeS1mcm9udGVuZC5jaXRlc3Rucy5zdmM6ODA4MAogICAgcnVsZXI6CiAgICAgIHVybDogaHR0cDovL3Rlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLWVudGVycHJpc2UtbWV0cmljcy1ydWxlci5jaXRlc3Rucy5zdmM6ODA4MAogICAgc3RvcmVfZ2F0ZXdheToKICAgICAgdXJsOiBodHRwOi8vdGVzdC1lbnRlcnByaXNlLWxlZ2FjeS1sYWJlbC12YWx1ZXMtZW50ZXJwcmlzZS1tZXRyaWNzLXN0b3JlLWdhdGV3YXktaGVhZGxlc3MuY2l0ZXN0bnMuc3ZjOjgwODAKaW5nZXN0ZXI6CiAgcmluZzoKICAgIGZpbmFsX3NsZWVwOiAwcwogICAgbnVtX3Rva2VuczogNTEyCiAgICB0b2tlbnNfZmlsZV9wYXRoOiAvZGF0YS90b2tlbnMKICAgIHVucmVnaXN0ZXJfb25fc2h1dGRvd246IGZhbHNlCiAgICB6b25lX2F3YXJlbmVzc19lbmFibGVkOiB0cnVlCmluZ2VzdGVyX2NsaWVudDoKICBncnBjX2NsaWVudF9jb25maWc6CiAgICBtYXhfcmVjdl9tc2dfc2l6ZTogMTA0ODU3NjAwCiAgICBtYXhfc2VuZF9tc2dfc2l6ZTogMTA0ODU3NjAwCmluc3RydW1lbnRhdGlvbjoKICBkaXN0cmlidXRvcl9jbGllbnQ6CiAgICBhZGRyZXNzOiBkbnM6Ly8vdGVzdC1lbnRlcnByaXNlLWxlZ2FjeS1sYWJlbC12YWx1ZXMtZW50ZXJwcmlzZS1tZXRyaWNzLWRpc3RyaWJ1dG9yLWhlYWRsZXNzLmNpdGVzdG5zLnN2Yy5jbHVzdGVyLmxvY2FsOjkwOTUKICBlbmFibGVkOiB0cnVlCmxpY2Vuc2U6CiAgcGF0aDogL2xpY2Vuc2UvbGljZW5zZS5qd3QKbGltaXRzOgogIG1heF9jYWNoZV9mcmVzaG5lc3M6IDEwbQogIG1heF9xdWVyeV9wYXJhbGxlbGlzbTogMjQwCiAgbWF4X3RvdGFsX3F1ZXJ5X2xlbmd0aDogMTIwMDBoCm1lbWJlcmxpc3Q6CiAgYWJvcnRfaWZfY2x1c3Rlcl9qb2luX2ZhaWxzOiBmYWxzZQogIGNvbXByZXNzaW9uX2VuYWJsZWQ6IGZhbHNlCiAgam9pbl9tZW1iZXJzOgogIC0gZG5zK3Rlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLWVudGVycHJpc2UtbWV0cmljcy1nb3NzaXAtcmluZy5jaXRlc3Rucy5zdmMuY2x1c3Rlci5sb2NhbDo3OTQ2CnF1ZXJpZXI6CiAgbWF4X2NvbmN1cnJlbnQ6IDE2CnF1ZXJ5X3NjaGVkdWxlcjoKICBtYXhfb3V0c3RhbmRpbmdfcmVxdWVzdHNfcGVyX3RlbmFudDogODAwCnJ1bGVyOgogIGFsZXJ0bWFuYWdlcl91cmw6IGRuc3Nydm5vYStodHRwOi8vX2h0dHAtbWV0cmljcy5fdGNwLnRlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLWVudGVycHJpc2UtbWV0cmljcy1hbGVydG1hbmFnZXItaGVhZGxlc3MuY2l0ZXN0bnMuc3ZjLmNsdXN0ZXIubG9jYWwvYWxlcnRtYW5hZ2VyCiAgZW5hYmxlX2FwaTogdHJ1ZQogIHJ1bGVfcGF0aDogL2RhdGEKcnVsZXJfc3RvcmFnZToKICBiYWNrZW5kOiBzMwogIHMzOgogICAgYWNjZXNzX2tleV9pZDogZ3JhZmFuYS1taW1pcgogICAgYnVja2V0X25hbWU6IGVudGVycHJpc2UtbWV0cmljcy1ydWxlcgogICAgZW5kcG9pbnQ6IHRlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLW1pbmlvLmNpdGVzdG5zLnN2Yzo5MDAwCiAgICBpbnNlY3VyZTogdHJ1ZQogICAgc2VjcmV0X2FjY2Vzc19rZXk6IHN1cGVyc2VjcmV0CnJ1bnRpbWVfY29uZmlnOgogIGZpbGU6IC92YXIvZW50ZXJwcmlzZS1tZXRyaWNzL3J1bnRpbWUueWFtbApzZXJ2ZXI6CiAgZ3JwY19zZXJ2ZXJfbWF4X2NvbmN1cnJlbnRfc3RyZWFtczogMTAwMAogIGdycGNfc2VydmVyX21heF9jb25uZWN0aW9uX2FnZTogMm0KICBncnBjX3NlcnZlcl9tYXhfY29ubmVjdGlvbl9hZ2VfZ3JhY2U6IDVtCiAgZ3JwY19zZXJ2ZXJfbWF4X2Nvbm5lY3Rpb25faWRsZTogMW0Kc3RvcmVfZ2F0ZXdheToKICBzaGFyZGluZ19yaW5nOgogICAga3ZzdG9yZToKICAgICAgcHJlZml4OiBtdWx0aS16b25lLwogICAgdG9rZW5zX2ZpbGVfcGF0aDogL2RhdGEvdG9rZW5zCiAgICB1bnJlZ2lzdGVyX29uX3NodXRkb3duOiBmYWxzZQogICAgd2FpdF9zdGFiaWxpdHlfbWluX2R1cmF0aW9uOiAxbQogICAgem9uZV9hd2FyZW5lc3NfZW5hYmxlZDogdHJ1ZQp1c2FnZV9zdGF0czoKICBpbnN0YWxsYXRpb25fbW9kZTogaGVsbQ== + mimir.yaml: YWN0aXZpdHlfdHJhY2tlcjoKICBmaWxlcGF0aDogL2FjdGl2ZS1xdWVyeS10cmFja2VyL2FjdGl2aXR5LmxvZwphZG1pbl9hcGk6CiAgbGVhZGVyX2VsZWN0aW9uOgogICAgZW5hYmxlZDogdHJ1ZQogICAgcmluZzoKICAgICAga3ZzdG9yZToKICAgICAgICBzdG9yZTogbWVtYmVybGlzdAphZG1pbl9jbGllbnQ6CiAgc3RvcmFnZToKICAgIHMzOgogICAgICBhY2Nlc3Nfa2V5X2lkOiBncmFmYW5hLW1pbWlyCiAgICAgIGJ1Y2tldF9uYW1lOiBlbnRlcnByaXNlLW1ldHJpY3MtYWRtaW4KICAgICAgZW5kcG9pbnQ6IHRlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLW1pbmlvLmNpdGVzdG5zLnN2Yzo5MDAwCiAgICAgIGluc2VjdXJlOiB0cnVlCiAgICAgIHNlY3JldF9hY2Nlc3Nfa2V5OiBzdXBlcnNlY3JldAogICAgdHlwZTogczMKYWxlcnRtYW5hZ2VyOgogIGRhdGFfZGlyOiAvZGF0YQogIGVuYWJsZV9hcGk6IHRydWUKICBleHRlcm5hbF91cmw6IC9hbGVydG1hbmFnZXIKICBmYWxsYmFja19jb25maWdfZmlsZTogL2NvbmZpZ3MvYWxlcnRtYW5hZ2VyX2ZhbGxiYWNrX2NvbmZpZy55YW1sCmFsZXJ0bWFuYWdlcl9zdG9yYWdlOgogIGJhY2tlbmQ6IHMzCiAgczM6CiAgICBhY2Nlc3Nfa2V5X2lkOiBncmFmYW5hLW1pbWlyCiAgICBidWNrZXRfbmFtZTogZW50ZXJwcmlzZS1tZXRyaWNzLXJ1bGVyCiAgICBlbmRwb2ludDogdGVzdC1lbnRlcnByaXNlLWxlZ2FjeS1sYWJlbC12YWx1ZXMtbWluaW8uY2l0ZXN0bnMuc3ZjOjkwMDAKICAgIGluc2VjdXJlOiB0cnVlCiAgICBzZWNyZXRfYWNjZXNzX2tleTogc3VwZXJzZWNyZXQKYXV0aDoKICB0eXBlOiBlbnRlcnByaXNlCmJsb2Nrc19zdG9yYWdlOgogIGJhY2tlbmQ6IHMzCiAgYnVja2V0X3N0b3JlOgogICAgc3luY19kaXI6IC9kYXRhL3RzZGItc3luYwogIHMzOgogICAgYWNjZXNzX2tleV9pZDogZ3JhZmFuYS1taW1pcgogICAgYnVja2V0X25hbWU6IGVudGVycHJpc2UtbWV0cmljcy10c2RiCiAgICBlbmRwb2ludDogdGVzdC1lbnRlcnByaXNlLWxlZ2FjeS1sYWJlbC12YWx1ZXMtbWluaW8uY2l0ZXN0bnMuc3ZjOjkwMDAKICAgIGluc2VjdXJlOiB0cnVlCiAgICBzZWNyZXRfYWNjZXNzX2tleTogc3VwZXJzZWNyZXQKICB0c2RiOgogICAgZGlyOiAvZGF0YS90c2RiCiAgICBoZWFkX2NvbXBhY3Rpb25faW50ZXJ2YWw6IDE1bQogICAgd2FsX3JlcGxheV9jb25jdXJyZW5jeTogMwpjbHVzdGVyX25hbWU6IHRlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzCmNvbXBhY3RvcjoKICBjb21wYWN0aW9uX2ludGVydmFsOiAzMG0KICBkYXRhX2RpcjogL2RhdGEKICBkZWxldGlvbl9kZWxheTogMmgKICBmaXJzdF9sZXZlbF9jb21wYWN0aW9uX3dhaXRfcGVyaW9kOiAyNW0KICBtYXhfY2xvc2luZ19ibG9ja3NfY29uY3VycmVuY3k6IDIKICBtYXhfb3BlbmluZ19ibG9ja3NfY29uY3VycmVuY3k6IDQKICBzaGFyZGluZ19yaW5nOgogICAgd2FpdF9zdGFiaWxpdHlfbWluX2R1cmF0aW9uOiAxbQogIHN5bWJvbHNfZmx1c2hlcnNfY29uY3VycmVuY3k6IDQKZnJvbnRlbmQ6CiAgcGFyYWxsZWxpemVfc2hhcmRhYmxlX3F1ZXJpZXM6IHRydWUKICBzY2hlZHVsZXJfYWRkcmVzczogdGVzdC1lbnRlcnByaXNlLWxlZ2FjeS1sYWJlbC12YWx1ZXMtZW50ZXJwcmlzZS1tZXRyaWNzLXF1ZXJ5LXNjaGVkdWxlci1oZWFkbGVzcy5jaXRlc3Rucy5zdmM6OTA5NQpmcm9udGVuZF93b3JrZXI6CiAgZ3JwY19jbGllbnRfY29uZmlnOgogICAgbWF4X3NlbmRfbXNnX3NpemU6IDQxOTQzMDQwMAogIHNjaGVkdWxlcl9hZGRyZXNzOiB0ZXN0LWVudGVycHJpc2UtbGVnYWN5LWxhYmVsLXZhbHVlcy1lbnRlcnByaXNlLW1ldHJpY3MtcXVlcnktc2NoZWR1bGVyLWhlYWRsZXNzLmNpdGVzdG5zLnN2Yzo5MDk1CmdhdGV3YXk6CiAgcHJveHk6CiAgICBhZG1pbl9hcGk6CiAgICAgIHVybDogaHR0cDovL3Rlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLWVudGVycHJpc2UtbWV0cmljcy1hZG1pbi1hcGkuY2l0ZXN0bnMuc3ZjOjgwODAKICAgIGFsZXJ0bWFuYWdlcjoKICAgICAgdXJsOiBodHRwOi8vdGVzdC1lbnRlcnByaXNlLWxlZ2FjeS1sYWJlbC12YWx1ZXMtZW50ZXJwcmlzZS1tZXRyaWNzLWFsZXJ0bWFuYWdlci1oZWFkbGVzcy5jaXRlc3Rucy5zdmM6ODA4MAogICAgY29tcGFjdG9yOgogICAgICB1cmw6IGh0dHA6Ly90ZXN0LWVudGVycHJpc2UtbGVnYWN5LWxhYmVsLXZhbHVlcy1lbnRlcnByaXNlLW1ldHJpY3MtY29tcGFjdG9yLmNpdGVzdG5zLnN2Yzo4MDgwCiAgICBkZWZhdWx0OgogICAgICB1cmw6IGh0dHA6Ly90ZXN0LWVudGVycHJpc2UtbGVnYWN5LWxhYmVsLXZhbHVlcy1lbnRlcnByaXNlLW1ldHJpY3MtYWRtaW4tYXBpLmNpdGVzdG5zLnN2Yzo4MDgwCiAgICBkaXN0cmlidXRvcjoKICAgICAgdXJsOiBkbnM6Ly8vdGVzdC1lbnRlcnByaXNlLWxlZ2FjeS1sYWJlbC12YWx1ZXMtZW50ZXJwcmlzZS1tZXRyaWNzLWRpc3RyaWJ1dG9yLWhlYWRsZXNzLmNpdGVzdG5zLnN2Yy5jbHVzdGVyLmxvY2FsOjkwOTUKICAgIGluZ2VzdGVyOgogICAgICB1cmw6IGh0dHA6Ly90ZXN0LWVudGVycHJpc2UtbGVnYWN5LWxhYmVsLXZhbHVlcy1lbnRlcnByaXNlLW1ldHJpY3MtaW5nZXN0ZXItaGVhZGxlc3MuY2l0ZXN0bnMuc3ZjOjgwODAKICAgIHF1ZXJ5X2Zyb250ZW5kOgogICAgICB1cmw6IGh0dHA6Ly90ZXN0LWVudGVycHJpc2UtbGVnYWN5LWxhYmVsLXZhbHVlcy1lbnRlcnByaXNlLW1ldHJpY3MtcXVlcnktZnJvbnRlbmQuY2l0ZXN0bnMuc3ZjOjgwODAKICAgIHJ1bGVyOgogICAgICB1cmw6IGh0dHA6Ly90ZXN0LWVudGVycHJpc2UtbGVnYWN5LWxhYmVsLXZhbHVlcy1lbnRlcnByaXNlLW1ldHJpY3MtcnVsZXIuY2l0ZXN0bnMuc3ZjOjgwODAKICAgIHN0b3JlX2dhdGV3YXk6CiAgICAgIHVybDogaHR0cDovL3Rlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLWVudGVycHJpc2UtbWV0cmljcy1zdG9yZS1nYXRld2F5LWhlYWRsZXNzLmNpdGVzdG5zLnN2Yzo4MDgwCmluZ2VzdGVyOgogIHJpbmc6CiAgICBmaW5hbF9zbGVlcDogMHMKICAgIG51bV90b2tlbnM6IDUxMgogICAgdG9rZW5zX2ZpbGVfcGF0aDogL2RhdGEvdG9rZW5zCiAgICB1bnJlZ2lzdGVyX29uX3NodXRkb3duOiBmYWxzZQogICAgem9uZV9hd2FyZW5lc3NfZW5hYmxlZDogdHJ1ZQppbmdlc3Rlcl9jbGllbnQ6CiAgZ3JwY19jbGllbnRfY29uZmlnOgogICAgbWF4X3JlY3ZfbXNnX3NpemU6IDEwNDg1NzYwMAogICAgbWF4X3NlbmRfbXNnX3NpemU6IDEwNDg1NzYwMAppbnN0cnVtZW50YXRpb246CiAgZGlzdHJpYnV0b3JfY2xpZW50OgogICAgYWRkcmVzczogZG5zOi8vL3Rlc3QtZW50ZXJwcmlzZS1sZWdhY3ktbGFiZWwtdmFsdWVzLWVudGVycHJpc2UtbWV0cmljcy1kaXN0cmlidXRvci1oZWFkbGVzcy5jaXRlc3Rucy5zdmMuY2x1c3Rlci5sb2NhbDo5MDk1CiAgZW5hYmxlZDogdHJ1ZQpsaWNlbnNlOgogIHBhdGg6IC9saWNlbnNlL2xpY2Vuc2Uuand0CmxpbWl0czoKICBtYXhfY2FjaGVfZnJlc2huZXNzOiAxMG0KICBtYXhfcXVlcnlfcGFyYWxsZWxpc206IDI0MAogIG1heF90b3RhbF9xdWVyeV9sZW5ndGg6IDEyMDAwaAptZW1iZXJsaXN0OgogIGFib3J0X2lmX2NsdXN0ZXJfam9pbl9mYWlsczogZmFsc2UKICBjb21wcmVzc2lvbl9lbmFibGVkOiBmYWxzZQogIGpvaW5fbWVtYmVyczoKICAtIGRucyt0ZXN0LWVudGVycHJpc2UtbGVnYWN5LWxhYmVsLXZhbHVlcy1lbnRlcnByaXNlLW1ldHJpY3MtZ29zc2lwLXJpbmcuY2l0ZXN0bnMuc3ZjLmNsdXN0ZXIubG9jYWw6Nzk0NgpxdWVyaWVyOgogIG1heF9jb25jdXJyZW50OiAxNgpxdWVyeV9zY2hlZHVsZXI6CiAgbWF4X291dHN0YW5kaW5nX3JlcXVlc3RzX3Blcl90ZW5hbnQ6IDgwMApydWxlcjoKICBhbGVydG1hbmFnZXJfdXJsOiBkbnNzcnZub2EraHR0cDovL19odHRwLW1ldHJpY3MuX3RjcC50ZXN0LWVudGVycHJpc2UtbGVnYWN5LWxhYmVsLXZhbHVlcy1lbnRlcnByaXNlLW1ldHJpY3MtYWxlcnRtYW5hZ2VyLWhlYWRsZXNzLmNpdGVzdG5zLnN2Yy5jbHVzdGVyLmxvY2FsL2FsZXJ0bWFuYWdlcgogIGVuYWJsZV9hcGk6IHRydWUKICBydWxlX3BhdGg6IC9kYXRhCnJ1bGVyX3N0b3JhZ2U6CiAgYmFja2VuZDogczMKICBzMzoKICAgIGFjY2Vzc19rZXlfaWQ6IGdyYWZhbmEtbWltaXIKICAgIGJ1Y2tldF9uYW1lOiBlbnRlcnByaXNlLW1ldHJpY3MtcnVsZXIKICAgIGVuZHBvaW50OiB0ZXN0LWVudGVycHJpc2UtbGVnYWN5LWxhYmVsLXZhbHVlcy1taW5pby5jaXRlc3Rucy5zdmM6OTAwMAogICAgaW5zZWN1cmU6IHRydWUKICAgIHNlY3JldF9hY2Nlc3Nfa2V5OiBzdXBlcnNlY3JldApydW50aW1lX2NvbmZpZzoKICBmaWxlOiAvdmFyL2VudGVycHJpc2UtbWV0cmljcy9ydW50aW1lLnlhbWwKc2VydmVyOgogIGdycGNfc2VydmVyX21heF9jb25jdXJyZW50X3N0cmVhbXM6IDEwMDAKICBncnBjX3NlcnZlcl9tYXhfY29ubmVjdGlvbl9hZ2U6IDJtCiAgZ3JwY19zZXJ2ZXJfbWF4X2Nvbm5lY3Rpb25fYWdlX2dyYWNlOiA1bQogIGdycGNfc2VydmVyX21heF9jb25uZWN0aW9uX2lkbGU6IDFtCnN0b3JlX2dhdGV3YXk6CiAgc2hhcmRpbmdfcmluZzoKICAgIGt2c3RvcmU6CiAgICAgIHByZWZpeDogbXVsdGktem9uZS8KICAgIHRva2Vuc19maWxlX3BhdGg6IC9kYXRhL3Rva2VucwogICAgdW5yZWdpc3Rlcl9vbl9zaHV0ZG93bjogZmFsc2UKICAgIHdhaXRfc3RhYmlsaXR5X21pbl9kdXJhdGlvbjogMW0KICAgIHpvbmVfYXdhcmVuZXNzX2VuYWJsZWQ6IHRydWUKdXNhZ2Vfc3RhdHM6CiAgaW5zdGFsbGF0aW9uX21vZGU6IGhlbG0= diff --git a/operations/helm/tests/test-enterprise-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/test-enterprise-values-generated/mimir-distributed/templates/mimir-config.yaml index 7ef9987d26c..4253ec6b36e 100644 --- a/operations/helm/tests/test-enterprise-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/test-enterprise-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -10,4 +10,4 @@ metadata: app.kubernetes.io/managed-by: Helm namespace: "citestns" data: - mimir.yaml: YWN0aXZpdHlfdHJhY2tlcjoKICBmaWxlcGF0aDogL2FjdGl2ZS1xdWVyeS10cmFja2VyL2FjdGl2aXR5LmxvZwphZG1pbl9hcGk6CiAgbGVhZGVyX2VsZWN0aW9uOgogICAgZW5hYmxlZDogdHJ1ZQogICAgcmluZzoKICAgICAga3ZzdG9yZToKICAgICAgICBzdG9yZTogbWVtYmVybGlzdAphZG1pbl9jbGllbnQ6CiAgc3RvcmFnZToKICAgIHMzOgogICAgICBhY2Nlc3Nfa2V5X2lkOiBncmFmYW5hLW1pbWlyCiAgICAgIGJ1Y2tldF9uYW1lOiBlbnRlcnByaXNlLW1ldHJpY3MtYWRtaW4KICAgICAgZW5kcG9pbnQ6IHRlc3QtZW50ZXJwcmlzZS12YWx1ZXMtbWluaW8uY2l0ZXN0bnMuc3ZjOjkwMDAKICAgICAgaW5zZWN1cmU6IHRydWUKICAgICAgc2VjcmV0X2FjY2Vzc19rZXk6IHN1cGVyc2VjcmV0CiAgICB0eXBlOiBzMwphbGVydG1hbmFnZXI6CiAgZGF0YV9kaXI6IC9kYXRhCiAgZW5hYmxlX2FwaTogdHJ1ZQogIGV4dGVybmFsX3VybDogL2FsZXJ0bWFuYWdlcgogIGZhbGxiYWNrX2NvbmZpZ19maWxlOiAvY29uZmlncy9hbGVydG1hbmFnZXJfZmFsbGJhY2tfY29uZmlnLnlhbWwKYWxlcnRtYW5hZ2VyX3N0b3JhZ2U6CiAgYmFja2VuZDogczMKICBzMzoKICAgIGFjY2Vzc19rZXlfaWQ6IGdyYWZhbmEtbWltaXIKICAgIGJ1Y2tldF9uYW1lOiBtaW1pci1ydWxlcgogICAgZW5kcG9pbnQ6IHRlc3QtZW50ZXJwcmlzZS12YWx1ZXMtbWluaW8uY2l0ZXN0bnMuc3ZjOjkwMDAKICAgIGluc2VjdXJlOiB0cnVlCiAgICBzZWNyZXRfYWNjZXNzX2tleTogc3VwZXJzZWNyZXQKYXV0aDoKICB0eXBlOiBlbnRlcnByaXNlCmJsb2Nrc19zdG9yYWdlOgogIGJhY2tlbmQ6IHMzCiAgYnVja2V0X3N0b3JlOgogICAgbWF4X2NodW5rX3Bvb2xfYnl0ZXM6IDEyODg0OTAxODg4CiAgICBzeW5jX2RpcjogL2RhdGEvdHNkYi1zeW5jCiAgczM6CiAgICBhY2Nlc3Nfa2V5X2lkOiBncmFmYW5hLW1pbWlyCiAgICBidWNrZXRfbmFtZTogbWltaXItdHNkYgogICAgZW5kcG9pbnQ6IHRlc3QtZW50ZXJwcmlzZS12YWx1ZXMtbWluaW8uY2l0ZXN0bnMuc3ZjOjkwMDAKICAgIGluc2VjdXJlOiB0cnVlCiAgICBzZWNyZXRfYWNjZXNzX2tleTogc3VwZXJzZWNyZXQKICB0c2RiOgogICAgZGlyOiAvZGF0YS90c2RiCiAgICBoZWFkX2NvbXBhY3Rpb25faW50ZXJ2YWw6IDE1bQogICAgd2FsX3JlcGxheV9jb25jdXJyZW5jeTogMwpjbHVzdGVyX25hbWU6IHRlc3QtZW50ZXJwcmlzZS12YWx1ZXMKY29tcGFjdG9yOgogIGNvbXBhY3Rpb25faW50ZXJ2YWw6IDMwbQogIGRhdGFfZGlyOiAvZGF0YQogIGRlbGV0aW9uX2RlbGF5OiAyaAogIGZpcnN0X2xldmVsX2NvbXBhY3Rpb25fd2FpdF9wZXJpb2Q6IDI1bQogIG1heF9jbG9zaW5nX2Jsb2Nrc19jb25jdXJyZW5jeTogMgogIG1heF9vcGVuaW5nX2Jsb2Nrc19jb25jdXJyZW5jeTogNAogIHNoYXJkaW5nX3Jpbmc6CiAgICB3YWl0X3N0YWJpbGl0eV9taW5fZHVyYXRpb246IDFtCiAgc3ltYm9sc19mbHVzaGVyc19jb25jdXJyZW5jeTogNApmcm9udGVuZDoKICBwYXJhbGxlbGl6ZV9zaGFyZGFibGVfcXVlcmllczogdHJ1ZQogIHNjaGVkdWxlcl9hZGRyZXNzOiB0ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbWlyLXF1ZXJ5LXNjaGVkdWxlci1oZWFkbGVzcy5jaXRlc3Rucy5zdmM6OTA5NQpmcm9udGVuZF93b3JrZXI6CiAgZ3JwY19jbGllbnRfY29uZmlnOgogICAgbWF4X3NlbmRfbXNnX3NpemU6IDQxOTQzMDQwMAogIHNjaGVkdWxlcl9hZGRyZXNzOiB0ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbWlyLXF1ZXJ5LXNjaGVkdWxlci1oZWFkbGVzcy5jaXRlc3Rucy5zdmM6OTA5NQpnYXRld2F5OgogIHByb3h5OgogICAgYWRtaW5fYXBpOgogICAgICB1cmw6IGh0dHA6Ly90ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbWlyLWFkbWluLWFwaS5jaXRlc3Rucy5zdmM6ODA4MAogICAgYWxlcnRtYW5hZ2VyOgogICAgICB1cmw6IGh0dHA6Ly90ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbWlyLWFsZXJ0bWFuYWdlci1oZWFkbGVzcy5jaXRlc3Rucy5zdmM6ODA4MAogICAgY29tcGFjdG9yOgogICAgICB1cmw6IGh0dHA6Ly90ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbWlyLWNvbXBhY3Rvci5jaXRlc3Rucy5zdmM6ODA4MAogICAgZGVmYXVsdDoKICAgICAgdXJsOiBodHRwOi8vdGVzdC1lbnRlcnByaXNlLXZhbHVlcy1taW1pci1hZG1pbi1hcGkuY2l0ZXN0bnMuc3ZjOjgwODAKICAgIGRpc3RyaWJ1dG9yOgogICAgICB1cmw6IGRuczovLy90ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbWlyLWRpc3RyaWJ1dG9yLWhlYWRsZXNzLmNpdGVzdG5zLnN2Yy5jbHVzdGVyLmxvY2FsOjkwOTUKICAgIGluZ2VzdGVyOgogICAgICB1cmw6IGh0dHA6Ly90ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbWlyLWluZ2VzdGVyLWhlYWRsZXNzLmNpdGVzdG5zLnN2Yzo4MDgwCiAgICBxdWVyeV9mcm9udGVuZDoKICAgICAgdXJsOiBodHRwOi8vdGVzdC1lbnRlcnByaXNlLXZhbHVlcy1taW1pci1xdWVyeS1mcm9udGVuZC5jaXRlc3Rucy5zdmM6ODA4MAogICAgcnVsZXI6CiAgICAgIHVybDogaHR0cDovL3Rlc3QtZW50ZXJwcmlzZS12YWx1ZXMtbWltaXItcnVsZXIuY2l0ZXN0bnMuc3ZjOjgwODAKICAgIHN0b3JlX2dhdGV3YXk6CiAgICAgIHVybDogaHR0cDovL3Rlc3QtZW50ZXJwcmlzZS12YWx1ZXMtbWltaXItc3RvcmUtZ2F0ZXdheS1oZWFkbGVzcy5jaXRlc3Rucy5zdmM6ODA4MAppbmdlc3RlcjoKICByaW5nOgogICAgZmluYWxfc2xlZXA6IDBzCiAgICBudW1fdG9rZW5zOiA1MTIKICAgIHRva2Vuc19maWxlX3BhdGg6IC9kYXRhL3Rva2VucwogICAgdW5yZWdpc3Rlcl9vbl9zaHV0ZG93bjogZmFsc2UKICAgIHpvbmVfYXdhcmVuZXNzX2VuYWJsZWQ6IHRydWUKaW5nZXN0ZXJfY2xpZW50OgogIGdycGNfY2xpZW50X2NvbmZpZzoKICAgIG1heF9yZWN2X21zZ19zaXplOiAxMDQ4NTc2MDAKICAgIG1heF9zZW5kX21zZ19zaXplOiAxMDQ4NTc2MDAKaW5zdHJ1bWVudGF0aW9uOgogIGRpc3RyaWJ1dG9yX2NsaWVudDoKICAgIGFkZHJlc3M6IGRuczovLy90ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbWlyLWRpc3RyaWJ1dG9yLWhlYWRsZXNzLmNpdGVzdG5zLnN2Yy5jbHVzdGVyLmxvY2FsOjkwOTUKICBlbmFibGVkOiB0cnVlCmxpY2Vuc2U6CiAgcGF0aDogL2xpY2Vuc2UvbGljZW5zZS5qd3QKbGltaXRzOgogIG1heF9jYWNoZV9mcmVzaG5lc3M6IDEwbQogIG1heF9xdWVyeV9wYXJhbGxlbGlzbTogMjQwCiAgbWF4X3RvdGFsX3F1ZXJ5X2xlbmd0aDogMTIwMDBoCm1lbWJlcmxpc3Q6CiAgYWJvcnRfaWZfY2x1c3Rlcl9qb2luX2ZhaWxzOiBmYWxzZQogIGNvbXByZXNzaW9uX2VuYWJsZWQ6IGZhbHNlCiAgam9pbl9tZW1iZXJzOgogIC0gZG5zK3Rlc3QtZW50ZXJwcmlzZS12YWx1ZXMtbWltaXItZ29zc2lwLXJpbmcuY2l0ZXN0bnMuc3ZjLmNsdXN0ZXIubG9jYWw6Nzk0NgpxdWVyaWVyOgogIG1heF9jb25jdXJyZW50OiAxNgpxdWVyeV9zY2hlZHVsZXI6CiAgbWF4X291dHN0YW5kaW5nX3JlcXVlc3RzX3Blcl90ZW5hbnQ6IDgwMApydWxlcjoKICBhbGVydG1hbmFnZXJfdXJsOiBkbnNzcnZub2EraHR0cDovL19odHRwLW1ldHJpY3MuX3RjcC50ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbWlyLWFsZXJ0bWFuYWdlci1oZWFkbGVzcy5jaXRlc3Rucy5zdmMuY2x1c3Rlci5sb2NhbC9hbGVydG1hbmFnZXIKICBlbmFibGVfYXBpOiB0cnVlCiAgcnVsZV9wYXRoOiAvZGF0YQpydWxlcl9zdG9yYWdlOgogIGJhY2tlbmQ6IHMzCiAgczM6CiAgICBhY2Nlc3Nfa2V5X2lkOiBncmFmYW5hLW1pbWlyCiAgICBidWNrZXRfbmFtZTogbWltaXItcnVsZXIKICAgIGVuZHBvaW50OiB0ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbmlvLmNpdGVzdG5zLnN2Yzo5MDAwCiAgICBpbnNlY3VyZTogdHJ1ZQogICAgc2VjcmV0X2FjY2Vzc19rZXk6IHN1cGVyc2VjcmV0CnJ1bnRpbWVfY29uZmlnOgogIGZpbGU6IC92YXIvbWltaXIvcnVudGltZS55YW1sCnNlcnZlcjoKICBncnBjX3NlcnZlcl9tYXhfY29uY3VycmVudF9zdHJlYW1zOiAxMDAwCiAgZ3JwY19zZXJ2ZXJfbWF4X2Nvbm5lY3Rpb25fYWdlOiAybQogIGdycGNfc2VydmVyX21heF9jb25uZWN0aW9uX2FnZV9ncmFjZTogNW0KICBncnBjX3NlcnZlcl9tYXhfY29ubmVjdGlvbl9pZGxlOiAxbQpzdG9yZV9nYXRld2F5OgogIHNoYXJkaW5nX3Jpbmc6CiAgICBrdnN0b3JlOgogICAgICBwcmVmaXg6IG11bHRpLXpvbmUvCiAgICB0b2tlbnNfZmlsZV9wYXRoOiAvZGF0YS90b2tlbnMKICAgIHVucmVnaXN0ZXJfb25fc2h1dGRvd246IGZhbHNlCiAgICB3YWl0X3N0YWJpbGl0eV9taW5fZHVyYXRpb246IDFtCiAgICB6b25lX2F3YXJlbmVzc19lbmFibGVkOiB0cnVlCnVzYWdlX3N0YXRzOgogIGluc3RhbGxhdGlvbl9tb2RlOiBoZWxt + mimir.yaml: YWN0aXZpdHlfdHJhY2tlcjoKICBmaWxlcGF0aDogL2FjdGl2ZS1xdWVyeS10cmFja2VyL2FjdGl2aXR5LmxvZwphZG1pbl9hcGk6CiAgbGVhZGVyX2VsZWN0aW9uOgogICAgZW5hYmxlZDogdHJ1ZQogICAgcmluZzoKICAgICAga3ZzdG9yZToKICAgICAgICBzdG9yZTogbWVtYmVybGlzdAphZG1pbl9jbGllbnQ6CiAgc3RvcmFnZToKICAgIHMzOgogICAgICBhY2Nlc3Nfa2V5X2lkOiBncmFmYW5hLW1pbWlyCiAgICAgIGJ1Y2tldF9uYW1lOiBlbnRlcnByaXNlLW1ldHJpY3MtYWRtaW4KICAgICAgZW5kcG9pbnQ6IHRlc3QtZW50ZXJwcmlzZS12YWx1ZXMtbWluaW8uY2l0ZXN0bnMuc3ZjOjkwMDAKICAgICAgaW5zZWN1cmU6IHRydWUKICAgICAgc2VjcmV0X2FjY2Vzc19rZXk6IHN1cGVyc2VjcmV0CiAgICB0eXBlOiBzMwphbGVydG1hbmFnZXI6CiAgZGF0YV9kaXI6IC9kYXRhCiAgZW5hYmxlX2FwaTogdHJ1ZQogIGV4dGVybmFsX3VybDogL2FsZXJ0bWFuYWdlcgogIGZhbGxiYWNrX2NvbmZpZ19maWxlOiAvY29uZmlncy9hbGVydG1hbmFnZXJfZmFsbGJhY2tfY29uZmlnLnlhbWwKYWxlcnRtYW5hZ2VyX3N0b3JhZ2U6CiAgYmFja2VuZDogczMKICBzMzoKICAgIGFjY2Vzc19rZXlfaWQ6IGdyYWZhbmEtbWltaXIKICAgIGJ1Y2tldF9uYW1lOiBtaW1pci1ydWxlcgogICAgZW5kcG9pbnQ6IHRlc3QtZW50ZXJwcmlzZS12YWx1ZXMtbWluaW8uY2l0ZXN0bnMuc3ZjOjkwMDAKICAgIGluc2VjdXJlOiB0cnVlCiAgICBzZWNyZXRfYWNjZXNzX2tleTogc3VwZXJzZWNyZXQKYXV0aDoKICB0eXBlOiBlbnRlcnByaXNlCmJsb2Nrc19zdG9yYWdlOgogIGJhY2tlbmQ6IHMzCiAgYnVja2V0X3N0b3JlOgogICAgc3luY19kaXI6IC9kYXRhL3RzZGItc3luYwogIHMzOgogICAgYWNjZXNzX2tleV9pZDogZ3JhZmFuYS1taW1pcgogICAgYnVja2V0X25hbWU6IG1pbWlyLXRzZGIKICAgIGVuZHBvaW50OiB0ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbmlvLmNpdGVzdG5zLnN2Yzo5MDAwCiAgICBpbnNlY3VyZTogdHJ1ZQogICAgc2VjcmV0X2FjY2Vzc19rZXk6IHN1cGVyc2VjcmV0CiAgdHNkYjoKICAgIGRpcjogL2RhdGEvdHNkYgogICAgaGVhZF9jb21wYWN0aW9uX2ludGVydmFsOiAxNW0KICAgIHdhbF9yZXBsYXlfY29uY3VycmVuY3k6IDMKY2x1c3Rlcl9uYW1lOiB0ZXN0LWVudGVycHJpc2UtdmFsdWVzCmNvbXBhY3RvcjoKICBjb21wYWN0aW9uX2ludGVydmFsOiAzMG0KICBkYXRhX2RpcjogL2RhdGEKICBkZWxldGlvbl9kZWxheTogMmgKICBmaXJzdF9sZXZlbF9jb21wYWN0aW9uX3dhaXRfcGVyaW9kOiAyNW0KICBtYXhfY2xvc2luZ19ibG9ja3NfY29uY3VycmVuY3k6IDIKICBtYXhfb3BlbmluZ19ibG9ja3NfY29uY3VycmVuY3k6IDQKICBzaGFyZGluZ19yaW5nOgogICAgd2FpdF9zdGFiaWxpdHlfbWluX2R1cmF0aW9uOiAxbQogIHN5bWJvbHNfZmx1c2hlcnNfY29uY3VycmVuY3k6IDQKZnJvbnRlbmQ6CiAgcGFyYWxsZWxpemVfc2hhcmRhYmxlX3F1ZXJpZXM6IHRydWUKICBzY2hlZHVsZXJfYWRkcmVzczogdGVzdC1lbnRlcnByaXNlLXZhbHVlcy1taW1pci1xdWVyeS1zY2hlZHVsZXItaGVhZGxlc3MuY2l0ZXN0bnMuc3ZjOjkwOTUKZnJvbnRlbmRfd29ya2VyOgogIGdycGNfY2xpZW50X2NvbmZpZzoKICAgIG1heF9zZW5kX21zZ19zaXplOiA0MTk0MzA0MDAKICBzY2hlZHVsZXJfYWRkcmVzczogdGVzdC1lbnRlcnByaXNlLXZhbHVlcy1taW1pci1xdWVyeS1zY2hlZHVsZXItaGVhZGxlc3MuY2l0ZXN0bnMuc3ZjOjkwOTUKZ2F0ZXdheToKICBwcm94eToKICAgIGFkbWluX2FwaToKICAgICAgdXJsOiBodHRwOi8vdGVzdC1lbnRlcnByaXNlLXZhbHVlcy1taW1pci1hZG1pbi1hcGkuY2l0ZXN0bnMuc3ZjOjgwODAKICAgIGFsZXJ0bWFuYWdlcjoKICAgICAgdXJsOiBodHRwOi8vdGVzdC1lbnRlcnByaXNlLXZhbHVlcy1taW1pci1hbGVydG1hbmFnZXItaGVhZGxlc3MuY2l0ZXN0bnMuc3ZjOjgwODAKICAgIGNvbXBhY3RvcjoKICAgICAgdXJsOiBodHRwOi8vdGVzdC1lbnRlcnByaXNlLXZhbHVlcy1taW1pci1jb21wYWN0b3IuY2l0ZXN0bnMuc3ZjOjgwODAKICAgIGRlZmF1bHQ6CiAgICAgIHVybDogaHR0cDovL3Rlc3QtZW50ZXJwcmlzZS12YWx1ZXMtbWltaXItYWRtaW4tYXBpLmNpdGVzdG5zLnN2Yzo4MDgwCiAgICBkaXN0cmlidXRvcjoKICAgICAgdXJsOiBkbnM6Ly8vdGVzdC1lbnRlcnByaXNlLXZhbHVlcy1taW1pci1kaXN0cmlidXRvci1oZWFkbGVzcy5jaXRlc3Rucy5zdmMuY2x1c3Rlci5sb2NhbDo5MDk1CiAgICBpbmdlc3RlcjoKICAgICAgdXJsOiBodHRwOi8vdGVzdC1lbnRlcnByaXNlLXZhbHVlcy1taW1pci1pbmdlc3Rlci1oZWFkbGVzcy5jaXRlc3Rucy5zdmM6ODA4MAogICAgcXVlcnlfZnJvbnRlbmQ6CiAgICAgIHVybDogaHR0cDovL3Rlc3QtZW50ZXJwcmlzZS12YWx1ZXMtbWltaXItcXVlcnktZnJvbnRlbmQuY2l0ZXN0bnMuc3ZjOjgwODAKICAgIHJ1bGVyOgogICAgICB1cmw6IGh0dHA6Ly90ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbWlyLXJ1bGVyLmNpdGVzdG5zLnN2Yzo4MDgwCiAgICBzdG9yZV9nYXRld2F5OgogICAgICB1cmw6IGh0dHA6Ly90ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbWlyLXN0b3JlLWdhdGV3YXktaGVhZGxlc3MuY2l0ZXN0bnMuc3ZjOjgwODAKaW5nZXN0ZXI6CiAgcmluZzoKICAgIGZpbmFsX3NsZWVwOiAwcwogICAgbnVtX3Rva2VuczogNTEyCiAgICB0b2tlbnNfZmlsZV9wYXRoOiAvZGF0YS90b2tlbnMKICAgIHVucmVnaXN0ZXJfb25fc2h1dGRvd246IGZhbHNlCiAgICB6b25lX2F3YXJlbmVzc19lbmFibGVkOiB0cnVlCmluZ2VzdGVyX2NsaWVudDoKICBncnBjX2NsaWVudF9jb25maWc6CiAgICBtYXhfcmVjdl9tc2dfc2l6ZTogMTA0ODU3NjAwCiAgICBtYXhfc2VuZF9tc2dfc2l6ZTogMTA0ODU3NjAwCmluc3RydW1lbnRhdGlvbjoKICBkaXN0cmlidXRvcl9jbGllbnQ6CiAgICBhZGRyZXNzOiBkbnM6Ly8vdGVzdC1lbnRlcnByaXNlLXZhbHVlcy1taW1pci1kaXN0cmlidXRvci1oZWFkbGVzcy5jaXRlc3Rucy5zdmMuY2x1c3Rlci5sb2NhbDo5MDk1CiAgZW5hYmxlZDogdHJ1ZQpsaWNlbnNlOgogIHBhdGg6IC9saWNlbnNlL2xpY2Vuc2Uuand0CmxpbWl0czoKICBtYXhfY2FjaGVfZnJlc2huZXNzOiAxMG0KICBtYXhfcXVlcnlfcGFyYWxsZWxpc206IDI0MAogIG1heF90b3RhbF9xdWVyeV9sZW5ndGg6IDEyMDAwaAptZW1iZXJsaXN0OgogIGFib3J0X2lmX2NsdXN0ZXJfam9pbl9mYWlsczogZmFsc2UKICBjb21wcmVzc2lvbl9lbmFibGVkOiBmYWxzZQogIGpvaW5fbWVtYmVyczoKICAtIGRucyt0ZXN0LWVudGVycHJpc2UtdmFsdWVzLW1pbWlyLWdvc3NpcC1yaW5nLmNpdGVzdG5zLnN2Yy5jbHVzdGVyLmxvY2FsOjc5NDYKcXVlcmllcjoKICBtYXhfY29uY3VycmVudDogMTYKcXVlcnlfc2NoZWR1bGVyOgogIG1heF9vdXRzdGFuZGluZ19yZXF1ZXN0c19wZXJfdGVuYW50OiA4MDAKcnVsZXI6CiAgYWxlcnRtYW5hZ2VyX3VybDogZG5zc3J2bm9hK2h0dHA6Ly9faHR0cC1tZXRyaWNzLl90Y3AudGVzdC1lbnRlcnByaXNlLXZhbHVlcy1taW1pci1hbGVydG1hbmFnZXItaGVhZGxlc3MuY2l0ZXN0bnMuc3ZjLmNsdXN0ZXIubG9jYWwvYWxlcnRtYW5hZ2VyCiAgZW5hYmxlX2FwaTogdHJ1ZQogIHJ1bGVfcGF0aDogL2RhdGEKcnVsZXJfc3RvcmFnZToKICBiYWNrZW5kOiBzMwogIHMzOgogICAgYWNjZXNzX2tleV9pZDogZ3JhZmFuYS1taW1pcgogICAgYnVja2V0X25hbWU6IG1pbWlyLXJ1bGVyCiAgICBlbmRwb2ludDogdGVzdC1lbnRlcnByaXNlLXZhbHVlcy1taW5pby5jaXRlc3Rucy5zdmM6OTAwMAogICAgaW5zZWN1cmU6IHRydWUKICAgIHNlY3JldF9hY2Nlc3Nfa2V5OiBzdXBlcnNlY3JldApydW50aW1lX2NvbmZpZzoKICBmaWxlOiAvdmFyL21pbWlyL3J1bnRpbWUueWFtbApzZXJ2ZXI6CiAgZ3JwY19zZXJ2ZXJfbWF4X2NvbmN1cnJlbnRfc3RyZWFtczogMTAwMAogIGdycGNfc2VydmVyX21heF9jb25uZWN0aW9uX2FnZTogMm0KICBncnBjX3NlcnZlcl9tYXhfY29ubmVjdGlvbl9hZ2VfZ3JhY2U6IDVtCiAgZ3JwY19zZXJ2ZXJfbWF4X2Nvbm5lY3Rpb25faWRsZTogMW0Kc3RvcmVfZ2F0ZXdheToKICBzaGFyZGluZ19yaW5nOgogICAga3ZzdG9yZToKICAgICAgcHJlZml4OiBtdWx0aS16b25lLwogICAgdG9rZW5zX2ZpbGVfcGF0aDogL2RhdGEvdG9rZW5zCiAgICB1bnJlZ2lzdGVyX29uX3NodXRkb3duOiBmYWxzZQogICAgd2FpdF9zdGFiaWxpdHlfbWluX2R1cmF0aW9uOiAxbQogICAgem9uZV9hd2FyZW5lc3NfZW5hYmxlZDogdHJ1ZQp1c2FnZV9zdGF0czoKICBpbnN0YWxsYXRpb25fbW9kZTogaGVsbQ== diff --git a/operations/helm/tests/test-oss-k8s-1.25-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/test-oss-k8s-1.25-values-generated/mimir-distributed/templates/mimir-config.yaml index 3eea38efd41..28e1f7a5555 100644 --- a/operations/helm/tests/test-oss-k8s-1.25-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/test-oss-k8s-1.25-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -43,7 +43,6 @@ data: addresses: dns+test-oss-k8s-1.25-values-mimir-index-cache.citestns.svc:11211 max_idle_connections: 150 max_item_size: 5242880 - max_chunk_pool_bytes: 12884901888 metadata_cache: backend: memcached memcached: diff --git a/operations/helm/tests/test-oss-logical-multizone-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/test-oss-logical-multizone-values-generated/mimir-distributed/templates/mimir-config.yaml index ff80a1358b9..84117514f29 100644 --- a/operations/helm/tests/test-oss-logical-multizone-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/test-oss-logical-multizone-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -32,7 +32,6 @@ data: blocks_storage: backend: s3 bucket_store: - max_chunk_pool_bytes: 12884901888 sync_dir: /data/tsdb-sync s3: access_key_id: grafana-mimir diff --git a/operations/helm/tests/test-oss-multizone-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/test-oss-multizone-values-generated/mimir-distributed/templates/mimir-config.yaml index 51df28f50fa..e16ef480bf0 100644 --- a/operations/helm/tests/test-oss-multizone-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/test-oss-multizone-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -32,7 +32,6 @@ data: blocks_storage: backend: s3 bucket_store: - max_chunk_pool_bytes: 12884901888 sync_dir: /data/tsdb-sync s3: access_key_id: grafana-mimir diff --git a/operations/helm/tests/test-oss-topology-spread-constraints-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/test-oss-topology-spread-constraints-values-generated/mimir-distributed/templates/mimir-config.yaml index d2f56fa398f..5460d8b217b 100644 --- a/operations/helm/tests/test-oss-topology-spread-constraints-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/test-oss-topology-spread-constraints-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -47,7 +47,6 @@ data: blocks_storage: backend: s3 bucket_store: - max_chunk_pool_bytes: 12884901888 sync_dir: /data/tsdb-sync s3: access_key_id: grafana-mimir diff --git a/operations/helm/tests/test-oss-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/test-oss-values-generated/mimir-distributed/templates/mimir-config.yaml index d9c27250aef..1c2da2c2c49 100644 --- a/operations/helm/tests/test-oss-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/test-oss-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -43,7 +43,6 @@ data: addresses: dns+test-oss-values-mimir-index-cache.citestns.svc:11211 max_idle_connections: 150 max_item_size: 5242880 - max_chunk_pool_bytes: 12884901888 metadata_cache: backend: memcached memcached: diff --git a/operations/helm/tests/test-vault-agent-values-generated/mimir-distributed/templates/mimir-config.yaml b/operations/helm/tests/test-vault-agent-values-generated/mimir-distributed/templates/mimir-config.yaml index b79e8d706ae..d3bf196a2bd 100644 --- a/operations/helm/tests/test-vault-agent-values-generated/mimir-distributed/templates/mimir-config.yaml +++ b/operations/helm/tests/test-vault-agent-values-generated/mimir-distributed/templates/mimir-config.yaml @@ -30,7 +30,6 @@ data: blocks_storage: backend: s3 bucket_store: - max_chunk_pool_bytes: 12884901888 sync_dir: /data/tsdb-sync s3: access_key_id: grafana-mimir diff --git a/operations/mimir-tests/test-autoscaling-generated.yaml b/operations/mimir-tests/test-autoscaling-generated.yaml index 28300fee22b..e1c82b5cf3f 100644 --- a/operations/mimir-tests/test-autoscaling-generated.yaml +++ b/operations/mimir-tests/test-autoscaling-generated.yaml @@ -1607,7 +1607,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-consul-generated.yaml b/operations/mimir-tests/test-consul-generated.yaml index b2a079c25cd..81da3b381bd 100644 --- a/operations/mimir-tests/test-consul-generated.yaml +++ b/operations/mimir-tests/test-consul-generated.yaml @@ -1655,7 +1655,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-consul-multi-zone-generated.yaml b/operations/mimir-tests/test-consul-multi-zone-generated.yaml index c20b0b9aba1..1bd7527c5ba 100644 --- a/operations/mimir-tests/test-consul-multi-zone-generated.yaml +++ b/operations/mimir-tests/test-consul-multi-zone-generated.yaml @@ -2108,7 +2108,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -2238,7 +2237,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -2368,7 +2366,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-consul-ruler-disabled-generated.yaml b/operations/mimir-tests/test-consul-ruler-disabled-generated.yaml index 1e682c86b5c..086cabc7765 100644 --- a/operations/mimir-tests/test-consul-ruler-disabled-generated.yaml +++ b/operations/mimir-tests/test-consul-ruler-disabled-generated.yaml @@ -1545,7 +1545,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-defaults-generated.yaml b/operations/mimir-tests/test-defaults-generated.yaml index caaa90fa2e6..b75700e6491 100644 --- a/operations/mimir-tests/test-defaults-generated.yaml +++ b/operations/mimir-tests/test-defaults-generated.yaml @@ -1068,7 +1068,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-deployment-mode-migration-generated.yaml b/operations/mimir-tests/test-deployment-mode-migration-generated.yaml index 25ca8d97a0e..7d757834cb5 100644 --- a/operations/mimir-tests/test-deployment-mode-migration-generated.yaml +++ b/operations/mimir-tests/test-deployment-mode-migration-generated.yaml @@ -2164,7 +2164,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -2345,7 +2344,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -2526,7 +2524,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -3092,7 +3089,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -3226,7 +3222,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -3360,7 +3355,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-disable-chunk-streaming-generated.yaml b/operations/mimir-tests/test-disable-chunk-streaming-generated.yaml index a632a356490..ce444bc0200 100644 --- a/operations/mimir-tests/test-disable-chunk-streaming-generated.yaml +++ b/operations/mimir-tests/test-disable-chunk-streaming-generated.yaml @@ -1302,7 +1302,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-extra-runtime-config-generated.yaml b/operations/mimir-tests/test-extra-runtime-config-generated.yaml index 77221adc7a6..b3c7796e306 100644 --- a/operations/mimir-tests/test-extra-runtime-config-generated.yaml +++ b/operations/mimir-tests/test-extra-runtime-config-generated.yaml @@ -1349,7 +1349,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-helm-parity-generated.yaml b/operations/mimir-tests/test-helm-parity-generated.yaml index 0688fc5c961..7e49ce8508f 100644 --- a/operations/mimir-tests/test-helm-parity-generated.yaml +++ b/operations/mimir-tests/test-helm-parity-generated.yaml @@ -1391,7 +1391,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-memberlist-cluster-label-migration-step-0-before-generated.yaml b/operations/mimir-tests/test-memberlist-cluster-label-migration-step-0-before-generated.yaml index 7038a262668..90aaa98f599 100644 --- a/operations/mimir-tests/test-memberlist-cluster-label-migration-step-0-before-generated.yaml +++ b/operations/mimir-tests/test-memberlist-cluster-label-migration-step-0-before-generated.yaml @@ -1301,7 +1301,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-memberlist-cluster-label-migration-step-1-generated.yaml b/operations/mimir-tests/test-memberlist-cluster-label-migration-step-1-generated.yaml index bb119debc12..971676f529e 100644 --- a/operations/mimir-tests/test-memberlist-cluster-label-migration-step-1-generated.yaml +++ b/operations/mimir-tests/test-memberlist-cluster-label-migration-step-1-generated.yaml @@ -1307,7 +1307,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-memberlist-cluster-label-migration-step-2-generated.yaml b/operations/mimir-tests/test-memberlist-cluster-label-migration-step-2-generated.yaml index 6634f027c75..56fd3e825b7 100644 --- a/operations/mimir-tests/test-memberlist-cluster-label-migration-step-2-generated.yaml +++ b/operations/mimir-tests/test-memberlist-cluster-label-migration-step-2-generated.yaml @@ -1313,7 +1313,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-memberlist-cluster-label-migration-step-3-generated.yaml b/operations/mimir-tests/test-memberlist-cluster-label-migration-step-3-generated.yaml index 47d07b57c20..76bbcd2c097 100644 --- a/operations/mimir-tests/test-memberlist-cluster-label-migration-step-3-generated.yaml +++ b/operations/mimir-tests/test-memberlist-cluster-label-migration-step-3-generated.yaml @@ -1307,7 +1307,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-memberlist-migration-step-0-before-generated.yaml b/operations/mimir-tests/test-memberlist-migration-step-0-before-generated.yaml index b2a079c25cd..81da3b381bd 100644 --- a/operations/mimir-tests/test-memberlist-migration-step-0-before-generated.yaml +++ b/operations/mimir-tests/test-memberlist-migration-step-0-before-generated.yaml @@ -1655,7 +1655,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-memberlist-migration-step-1-generated.yaml b/operations/mimir-tests/test-memberlist-migration-step-1-generated.yaml index 95406cb1c47..f18b985760c 100644 --- a/operations/mimir-tests/test-memberlist-migration-step-1-generated.yaml +++ b/operations/mimir-tests/test-memberlist-migration-step-1-generated.yaml @@ -1740,7 +1740,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-memberlist-migration-step-2-generated.yaml b/operations/mimir-tests/test-memberlist-migration-step-2-generated.yaml index b47ce4d14f3..e6e2979a6a3 100644 --- a/operations/mimir-tests/test-memberlist-migration-step-2-generated.yaml +++ b/operations/mimir-tests/test-memberlist-migration-step-2-generated.yaml @@ -1740,7 +1740,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-memberlist-migration-step-3-generated.yaml b/operations/mimir-tests/test-memberlist-migration-step-3-generated.yaml index cf437f4c4fd..e68486fea88 100644 --- a/operations/mimir-tests/test-memberlist-migration-step-3-generated.yaml +++ b/operations/mimir-tests/test-memberlist-migration-step-3-generated.yaml @@ -1740,7 +1740,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-memberlist-migration-step-4-generated.yaml b/operations/mimir-tests/test-memberlist-migration-step-4-generated.yaml index eb9ce02bfad..39c2803c150 100644 --- a/operations/mimir-tests/test-memberlist-migration-step-4-generated.yaml +++ b/operations/mimir-tests/test-memberlist-migration-step-4-generated.yaml @@ -1740,7 +1740,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-memberlist-migration-step-5-generated.yaml b/operations/mimir-tests/test-memberlist-migration-step-5-generated.yaml index f50db44b758..2eca6faa0cc 100644 --- a/operations/mimir-tests/test-memberlist-migration-step-5-generated.yaml +++ b/operations/mimir-tests/test-memberlist-migration-step-5-generated.yaml @@ -1304,7 +1304,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-memberlist-migration-step-6-final-generated.yaml b/operations/mimir-tests/test-memberlist-migration-step-6-final-generated.yaml index 7038a262668..90aaa98f599 100644 --- a/operations/mimir-tests/test-memberlist-migration-step-6-final-generated.yaml +++ b/operations/mimir-tests/test-memberlist-migration-step-6-final-generated.yaml @@ -1301,7 +1301,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-memcached-mtls-generated.yaml b/operations/mimir-tests/test-memcached-mtls-generated.yaml index acaaedc72c0..64e422cd6ab 100644 --- a/operations/mimir-tests/test-memcached-mtls-generated.yaml +++ b/operations/mimir-tests/test-memcached-mtls-generated.yaml @@ -1459,7 +1459,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.tls-server-name=memcached-cluster - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11212 - -blocks-storage.bucket-store.metadata-cache.memcached.connect-timeout=1s diff --git a/operations/mimir-tests/test-multi-zone-generated.yaml b/operations/mimir-tests/test-multi-zone-generated.yaml index 299067d0f0c..c7553cd0293 100644 --- a/operations/mimir-tests/test-multi-zone-generated.yaml +++ b/operations/mimir-tests/test-multi-zone-generated.yaml @@ -1774,7 +1774,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -1908,7 +1907,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -2042,7 +2040,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-multi-zone-with-ongoing-migration-generated.yaml b/operations/mimir-tests/test-multi-zone-with-ongoing-migration-generated.yaml index fe3dc6d6e24..a5eb91b3a28 100644 --- a/operations/mimir-tests/test-multi-zone-with-ongoing-migration-generated.yaml +++ b/operations/mimir-tests/test-multi-zone-with-ongoing-migration-generated.yaml @@ -1936,7 +1936,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -2068,7 +2067,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -2202,7 +2200,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -2336,7 +2333,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-query-scheduler-consul-ring-generated.yaml b/operations/mimir-tests/test-query-scheduler-consul-ring-generated.yaml index b39f9265888..9ad3e7970ab 100644 --- a/operations/mimir-tests/test-query-scheduler-consul-ring-generated.yaml +++ b/operations/mimir-tests/test-query-scheduler-consul-ring-generated.yaml @@ -1665,7 +1665,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-query-scheduler-memberlist-ring-and-ruler-remote-evaluation-generated.yaml b/operations/mimir-tests/test-query-scheduler-memberlist-ring-and-ruler-remote-evaluation-generated.yaml index 689de10cec2..92fae0c088a 100644 --- a/operations/mimir-tests/test-query-scheduler-memberlist-ring-and-ruler-remote-evaluation-generated.yaml +++ b/operations/mimir-tests/test-query-scheduler-memberlist-ring-and-ruler-remote-evaluation-generated.yaml @@ -1671,7 +1671,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-query-scheduler-memberlist-ring-generated.yaml b/operations/mimir-tests/test-query-scheduler-memberlist-ring-generated.yaml index 9e550de891f..33f45d19764 100644 --- a/operations/mimir-tests/test-query-scheduler-memberlist-ring-generated.yaml +++ b/operations/mimir-tests/test-query-scheduler-memberlist-ring-generated.yaml @@ -1332,7 +1332,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-query-scheduler-memberlist-ring-read-path-disabled-generated.yaml b/operations/mimir-tests/test-query-scheduler-memberlist-ring-read-path-disabled-generated.yaml index 96a06e4c40a..9f21a5b686e 100644 --- a/operations/mimir-tests/test-query-scheduler-memberlist-ring-read-path-disabled-generated.yaml +++ b/operations/mimir-tests/test-query-scheduler-memberlist-ring-read-path-disabled-generated.yaml @@ -1320,7 +1320,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-query-sharding-generated.yaml b/operations/mimir-tests/test-query-sharding-generated.yaml index ca89098d3cc..90f71dc6991 100644 --- a/operations/mimir-tests/test-query-sharding-generated.yaml +++ b/operations/mimir-tests/test-query-sharding-generated.yaml @@ -1306,7 +1306,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-read-write-deployment-mode-s3-autoscaled-generated.yaml b/operations/mimir-tests/test-read-write-deployment-mode-s3-autoscaled-generated.yaml index f02f75e8f98..bc209f78274 100644 --- a/operations/mimir-tests/test-read-write-deployment-mode-s3-autoscaled-generated.yaml +++ b/operations/mimir-tests/test-read-write-deployment-mode-s3-autoscaled-generated.yaml @@ -830,7 +830,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -1012,7 +1011,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -1194,7 +1192,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-read-write-deployment-mode-s3-generated.yaml b/operations/mimir-tests/test-read-write-deployment-mode-s3-generated.yaml index 70eeb334bb1..cd3309d67ac 100644 --- a/operations/mimir-tests/test-read-write-deployment-mode-s3-generated.yaml +++ b/operations/mimir-tests/test-read-write-deployment-mode-s3-generated.yaml @@ -831,7 +831,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -1013,7 +1012,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 @@ -1195,7 +1193,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-ruler-remote-evaluation-generated.yaml b/operations/mimir-tests/test-ruler-remote-evaluation-generated.yaml index 1083e5d5688..32415565648 100644 --- a/operations/mimir-tests/test-ruler-remote-evaluation-generated.yaml +++ b/operations/mimir-tests/test-ruler-remote-evaluation-generated.yaml @@ -1613,7 +1613,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-ruler-remote-evaluation-migration-generated.yaml b/operations/mimir-tests/test-ruler-remote-evaluation-migration-generated.yaml index 9a4695f95a5..59213b828fe 100644 --- a/operations/mimir-tests/test-ruler-remote-evaluation-migration-generated.yaml +++ b/operations/mimir-tests/test-ruler-remote-evaluation-migration-generated.yaml @@ -1612,7 +1612,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-shuffle-sharding-generated.yaml b/operations/mimir-tests/test-shuffle-sharding-generated.yaml index 5d8cbfa3f1e..5922a6c3e2a 100644 --- a/operations/mimir-tests/test-shuffle-sharding-generated.yaml +++ b/operations/mimir-tests/test-shuffle-sharding-generated.yaml @@ -1310,7 +1310,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-shuffle-sharding-read-path-disabled-generated.yaml b/operations/mimir-tests/test-shuffle-sharding-read-path-disabled-generated.yaml index 9f02e109b16..8cc4940b257 100644 --- a/operations/mimir-tests/test-shuffle-sharding-read-path-disabled-generated.yaml +++ b/operations/mimir-tests/test-shuffle-sharding-read-path-disabled-generated.yaml @@ -1311,7 +1311,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-storage-azure-generated.yaml b/operations/mimir-tests/test-storage-azure-generated.yaml index d2c1e8395c1..080790f289f 100644 --- a/operations/mimir-tests/test-storage-azure-generated.yaml +++ b/operations/mimir-tests/test-storage-azure-generated.yaml @@ -1312,7 +1312,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-storage-gcs-generated.yaml b/operations/mimir-tests/test-storage-gcs-generated.yaml index 7038a262668..90aaa98f599 100644 --- a/operations/mimir-tests/test-storage-gcs-generated.yaml +++ b/operations/mimir-tests/test-storage-gcs-generated.yaml @@ -1301,7 +1301,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-storage-gcs-redis-generated.yaml b/operations/mimir-tests/test-storage-gcs-redis-generated.yaml index cef176876b2..e94e99345c7 100644 --- a/operations/mimir-tests/test-storage-gcs-redis-generated.yaml +++ b/operations/mimir-tests/test-storage-gcs-redis-generated.yaml @@ -1009,7 +1009,6 @@ spec: - -blocks-storage.bucket-store.index-cache.redis.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=redis - -blocks-storage.bucket-store.metadata-cache.redis.connection-pool-size=150 - -blocks-storage.bucket-store.metadata-cache.redis.endpoint=redis-metadata.default.svc.cluster.local:6379 diff --git a/operations/mimir-tests/test-storage-s3-generated.yaml b/operations/mimir-tests/test-storage-s3-generated.yaml index 7cea4475f51..bda37fefb76 100644 --- a/operations/mimir-tests/test-storage-s3-generated.yaml +++ b/operations/mimir-tests/test-storage-s3-generated.yaml @@ -1306,7 +1306,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir-tests/test-without-query-scheduler-generated.yaml b/operations/mimir-tests/test-without-query-scheduler-generated.yaml index 07689bfa1a8..cd85542e1f8 100644 --- a/operations/mimir-tests/test-without-query-scheduler-generated.yaml +++ b/operations/mimir-tests/test-without-query-scheduler-generated.yaml @@ -985,7 +985,6 @@ spec: - -blocks-storage.bucket-store.index-cache.memcached.max-item-size=5242880 - -blocks-storage.bucket-store.index-header-lazy-loading-enabled=true - -blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout=60m - - -blocks-storage.bucket-store.max-chunk-pool-bytes=12884901888 - -blocks-storage.bucket-store.metadata-cache.backend=memcached - -blocks-storage.bucket-store.metadata-cache.memcached.addresses=dnssrvnoa+memcached-metadata.default.svc.cluster.local:11211 - -blocks-storage.bucket-store.metadata-cache.memcached.max-async-concurrency=50 diff --git a/operations/mimir/store-gateway.libsonnet b/operations/mimir/store-gateway.libsonnet index 16184dacc8b..026e2742bb3 100644 --- a/operations/mimir/store-gateway.libsonnet +++ b/operations/mimir/store-gateway.libsonnet @@ -34,8 +34,6 @@ // Block index-headers are pre-downloaded but lazy mmaped and loaded at query time. 'blocks-storage.bucket-store.index-header-lazy-loading-enabled': 'true', 'blocks-storage.bucket-store.index-header-lazy-loading-idle-timeout': '60m', - - 'blocks-storage.bucket-store.max-chunk-pool-bytes': 12 * 1024 * 1024 * 1024, } + $.blocks_chunks_concurrency_connection_config + $.blocks_chunks_caching_config + diff --git a/pkg/mimir/mimir_test.go b/pkg/mimir/mimir_test.go index 57cb18ee320..c748851f87e 100644 --- a/pkg/mimir/mimir_test.go +++ b/pkg/mimir/mimir_test.go @@ -88,8 +88,6 @@ func TestMimir(t *testing.T) { }, }, BucketStore: tsdb.BucketStoreConfig{ - ChunkPoolMinBucketSizeBytes: tsdb.ChunkPoolDefaultMinBucketSize, - ChunkPoolMaxBucketSizeBytes: tsdb.ChunkPoolDefaultMaxBucketSize, IndexCache: tsdb.IndexCacheConfig{ BackendConfig: cache.BackendConfig{ Backend: tsdb.IndexCacheBackendInMemory, diff --git a/pkg/storage/tsdb/config.go b/pkg/storage/tsdb/config.go index 98466023ef1..246b9434f59 100644 --- a/pkg/storage/tsdb/config.go +++ b/pkg/storage/tsdb/config.go @@ -74,10 +74,10 @@ const ( BytesPerPostingInAPostingList = 4 // ChunkPoolDefaultMinBucketSize is the default minimum bucket size (bytes) of the chunk pool. - ChunkPoolDefaultMinBucketSize = EstimatedMaxChunkSize + ChunkPoolDefaultMinBucketSize = EstimatedMaxChunkSize // Deprecated. TODO: Remove in Mimir 2.11. // ChunkPoolDefaultMaxBucketSize is the default maximum bucket size (bytes) of the chunk pool. - ChunkPoolDefaultMaxBucketSize = 50e6 + ChunkPoolDefaultMaxBucketSize = 50e6 // Deprecated. TODO: Remove in Mimir 2.11. // DefaultPostingOffsetInMemorySampling represents default value for --store.index-header-posting-offsets-in-mem-sampling. // 32 value is chosen as it's a good balance for common setups. Sampling that is not too large (too many CPU cycles) and @@ -96,6 +96,10 @@ const ( consistencyDelayFlag = "blocks-storage.bucket-store.consistency-delay" maxTSDBOpeningConcurrencyOnStartupFlag = "blocks-storage.tsdb.max-tsdb-opening-concurrency-on-startup" defaultMaxTSDBOpeningConcurrencyOnStartup = 10 + + maxChunksBytesPoolFlag = "blocks-storage.bucket-store.max-chunk-pool-bytes" + minBucketSizeBytesFlag = "blocks-storage.bucket-store.chunk-pool-min-bucket-size-bytes" + maxBucketSizeBytesFlag = "blocks-storage.bucket-store.chunk-pool-max-bucket-size-bytes" ) // Validation errors @@ -345,9 +349,9 @@ type BucketStoreConfig struct { IgnoreBlocksWithin time.Duration `yaml:"ignore_blocks_within" category:"advanced"` // Chunk pool. - MaxChunkPoolBytes uint64 `yaml:"max_chunk_pool_bytes" category:"advanced"` - ChunkPoolMinBucketSizeBytes int `yaml:"chunk_pool_min_bucket_size_bytes" category:"advanced"` - ChunkPoolMaxBucketSizeBytes int `yaml:"chunk_pool_max_bucket_size_bytes" category:"advanced"` + DeprecatedMaxChunkPoolBytes uint64 `yaml:"max_chunk_pool_bytes" category:"deprecated"` // Deprecated. TODO: Remove in Mimir 2.11. + DeprecatedChunkPoolMinBucketSizeBytes int `yaml:"chunk_pool_min_bucket_size_bytes" category:"deprecated"` // Deprecated. TODO: Remove in Mimir 2.11. + DeprecatedChunkPoolMaxBucketSizeBytes int `yaml:"chunk_pool_max_bucket_size_bytes" category:"deprecated"` // Deprecated. TODO: Remove in Mimir 2.11. // Series hash cache. SeriesHashCacheMaxBytes uint64 `yaml:"series_hash_cache_max_size_bytes" category:"advanced"` @@ -398,9 +402,9 @@ func (cfg *BucketStoreConfig) RegisterFlags(f *flag.FlagSet, logger log.Logger) f.StringVar(&cfg.SyncDir, "blocks-storage.bucket-store.sync-dir", "./tsdb-sync/", "Directory to store synchronized TSDB index headers. This directory is not required to be persisted between restarts, but it's highly recommended in order to improve the store-gateway startup time.") f.DurationVar(&cfg.SyncInterval, "blocks-storage.bucket-store.sync-interval", 15*time.Minute, "How frequently to scan the bucket, or to refresh the bucket index (if enabled), in order to look for changes (new blocks shipped by ingesters and blocks deleted by retention or compaction).") - f.Uint64Var(&cfg.MaxChunkPoolBytes, "blocks-storage.bucket-store.max-chunk-pool-bytes", uint64(2*units.Gibibyte), "Max size - in bytes - of a chunks pool, used to reduce memory allocations. The pool is shared across all tenants. 0 to disable the limit.") - f.IntVar(&cfg.ChunkPoolMinBucketSizeBytes, "blocks-storage.bucket-store.chunk-pool-min-bucket-size-bytes", ChunkPoolDefaultMinBucketSize, "Size - in bytes - of the smallest chunks pool bucket.") - f.IntVar(&cfg.ChunkPoolMaxBucketSizeBytes, "blocks-storage.bucket-store.chunk-pool-max-bucket-size-bytes", ChunkPoolDefaultMaxBucketSize, "Size - in bytes - of the largest chunks pool bucket.") + f.Uint64Var(&cfg.DeprecatedMaxChunkPoolBytes, maxChunksBytesPoolFlag, uint64(2*units.Gibibyte), "Max size - in bytes - of a chunks pool, used to reduce memory allocations. The pool is shared across all tenants. 0 to disable the limit.") + f.IntVar(&cfg.DeprecatedChunkPoolMinBucketSizeBytes, minBucketSizeBytesFlag, ChunkPoolDefaultMinBucketSize, "Size - in bytes - of the smallest chunks pool bucket.") + f.IntVar(&cfg.DeprecatedChunkPoolMaxBucketSizeBytes, maxBucketSizeBytesFlag, ChunkPoolDefaultMaxBucketSize, "Size - in bytes - of the largest chunks pool bucket.") f.Uint64Var(&cfg.SeriesHashCacheMaxBytes, "blocks-storage.bucket-store.series-hash-cache-max-size-bytes", uint64(1*units.Gibibyte), "Max size - in bytes - of the in-memory series hash cache. The cache is shared across all tenants and it's used only when query sharding is enabled.") f.IntVar(&cfg.MaxConcurrent, "blocks-storage.bucket-store.max-concurrent", 100, "Max number of concurrent queries to execute against the long-term storage. The limit is shared across all tenants.") f.IntVar(&cfg.TenantSyncConcurrency, "blocks-storage.bucket-store.tenant-sync-concurrency", 10, "Maximum number of concurrent tenants synching blocks.") @@ -436,6 +440,15 @@ func (cfg *BucketStoreConfig) Validate(logger log.Logger) error { if cfg.DeprecatedConsistencyDelay > 0 { util.WarnDeprecatedConfig(consistencyDelayFlag, logger) } + if cfg.DeprecatedMaxChunkPoolBytes != uint64(2*units.Gibibyte) { + util.WarnDeprecatedConfig(maxChunksBytesPoolFlag, logger) + } + if cfg.DeprecatedChunkPoolMinBucketSizeBytes != ChunkPoolDefaultMinBucketSize { + util.WarnDeprecatedConfig(minBucketSizeBytesFlag, logger) + } + if cfg.DeprecatedChunkPoolMaxBucketSizeBytes != ChunkPoolDefaultMaxBucketSize { + util.WarnDeprecatedConfig(maxBucketSizeBytesFlag, logger) + } if !util.StringsContain(validSeriesSelectionStrategies, cfg.SeriesSelectionStrategyName) { return errors.New("invalid series-selection-strategy, set one of " + strings.Join(validSeriesSelectionStrategies, ", ")) } diff --git a/pkg/storegateway/bucket.go b/pkg/storegateway/bucket.go index 1fafdeb5df5..270b02d01c3 100644 --- a/pkg/storegateway/bucket.go +++ b/pkg/storegateway/bucket.go @@ -53,7 +53,6 @@ import ( "github.com/grafana/mimir/pkg/storegateway/storepb" "github.com/grafana/mimir/pkg/util" util_math "github.com/grafana/mimir/pkg/util/math" - "github.com/grafana/mimir/pkg/util/pool" "github.com/grafana/mimir/pkg/util/spanlogger" ) @@ -66,10 +65,6 @@ const ( // Take a look at Figure 6 in this whitepaper http://www.vldb.org/pvldb/vol8/p1816-teller.pdf. MaxSamplesPerChunk = 120 - // Relatively large in order to reduce memory waste, yet small enough to avoid excessive allocations. - chunkBytesPoolMinSize = 64 * 1024 // 64 KiB - chunkBytesPoolMaxSize = 64 * 1024 * 1024 // 64 MiB - // Labels for metrics. labelEncode = "encode" labelDecode = "decode" @@ -96,7 +91,6 @@ type BucketStore struct { indexCache indexcache.IndexCache chunksCache chunkscache.Cache indexReaderPool *indexheader.ReaderPool - chunkPool pool.Bytes seriesHashCache *hashcache.SeriesHashCache // Sets of blocks that have the same labels. They are indexed by a hash over their label set. @@ -208,13 +202,6 @@ func WithQueryGate(queryGate gate.Gate) BucketStoreOption { } } -// WithChunkPool sets a pool.Bytes to use for chunks. -func WithChunkPool(chunkPool pool.Bytes) BucketStoreOption { - return func(s *BucketStore) { - s.chunkPool = chunkPool - } -} - func WithFineGrainedChunksCaching(enabled bool) BucketStoreOption { return func(s *BucketStore) { s.fineGrainedChunksCachingEnabled = enabled @@ -250,7 +237,6 @@ func NewBucketStore( dir: dir, indexCache: noopCache{}, chunksCache: chunkscache.NoopCache{}, - chunkPool: pool.NoopBytes{}, blocks: map[ulid.ULID]*bucketBlock{}, blockSet: newBucketBlockSet(), blockSyncConcurrency: blockSyncConcurrency, @@ -443,7 +429,6 @@ func (s *BucketStore) addBlock(ctx context.Context, meta *metadata.Meta) (err er s.bkt, dir, s.indexCache, - s.chunkPool, indexHeaderReader, s.partitioners, ) @@ -1481,7 +1466,6 @@ type bucketBlock struct { meta *metadata.Meta dir string indexCache indexcache.IndexCache - chunkPool pool.Bytes indexHeaderReader indexheader.Reader @@ -1507,7 +1491,6 @@ func newBucketBlock( bkt objstore.BucketReader, dir string, indexCache indexcache.IndexCache, - chunkPool pool.Bytes, indexHeadReader indexheader.Reader, p blockPartitioners, ) (b *bucketBlock, err error) { @@ -1517,7 +1500,6 @@ func newBucketBlock( metrics: metrics, bkt: bkt, indexCache: indexCache, - chunkPool: chunkPool, dir: dir, partitioners: p, meta: meta, @@ -1576,32 +1558,6 @@ func (b *bucketBlock) readIndexRange(ctx context.Context, off, length int64) ([] return buf.Bytes(), nil } -func (b *bucketBlock) readChunkRange(ctx context.Context, seq int, off, length int64, chunkRanges byteRanges) (*[]byte, error) { - if seq < 0 || seq >= len(b.chunkObjs) { - return nil, errors.Errorf("unknown segment file for index %d", seq) - } - - ctx = bucketcache.WithMemoryPool(ctx, chunkBytesSlicePool, chunkBytesSlabSize) - reader, err := b.bkt.GetRange(ctx, b.chunkObjs[seq], off, length) - if err != nil { - return nil, errors.Wrap(err, "get range reader") - } - defer runutil.CloseWithLogOnErr(b.logger, reader, "readChunkRange close range reader") - - // Get a buffer from the pool. - chunkBuffer, err := b.chunkPool.Get(chunkRanges.size()) - if err != nil { - return nil, errors.Wrap(err, "allocate chunk bytes") - } - - *chunkBuffer, err = readByteRanges(reader, *chunkBuffer, chunkRanges) - if err != nil { - return nil, err - } - - return chunkBuffer, nil -} - func (b *bucketBlock) chunkRangeReader(ctx context.Context, seq int, off, length int64) (io.ReadCloser, error) { if seq < 0 || seq >= len(b.chunkObjs) { return nil, errors.Errorf("unknown segment file for index %d", seq) diff --git a/pkg/storegateway/bucket_chunk_reader.go b/pkg/storegateway/bucket_chunk_reader.go index 21770946c0e..3e29d14e761 100644 --- a/pkg/storegateway/bucket_chunk_reader.go +++ b/pkg/storegateway/bucket_chunk_reader.go @@ -13,7 +13,9 @@ import ( "hash/crc32" "io" "sort" + "sync" + "github.com/dennwc/varint" "github.com/grafana/dskit/runutil" "github.com/oklog/ulid" "github.com/pkg/errors" @@ -21,8 +23,9 @@ import ( "github.com/prometheus/prometheus/tsdb/chunks" "golang.org/x/sync/errgroup" - mimir_tsdb "github.com/grafana/mimir/pkg/storage/tsdb" + "github.com/grafana/mimir/pkg/storage/tsdb" "github.com/grafana/mimir/pkg/storegateway/storepb" + util_math "github.com/grafana/mimir/pkg/util/math" "github.com/grafana/mimir/pkg/util/pool" ) @@ -65,7 +68,7 @@ func (r *bucketChunkReader) addLoad(id chunks.ChunkRef, seriesEntry, chunkEntry } r.toLoad[seq] = append(r.toLoad[seq], loadIdx{ offset: off, - length: length, + length: util_math.Max(varint.MaxLen32, length), // If the length is 0, we need to at least fetch the length of the chunk. seriesEntry: seriesEntry, chunkEntry: chunkEntry, }) @@ -103,6 +106,10 @@ func (r *bucketChunkReader) load(res []seriesChunks, chunksPool *pool.SafeSlabPo return g.Wait() } +var chunksOffsetReaders = &sync.Pool{New: func() any { + return &offsetTrackingReader{r: bufio.NewReaderSize(nil, tsdb.EstimatedMaxChunkSize)} +}} + // loadChunks will read range [start, end] from the segment file with sequence number seq. // This data range covers chunks starting at supplied offsets. // @@ -112,12 +119,11 @@ func (r *bucketChunkReader) load(res []seriesChunks, chunksPool *pool.SafeSlabPo // different chunks in the res. func (r *bucketChunkReader) loadChunks(ctx context.Context, res []seriesChunks, seq int, part Part, pIdxs []loadIdx, chunksPool *pool.SafeSlabPool[byte], stats *safeQueryStats) error { // Get a reader for the required range. - reader, err := r.block.chunkRangeReader(ctx, seq, int64(part.Start), int64(part.End-part.Start)) + bucketReader, err := r.block.chunkRangeReader(ctx, seq, int64(part.Start), int64(part.End-part.Start)) if err != nil { return errors.Wrap(err, "get range reader") } - defer runutil.CloseWithLogOnErr(r.block.logger, reader, "readChunkRange close range reader") - bufReader := bufio.NewReaderSize(reader, mimir_tsdb.EstimatedMaxChunkSize) + defer runutil.CloseWithLogOnErr(r.block.logger, bucketReader, "readChunkRange close range reader") // Since we may load many chunks, to avoid having to lock very frequently we accumulate // all stats in a local instance and then merge it in the defer. @@ -126,88 +132,73 @@ func (r *bucketChunkReader) loadChunks(ctx context.Context, res []seriesChunks, localStats.chunksFetched += len(pIdxs) localStats.chunksFetchedSizeSum += int(part.End - part.Start) + reader := chunksOffsetReaders.Get().(*offsetTrackingReader) + defer chunksOffsetReaders.Put(reader) - var ( - buf = make([]byte, mimir_tsdb.EstimatedMaxChunkSize) - readOffset = int(pIdxs[0].offset) - - // Save a few allocations. - written int64 - diff uint32 - chunkLen int - n int - ) + reader.Reset(uint64(pIdxs[0].offset), bucketReader) + defer reader.Release() for i, pIdx := range pIdxs { - // Fast forward range reader to the next chunk start in case of sparse (for our purposes) byte range. - for readOffset < int(pIdx.offset) { - written, err = io.CopyN(io.Discard, bufReader, int64(pIdx.offset)-int64(readOffset)) - if err != nil { - return errors.Wrap(err, "fast forward range reader") - } - readOffset += int(written) - } - // Use the chunk length estimation. - // However, declaration for length warns us this estimation can be wrong. - // This is handled further down below. - chunkLen = int(pIdx.length) - if i+1 < len(pIdxs) { - if diff = pIdxs[i+1].offset - pIdx.offset; int(diff) < chunkLen { - chunkLen = int(diff) - } - } - cb := buf[:chunkLen] - n, err = io.ReadFull(bufReader, cb) - readOffset += n - // Unexpected EOF for last chunk could be a valid case. Any other errors are definitely real. - if err != nil && !(errors.Is(err, io.ErrUnexpectedEOF) && i == len(pIdxs)-1) { - return errors.Wrapf(err, "read range for seq %d offset %x", seq, pIdx.offset) + // Fast-forward range reader to the next chunk start in case of sparse (for our purposes) byte range. + if err = reader.SkipTo(uint64(pIdx.offset)); err != nil { + return errors.Wrap(err, "fast forward range reader") } - - chunkDataLen, n := binary.Uvarint(cb) - if n < 1 { - return errors.New("reading chunk length failed") - } - - // Chunk length is n (number of bytes used to encode chunk data), 1 for chunk encoding and chunkDataLen for actual chunk data. - // There is also crc32 after the chunk, but we ignore that. - chunkLen = n + 1 + int(chunkDataLen) - if chunkLen <= len(cb) { - err = populateChunk(&(res[pIdx.seriesEntry].chks[pIdx.chunkEntry]), rawChunk(cb[n:chunkLen]), chunksPool) - if err != nil { - return errors.Wrap(err, "populate chunk") - } - localStats.chunksTouched++ - localStats.chunksTouchedSizeSum += chunkLen + crc32.Size - continue - } - - // Read entire chunk into new buffer. - // TODO: readChunkRange call could be avoided for any chunk but last in this particular part. - nb, err := r.block.readChunkRange(ctx, seq, int64(pIdx.offset), int64(chunkLen), []byteRange{{offset: 0, length: chunkLen}}) + chunkDataLen, err := binary.ReadUvarint(reader) if err != nil { - return errors.Wrapf(err, "preloaded chunk too small, expecting %d, and failed to fetch full chunk", chunkLen) + return errors.Wrap(err, "parsing chunk length") } - if len(*nb) != chunkLen { - return errors.Errorf("preloaded chunk too small, expecting %d", chunkLen) + // We ignore the crc32 after the chunk data. + chunkEncDataLen := chunks.ChunkEncodingSize + int(chunkDataLen) + cb := chunksPool.Get(chunkEncDataLen) + + fullyRead, err := io.ReadFull(reader, cb) + // We get io.EOF when there are 0 bytes read and io.UnexpectedEOF when there are some but not all read. + if errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) { + if chunksLeft := len(pIdxs) - 1 - i; chunksLeft != 0 { + // Unexpected EOF for last chunk could be a valid case if we have underestimated the length of the chunk. + // Any other errors are definitely unexpected. + return fmt.Errorf("underread with %d more remaining chunks in seq %d start %d end %d", chunksLeft, seq, part.Start, part.End) + } + if err = r.fetchChunkRemainder(ctx, seq, int64(reader.offset), int64(chunkEncDataLen-fullyRead), cb[fullyRead:], &localStats); err != nil { + return errors.Wrapf(err, "refetching chunk seq %d offset %x length %d", seq, pIdx.offset, pIdx.length) + } + } else if err != nil { + return errors.Wrap(err, "read chunk") } - localStats.chunksRefetched++ - localStats.chunksRefetchedSizeSum += len(*nb) - err = populateChunk(&(res[pIdx.seriesEntry].chks[pIdx.chunkEntry]), rawChunk((*nb)[n:]), chunksPool) + err = populateChunk(&(res[pIdx.seriesEntry].chks[pIdx.chunkEntry]), rawChunk(cb)) if err != nil { - r.block.chunkPool.Put(nb) return errors.Wrap(err, "populate chunk") } localStats.chunksTouched++ - localStats.chunksTouchedSizeSum += chunkLen + crc32.Size + // Also account for the crc32 at the end. We ignore the bytes, but the counter for "returned" chunks with fine-grained caching + // also includes the size of crc32 and the length varint size encoding. By including it we can have a more accurate ratio of touched/returned for small chunks, + // where the crc32 + length varint size are a substantial part of the chunk. + localStats.chunksTouchedSizeSum += varint.UvarintSize(chunkDataLen) + chunkEncDataLen + crc32.Size + } + return nil +} - r.block.chunkPool.Put(nb) +func (r *bucketChunkReader) fetchChunkRemainder(ctx context.Context, seq int, offset, length int64, dest []byte, localStats *queryStats) error { + if length != int64(len(dest)) { + return fmt.Errorf("byte range length (%d) different from destination length (%d)", length, len(dest)) + } + refetchReader, err := r.block.chunkRangeReader(ctx, seq, offset, length) + if err != nil { + return errors.Wrap(err, "open chunk reader") } + defer runutil.CloseWithLogOnErr(r.block.logger, refetchReader, "close refetch chunk reader") + refetchedRead, err := io.ReadFull(refetchReader, dest) + if err != nil { + return errors.Wrap(err, "read refetched chunk") + } + localStats.chunksRefetched++ + localStats.chunksRefetchedSizeSum += refetchedRead return nil } -func populateChunk(out *storepb.AggrChunk, in chunkenc.Chunk, chunksPool *pool.SafeSlabPool[byte]) error { +// populateChunk retains in.Bytes() in out.Raw. +func populateChunk(out *storepb.AggrChunk, in chunkenc.Chunk) error { var enc storepb.Chunk_Encoding switch in.Encoding() { case chunkenc.EncXOR: @@ -220,20 +211,10 @@ func populateChunk(out *storepb.AggrChunk, in chunkenc.Chunk, chunksPool *pool.S return errors.Errorf("unsupported chunk encoding %d", in.Encoding()) } - b := saveChunk(in.Bytes(), chunksPool) - out.Raw = &storepb.Chunk{Type: enc, Data: b} + out.Raw = &storepb.Chunk{Type: enc, Data: in.Bytes()} return nil } -// saveChunk saves a copy of b's payload to a buffer pulled from chunksPool. -// The buffer containing the chunk data is returned. -// The returned slice becomes invalid once chunksPool is released. -func saveChunk(b []byte, chunksPool *pool.SafeSlabPool[byte]) []byte { - dst := chunksPool.Get(len(b)) - copy(dst, b) - return dst -} - type loadIdx struct { offset uint32 // length is the estimated length of the chunk in the segment file. @@ -280,6 +261,7 @@ type bucketChunkReaders struct { type chunkReader interface { io.Closer + // addLoad prepares to load the chunk. If length is unknown, it can be 0. addLoad(id chunks.ChunkRef, seriesEntry, chunkEntry int, length uint32) error load(result []seriesChunks, chunksPool *pool.SafeSlabPool[byte], stats *safeQueryStats) error reset() @@ -291,6 +273,7 @@ func newChunkReaders(readersMap map[ulid.ULID]chunkReader) *bucketChunkReaders { } } +// addLoad prepares to load the chunk for the chunk reader of the provided block. If length is unknown, it can be 0. func (r bucketChunkReaders) addLoad(blockID ulid.ULID, id chunks.ChunkRef, seriesEntry, chunk int, length uint32) error { reader, ok := r.readers[blockID] if !ok { @@ -301,13 +284,16 @@ func (r bucketChunkReaders) addLoad(blockID ulid.ULID, id chunks.ChunkRef, serie func (r bucketChunkReaders) load(entries []seriesChunks, chunksPool *pool.SafeSlabPool[byte], stats *safeQueryStats) error { g := &errgroup.Group{} - for _, reader := range r.readers { - reader := reader + for blockID, reader := range r.readers { + blockID, reader := blockID, reader g.Go(func() error { // We don't need synchronisation on the access to entries because each chunk in // every series will be loaded by exactly one reader. Since the chunks slices are already // initialized to the correct length, they don't need to be resized and can just be accessed. - return reader.load(entries, chunksPool, stats) + if err := reader.load(entries, chunksPool, stats); err != nil { + return errors.Wrapf(err, "block %s", blockID.String()) + } + return nil }) } diff --git a/pkg/storegateway/bucket_chunk_reader_test.go b/pkg/storegateway/bucket_chunk_reader_test.go new file mode 100644 index 00000000000..14d637fcbeb --- /dev/null +++ b/pkg/storegateway/bucket_chunk_reader_test.go @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: AGPL-3.0-only + +package storegateway + +import ( + "context" + "testing" + + "github.com/go-kit/log" + "github.com/prometheus/prometheus/model/labels" + "github.com/prometheus/prometheus/tsdb/chunks" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/grafana/mimir/pkg/storage/tsdb" + "github.com/grafana/mimir/pkg/storegateway/storepb" + "github.com/grafana/mimir/pkg/util/pool" + "github.com/grafana/mimir/pkg/util/test" +) + +func (g seriesChunkRefsRange) refAt(i int) chunks.ChunkRef { + return chunkRef(g.segmentFile, g.refs[i].segFileOffset) +} + +func TestBucketChunkReader_refetchChunks(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(cancel) + + newTestBucketBlock := prepareTestBlock(test.NewTB(t), appendTestSeries(1000)) + block := newTestBucketBlock() + seriesRefsIterator, err := openBlockSeriesChunkRefsSetsIterator( + ctx, + 5000, + "tenant-1", + block.indexReader(selectAllStrategy{}), + noopCache{}, + block.meta, + []*labels.Matcher{labels.MustNewMatcher(labels.MatchEqual, "j", "foo")}, + nil, + nil, + false, + block.meta.MinTime, + block.meta.MaxTime, + 2, + newSafeQueryStats(), + log.NewNopLogger(), + ) + require.NoError(t, err) + + seriesRefs := readAllSeriesChunkRefs(newFlattenedSeriesChunkRefsIterator(seriesRefsIterator)) + require.NoError(t, seriesRefsIterator.Err()) + + // Each func takes the estimated length and returns a new length. + chunkLengthSkewingFuncs := map[string]func(uint32) uint32{ + "tsdb.EstimatedMaxChunkSize": func(chunkLength uint32) uint32 { return tsdb.EstimatedMaxChunkSize }, + "10xtsdb.EstimatedMaxChunkSize": func(chunkLength uint32) uint32 { return 10 * tsdb.EstimatedMaxChunkSize }, + "size-1": func(chunkLength uint32) uint32 { return chunkLength - 1 }, + "size/2": func(chunkLength uint32) uint32 { return chunkLength / 2 }, + "1": func(chunkLength uint32) uint32 { return 1 }, + "0": func(chunkLength uint32) uint32 { return 0 }, + } + + for name, skewChunkLen := range chunkLengthSkewingFuncs { + t.Run(name, func(t *testing.T) { + // Start loading chunks in two readers - one with the estimations from the index and one with modified estimations. + // We expect that the estimations from the index lead to no refetches and that the skewed lengths trigger refetches. + loadedChunksCorrectLen := make([]seriesChunks, len(seriesRefs)) + chunkrCorrectLen := block.chunkReader(ctx) + + loadedChunksModifiedLen := make([]seriesChunks, len(seriesRefs)) + chunkrModifiedLen := block.chunkReader(ctx) + + for sIdx, seriesRef := range seriesRefs { + for _, r := range seriesRef.chunksRanges { + existingChunksNum := len(loadedChunksCorrectLen[sIdx].chks) + + loadedChunksCorrectLen[sIdx].chks = append(loadedChunksCorrectLen[sIdx].chks, make([]storepb.AggrChunk, len(r.refs))...) + loadedChunksModifiedLen[sIdx].chks = append(loadedChunksModifiedLen[sIdx].chks, make([]storepb.AggrChunk, len(r.refs))...) + + for cIdx, c := range r.refs { + assert.NoError(t, chunkrCorrectLen.addLoad(r.refAt(cIdx), sIdx, existingChunksNum+cIdx, c.length)) + assert.NoError(t, chunkrModifiedLen.addLoad(r.refAt(cIdx), sIdx, existingChunksNum+cIdx, skewChunkLen(c.length))) + } + } + } + + assert.NoError(t, chunkrModifiedLen.load(loadedChunksModifiedLen, pool.NewSafeSlabPool[byte](chunkBytesSlicePool, seriesChunksSlabSize), newSafeQueryStats())) + assert.NoError(t, chunkrCorrectLen.load(loadedChunksCorrectLen, pool.NewSafeSlabPool[byte](chunkBytesSlicePool, seriesChunksSlabSize), newSafeQueryStats())) + + assert.Equal(t, loadedChunksCorrectLen, loadedChunksModifiedLen) + }) + } +} diff --git a/pkg/storegateway/bucket_stores.go b/pkg/storegateway/bucket_stores.go index 9bf9cd37e15..947cfa2a9e8 100644 --- a/pkg/storegateway/bucket_stores.go +++ b/pkg/storegateway/bucket_stores.go @@ -33,7 +33,6 @@ import ( "github.com/grafana/mimir/pkg/storegateway/indexcache" "github.com/grafana/mimir/pkg/storegateway/storepb" util_log "github.com/grafana/mimir/pkg/util/log" - "github.com/grafana/mimir/pkg/util/pool" "github.com/grafana/mimir/pkg/util/spanlogger" "github.com/grafana/mimir/pkg/util/validation" ) @@ -61,9 +60,6 @@ type BucketStores struct { // Series hash cache shared across all tenants. seriesHashCache *hashcache.SeriesHashCache - // Chunks bytes pool shared across all tenants. - chunksPool pool.Bytes - // partitioners shared across all tenants. partitioners blockPartitioners @@ -152,11 +148,6 @@ func NewBucketStores(cfg tsdb.BlocksStorageConfig, shardingStrategy ShardingStra } u.chunksCache = chunkscache.NewTracingCache(chunksCache, logger) - // Init the chunks bytes pool. - if u.chunksPool, err = newChunkBytesPool(cfg.BucketStore.ChunkPoolMinBucketSizeBytes, cfg.BucketStore.ChunkPoolMaxBucketSizeBytes, cfg.BucketStore.MaxChunkPoolBytes, reg); err != nil { - return nil, errors.Wrap(err, "create chunks bytes pool") - } - if reg != nil { reg.MustRegister(u.metaFetcherMetrics) } @@ -468,7 +459,6 @@ func (u *BucketStores) getOrCreateStore(userID string) (*BucketStore, error) { WithIndexCache(u.indexCache), WithChunksCache(u.chunksCache), WithQueryGate(u.queryGate), - WithChunkPool(u.chunksPool), WithFineGrainedChunksCaching(u.cfg.BucketStore.ChunksCache.FineGrainedChunksCachingEnabled), } diff --git a/pkg/storegateway/bucket_test.go b/pkg/storegateway/bucket_test.go index 57d94245ac4..206c0b72695 100644 --- a/pkg/storegateway/bucket_test.go +++ b/pkg/storegateway/bucket_test.go @@ -47,7 +47,6 @@ import ( "github.com/stretchr/testify/require" "github.com/thanos-io/objstore" "github.com/thanos-io/objstore/providers/filesystem" - "go.uber.org/atomic" "golang.org/x/exp/slices" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -89,7 +88,7 @@ func TestBucketBlock_matchLabels(t *testing.T) { }, } - b, err := newBucketBlock(context.Background(), "test", log.NewNopLogger(), NewBucketStoreMetrics(nil), meta, bkt, path.Join(dir, blockID.String()), nil, nil, nil, blockPartitioners{}) + b, err := newBucketBlock(context.Background(), "test", log.NewNopLogger(), NewBucketStoreMetrics(nil), meta, bkt, path.Join(dir, blockID.String()), nil, nil, blockPartitioners{}) assert.NoError(t, err) cases := []struct { @@ -1004,12 +1003,20 @@ func prepareTestBlock(tb test.TB, dataSetup ...func(tb testing.TB, appender stor require.NoError(tb, err) return func() *bucketBlock { + var chunkObjects []string + err := bkt.Iter(context.Background(), path.Join(id.String(), "chunks"), func(s string) error { + chunkObjects = append(chunkObjects, s) + return nil + }) + require.NoError(tb, err) + return &bucketBlock{ userID: "tenant", logger: log.NewNopLogger(), metrics: NewBucketStoreMetrics(nil), indexHeaderReader: r, indexCache: noopCache{}, + chunkObjs: chunkObjects, bkt: bkt, meta: &metadata.Meta{BlockMeta: tsdb.BlockMeta{ULID: id, MinTime: minT, MaxTime: maxT}}, partitioners: newGapBasedPartitioners(mimir_tsdb.DefaultPartitionerMaxGapSize, nil), @@ -1354,13 +1361,8 @@ func benchBucketSeries(t test.TB, skipChunk bool, samplesPerSeries, totalSeries f, err := block.NewRawMetaFetcher(logger, ibkt) assert.NoError(t, err) - chunkPool, err := pool.NewBucketedBytes(chunkBytesPoolMinSize, chunkBytesPoolMaxSize, 2, 1e9) // 1GB. - assert.NoError(t, err) - runTestWithStore := func(t test.TB, st *BucketStore, reg prometheus.Gatherer) { if !t.IsBenchmark() { - st.chunkPool = &trackedBytesPool{parent: st.chunkPool} - // Reset the memory pools. seriesChunksSlicePool.(*pool.TrackedPool).Reset() chunksSlicePool.(*pool.TrackedPool).Reset() @@ -1402,9 +1404,6 @@ func benchBucketSeries(t test.TB, skipChunk bool, samplesPerSeries, totalSeries if !t.IsBenchmark() { if !skipChunk { - assert.Zero(t, st.chunkPool.(*trackedBytesPool).balance.Load()) - st.chunkPool.(*trackedBytesPool).gets.Store(0) - assert.Zero(t, seriesChunksSlicePool.(*pool.TrackedPool).Balance.Load()) assert.Zero(t, chunksSlicePool.(*pool.TrackedPool).Balance.Load()) @@ -1443,15 +1442,15 @@ func benchBucketSeries(t test.TB, skipChunk bool, samplesPerSeries, totalSeries maxSeriesPerBatch int }{ "with series streaming (1K per batch)": { - options: []BucketStoreOption{WithLogger(logger), WithChunkPool(chunkPool)}, + options: []BucketStoreOption{WithLogger(logger)}, maxSeriesPerBatch: 1000, }, "with series streaming (10K per batch)": { - options: []BucketStoreOption{WithLogger(logger), WithChunkPool(chunkPool)}, + options: []BucketStoreOption{WithLogger(logger)}, maxSeriesPerBatch: 10000, }, "with series streaming and caches (1K per batch)": { - options: []BucketStoreOption{WithLogger(logger), WithChunkPool(chunkPool), WithIndexCache(newInMemoryIndexCache(t)), WithChunksCache(newInMemoryChunksCache())}, + options: []BucketStoreOption{WithLogger(logger), WithIndexCache(newInMemoryIndexCache(t)), WithChunksCache(newInMemoryChunksCache())}, maxSeriesPerBatch: 1000, }, } @@ -1580,10 +1579,6 @@ func TestBucketStore_Series_Concurrency(t *testing.T) { metaFetcher, err := block.NewRawMetaFetcher(logger, instrumentedBucket) assert.NoError(t, err) - chunkPool, err := pool.NewBucketedBytes(chunkBytesPoolMinSize, chunkBytesPoolMaxSize, 2, 1e9) // 1GB. - assert.NoError(t, err) - trackedChunkPool := &trackedBytesPool{parent: chunkPool} - // Create the bucket store. store, err := NewBucketStore( "test-user", @@ -1604,7 +1599,6 @@ func TestBucketStore_Series_Concurrency(t *testing.T) { hashcache.NewSeriesHashCache(1024*1024), NewBucketStoreMetrics(nil), WithLogger(logger), - WithChunkPool(trackedChunkPool), ) require.NoError(t, err) require.NoError(t, store.SyncBlocks(ctx)) @@ -1626,9 +1620,6 @@ func TestBucketStore_Series_Concurrency(t *testing.T) { // Wait until all workers have done. wg.Wait() - // Ensure all chunks have been released to the pool. - require.Equal(t, 0, int(trackedChunkPool.balance.Load())) - // Ensure the seriesChunkRefsSet memory pool has been used and all slices pulled from // pool have put back. assert.Greater(t, seriesChunkRefsSetPool.(*pool.TrackedPool).Gets.Load(), int64(0)) @@ -1637,27 +1628,6 @@ func TestBucketStore_Series_Concurrency(t *testing.T) { } } -type trackedBytesPool struct { - parent pool.Bytes - balance atomic.Uint64 - gets atomic.Uint64 -} - -func (m *trackedBytesPool) Get(sz int) (*[]byte, error) { - b, err := m.parent.Get(sz) - if err != nil { - return nil, err - } - m.balance.Add(uint64(cap(*b))) - m.gets.Add(uint64(1)) - return b, nil -} - -func (m *trackedBytesPool) Put(b *[]byte) { - m.balance.Sub(uint64(cap(*b))) - m.parent.Put(b) -} - // Regression test against: https://github.com/thanos-io/thanos/issues/2147. func TestBucketStore_Series_OneBlock_InMemIndexCacheSegfault(t *testing.T) { tmpDir := t.TempDir() @@ -1672,9 +1642,6 @@ func TestBucketStore_Series_OneBlock_InMemIndexCacheSegfault(t *testing.T) { Source: metadata.TestSource, } - chunkPool, err := pool.NewBucketedBytes(chunkBytesPoolMinSize, chunkBytesPoolMaxSize, 2, 100e7) - assert.NoError(t, err) - indexCache, err := indexcache.NewInMemoryIndexCacheWithConfig(logger, nil, indexcache.InMemoryIndexCacheConfig{ MaxItemSize: 3000, // This is the exact size of cache needed for our *single request*. @@ -1725,7 +1692,6 @@ func TestBucketStore_Series_OneBlock_InMemIndexCacheSegfault(t *testing.T) { meta: meta, partitioners: newGapBasedPartitioners(mimir_tsdb.DefaultPartitionerMaxGapSize, nil), chunkObjs: []string{filepath.Join(id.String(), "chunks", "000001")}, - chunkPool: chunkPool, } b1.indexHeaderReader, err = indexheader.NewStreamBinaryReader(context.Background(), log.NewNopLogger(), bkt, tmpDir, b1.meta.ULID, mimir_tsdb.DefaultPostingOffsetInMemorySampling, indexheader.NewStreamBinaryReaderMetrics(nil), indexheader.Config{}) assert.NoError(t, err) @@ -1764,7 +1730,6 @@ func TestBucketStore_Series_OneBlock_InMemIndexCacheSegfault(t *testing.T) { meta: meta, partitioners: newGapBasedPartitioners(mimir_tsdb.DefaultPartitionerMaxGapSize, nil), chunkObjs: []string{filepath.Join(id.String(), "chunks", "000001")}, - chunkPool: chunkPool, } b2.indexHeaderReader, err = indexheader.NewStreamBinaryReader(context.Background(), log.NewNopLogger(), bkt, tmpDir, b2.meta.ULID, mimir_tsdb.DefaultPostingOffsetInMemorySampling, indexheader.NewStreamBinaryReaderMetrics(nil), indexheader.Config{}) assert.NoError(t, err) @@ -1789,7 +1754,6 @@ func TestBucketStore_Series_OneBlock_InMemIndexCacheSegfault(t *testing.T) { seriesLimiterFactory: newStaticSeriesLimiterFactory(0), maxSeriesPerBatch: 65536, numChunksRangesPerSeries: 1, - chunkPool: chunkPool, } srv := newBucketStoreTestServer(t, store) @@ -2369,28 +2333,6 @@ func mustMarshalAny(pb proto.Message) *types.Any { return out } -func createBlockWithOneSeriesWithStep(t test.TB, dir string, lbls labels.Labels, blockIndex, totalSamples int, random *rand.Rand, step int64) ulid.ULID { - headOpts := tsdb.DefaultHeadOptions() - headOpts.ChunkDirRoot = dir - headOpts.ChunkRange = int64(totalSamples) * step - h, err := tsdb.NewHead(nil, nil, nil, nil, headOpts, nil) - assert.NoError(t, err) - defer func() { assert.NoError(t, h.Close()) }() - - app := h.Appender(context.Background()) - - ts := int64(blockIndex * totalSamples) - ref, err := app.Append(0, lbls, ts, random.Float64()) - assert.NoError(t, err) - for i := 1; i < totalSamples; i++ { - _, err := app.Append(ref, lbls, ts+step*int64(i), random.Float64()) - assert.NoError(t, err) - } - assert.NoError(t, app.Commit()) - - return createBlockFromHead(t, dir, h) -} - func setupStoreForHintsTest(t *testing.T, maxSeriesPerBatch int, opts ...BucketStoreOption) (test.TB, *BucketStore, []*storepb.Series, []*storepb.Series, ulid.ULID, ulid.ULID, func()) { tb := test.NewTB(t) @@ -2692,58 +2634,6 @@ func labelNamesFromSeriesSet(series []*storepb.Series) []string { return labels } -func BenchmarkBucketBlock_readChunkRange(b *testing.B) { - var ( - ctx = context.Background() - logger = log.NewNopLogger() - - // Read chunks of different length. We're not using random to make the benchmark repeatable. - readLengths = []int64{300, 500, 1000, 5000, 10000, 30000, 50000, 100000, 300000, 1500000} - ) - - tmpDir := b.TempDir() - - bkt, err := filesystem.NewBucket(filepath.Join(tmpDir, "bkt")) - assert.NoError(b, err) - b.Cleanup(func() { - assert.NoError(b, bkt.Close()) - }) - - // Create a block. - blockID := createBlockWithOneSeriesWithStep(test.NewTB(b), tmpDir, labels.FromStrings("__name__", "test"), 0, 100000, rand.New(rand.NewSource(0)), 5000) - - // Upload the block to the bucket. - thanosMeta := metadata.Thanos{ - Labels: labels.FromStrings("ext1", "1").Map(), - Source: metadata.TestSource, - } - - blockMeta, err := metadata.InjectThanos(logger, filepath.Join(tmpDir, blockID.String()), thanosMeta, nil) - assert.NoError(b, err) - - assert.NoError(b, block.Upload(context.Background(), logger, bkt, filepath.Join(tmpDir, blockID.String()), nil)) - - // Create a chunk pool with buckets between 8B and 32KB. - chunkPool, err := pool.NewBucketedBytes(8, 32*1024, 2, 1e10) - assert.NoError(b, err) - - // Create a bucket block with only the dependencies we need for the benchmark. - blk, err := newBucketBlock(context.Background(), "tenant", logger, NewBucketStoreMetrics(nil), blockMeta, bkt, tmpDir, nil, chunkPool, nil, blockPartitioners{}) - assert.NoError(b, err) - - b.ResetTimer() - - for n := 0; n < b.N; n++ { - offset := int64(0) - length := readLengths[n%len(readLengths)] - - _, err := blk.readChunkRange(ctx, 0, offset, length, byteRanges{{offset: 0, length: int(length)}}) - if err != nil { - b.Fatal(err.Error()) - } - } -} - type headGenOptions struct { TSDBDir string SamplesPerSeries, Series int diff --git a/pkg/storegateway/chunk_bytes_pool.go b/pkg/storegateway/chunk_bytes_pool.go deleted file mode 100644 index bf134f206a4..00000000000 --- a/pkg/storegateway/chunk_bytes_pool.go +++ /dev/null @@ -1,56 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-only -// Provenance-includes-location: https://github.com/cortexproject/cortex/blob/master/pkg/storegateway/chunk_bytes_pool.go -// Provenance-includes-license: Apache-2.0 -// Provenance-includes-copyright: The Cortex Authors. - -package storegateway - -import ( - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/promauto" - - "github.com/grafana/mimir/pkg/util/pool" -) - -type chunkBytesPool struct { - pool *pool.BucketedBytes - - // Metrics. - requestedBytes prometheus.Counter - returnedBytes prometheus.Counter -} - -func newChunkBytesPool(minBucketSize, maxBucketSize int, maxChunkPoolBytes uint64, reg prometheus.Registerer) (*chunkBytesPool, error) { - upstream, err := pool.NewBucketedBytes(minBucketSize, maxBucketSize, 2, maxChunkPoolBytes) - if err != nil { - return nil, err - } - - return &chunkBytesPool{ - pool: upstream, - requestedBytes: promauto.With(reg).NewCounter(prometheus.CounterOpts{ - Name: "cortex_bucket_store_chunk_pool_requested_bytes_total", - Help: "Total bytes requested to chunk bytes pool.", - }), - returnedBytes: promauto.With(reg).NewCounter(prometheus.CounterOpts{ - Name: "cortex_bucket_store_chunk_pool_returned_bytes_total", - Help: "Total bytes returned by the chunk bytes pool.", - }), - }, nil -} - -func (p *chunkBytesPool) Get(sz int) (*[]byte, error) { - buffer, err := p.pool.Get(sz) - if err != nil { - return buffer, err - } - - p.requestedBytes.Add(float64(sz)) - p.returnedBytes.Add(float64(cap(*buffer))) - - return buffer, err -} - -func (p *chunkBytesPool) Put(b *[]byte) { - p.pool.Put(b) -} diff --git a/pkg/storegateway/chunk_bytes_pool_test.go b/pkg/storegateway/chunk_bytes_pool_test.go deleted file mode 100644 index 86a531e24bc..00000000000 --- a/pkg/storegateway/chunk_bytes_pool_test.go +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-only -// Provenance-includes-location: https://github.com/cortexproject/cortex/blob/master/pkg/storegateway/chunk_bytes_pool_test.go -// Provenance-includes-license: Apache-2.0 -// Provenance-includes-copyright: The Cortex Authors. - -package storegateway - -import ( - "bytes" - "fmt" - "testing" - - "github.com/prometheus/client_golang/prometheus" - "github.com/prometheus/client_golang/prometheus/testutil" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - mimir_tsdb "github.com/grafana/mimir/pkg/storage/tsdb" -) - -func TestChunkBytesPool_Get(t *testing.T) { - reg := prometheus.NewPedanticRegistry() - p, err := newChunkBytesPool(mimir_tsdb.ChunkPoolDefaultMinBucketSize, mimir_tsdb.ChunkPoolDefaultMaxBucketSize, 0, reg) - require.NoError(t, err) - - _, err = p.Get(mimir_tsdb.EstimatedMaxChunkSize - 1) - require.NoError(t, err) - - _, err = p.Get(mimir_tsdb.EstimatedMaxChunkSize + 1) - require.NoError(t, err) - - assert.NoError(t, testutil.GatherAndCompare(reg, bytes.NewBufferString(fmt.Sprintf(` - # HELP cortex_bucket_store_chunk_pool_requested_bytes_total Total bytes requested to chunk bytes pool. - # TYPE cortex_bucket_store_chunk_pool_requested_bytes_total counter - cortex_bucket_store_chunk_pool_requested_bytes_total %d - - # HELP cortex_bucket_store_chunk_pool_returned_bytes_total Total bytes returned by the chunk bytes pool. - # TYPE cortex_bucket_store_chunk_pool_returned_bytes_total counter - cortex_bucket_store_chunk_pool_returned_bytes_total %d - `, mimir_tsdb.EstimatedMaxChunkSize*2, mimir_tsdb.EstimatedMaxChunkSize*3)))) -} diff --git a/pkg/storegateway/io.go b/pkg/storegateway/io.go index 0387810280e..92b411a59d8 100644 --- a/pkg/storegateway/io.go +++ b/pkg/storegateway/io.go @@ -9,124 +9,8 @@ import ( "bufio" "fmt" "io" - - "github.com/pkg/errors" -) - -const ( - readerBufferSize = 32 * 1024 ) -// byteRange holds information about a single byte range. -type byteRange struct { - offset int - length int -} - -// byteRanges holds a list of non-overlapping byte ranges sorted by offset. -type byteRanges []byteRange - -// size returns the total number of bytes in the byte ranges. -func (r byteRanges) size() int { - size := 0 - for _, c := range r { - size += c.length - } - return size -} - -// areContiguous returns whether all byte ranges are contiguous (no gaps). -func (r byteRanges) areContiguous() bool { - if len(r) < 2 { - return true - } - - for off, idx := r[0].offset+r[0].length, 1; idx < len(r); idx++ { - if r[idx].offset != off { - return false - } - off += r[idx].length - } - return true -} - -// readByteRanges reads the provided byteRanges from src and append them to dst. The provided -// byteRanges must be sorted by offset and non overlapping. The byteRanges offset must be -// relative to the beginning of the provided src (offset 0 == first byte will be read from src). -func readByteRanges(src io.Reader, dst []byte, byteRanges byteRanges) ([]byte, error) { - if len(byteRanges) == 0 { - return nil, nil - } - - // Ensure the provided dst buffer has enough capacity. - expectedSize := byteRanges.size() - if cap(dst) < expectedSize { - return nil, io.ErrShortBuffer - } - - // Size the destination buffer accordingly. - dst = dst[0:expectedSize] - - // Optimisation for the case all ranges are contiguous. - if byteRanges[0].offset == 0 && byteRanges.areContiguous() { - // We get an ErrUnexpectedEOF if EOF is reached before we fill allocated dst slice. - // Due to how the reading logic works in the bucket store, we may try to overread at - // the end of an object, so we consider it legit. - if _, err := io.ReadFull(src, dst); err != nil && !errors.Is(err, io.ErrUnexpectedEOF) { - return nil, err - } - return dst, nil - } - - // To keep implementation easier we frequently call Read() for short lengths. - // In such scenario, having a buffered reader improves performances at the cost - // of 1 more buffer allocation and memory copy. - reader := bufio.NewReaderSize(src, readerBufferSize) - - for dstOffset, idx := 0, 0; idx < len(byteRanges); idx++ { - curr := byteRanges[idx] - - // Read and discard all bytes before the current chunk offset. - discard := 0 - if idx == 0 { - discard = curr.offset - } else { - prev := byteRanges[idx-1] - discard = curr.offset - (prev.offset + prev.length) - } - - if _, err := reader.Discard(discard); err != nil { - if errors.Is(err, io.EOF) { - err = io.ErrUnexpectedEOF - } - return nil, errors.Wrap(err, "discard bytes") - } - - // At this point the next byte to read from the reader is the current chunk, - // so we'll read it fully. io.ReadFull() returns an error if less bytes than - // expected have been read. - readBytes, err := io.ReadFull(reader, dst[dstOffset:dstOffset+curr.length]) - if readBytes > 0 { - dstOffset += readBytes - } - if err != nil { - // We get an ErrUnexpectedEOF if EOF is reached before we fill the slice. - // Due to how the reading logic works in the bucket store, we may try to overread - // the last byte range so, if the error occurrs on the last one, we consider it legit. - if errors.Is(err, io.ErrUnexpectedEOF) && idx == len(byteRanges)-1 { - return dst, nil - } - - if errors.Is(err, io.EOF) { - err = io.ErrUnexpectedEOF - } - return nil, errors.Wrap(err, "read byte range") - } - } - - return dst, nil -} - type offsetTrackingReader struct { offset uint64 r *bufio.Reader diff --git a/pkg/storegateway/io_test.go b/pkg/storegateway/io_test.go deleted file mode 100644 index 525734368b4..00000000000 --- a/pkg/storegateway/io_test.go +++ /dev/null @@ -1,150 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-only -// Provenance-includes-location: https://github.com/thanos-io/thanos/blob/main/pkg/store/io_test.go -// Provenance-includes-license: Apache-2.0 -// Provenance-includes-copyright: The Thanos Authors. - -package storegateway - -import ( - "bytes" - "io" - "testing" - - "github.com/pkg/errors" - "github.com/stretchr/testify/assert" -) - -func TestByteRanges_contiguous(t *testing.T) { - tests := []struct { - ranges byteRanges - expected bool - }{ - { - ranges: nil, - expected: true, - }, { - ranges: byteRanges{{offset: 10, length: 5}}, - expected: true, - }, { - ranges: byteRanges{{offset: 10, length: 5}, {offset: 15, length: 3}, {offset: 18, length: 2}}, - expected: true, - }, { - ranges: byteRanges{{offset: 10, length: 3}, {offset: 15, length: 3}, {offset: 18, length: 2}}, - expected: false, - }, { - ranges: byteRanges{{offset: 10, length: 5}, {offset: 15, length: 3}, {offset: 19, length: 2}}, - expected: false, - }, - } - - for _, tc := range tests { - assert.Equal(t, tc.expected, tc.ranges.areContiguous()) - } -} - -func TestReadByteRanges(t *testing.T) { - tests := map[string]struct { - src []byte - ranges byteRanges - expectedRead []byte - expectedErr error - }{ - "no ranges": { - src: []byte(""), - ranges: nil, - expectedRead: nil, - }, - "single range with offset == 0": { - src: []byte("ABCDEFGHILMNOPQRSTUVZ"), - ranges: []byteRange{{offset: 0, length: 21}}, - expectedRead: []byte("ABCDEFGHILMNOPQRSTUVZ"), - }, - "single range with offset > 0": { - src: []byte("ABCDEFGHILMNOPQRSTUVZ"), - ranges: []byteRange{{offset: 10, length: 11}}, - expectedRead: []byte("MNOPQRSTUVZ"), - }, - "multiple contiguous ranges with first offset == 0": { - src: []byte("ABCDEFGHILMNOPQRSTUVZ"), - ranges: []byteRange{ - {offset: 0, length: 10}, - {offset: 10, length: 10}, - {offset: 20, length: 1}, - }, - expectedRead: []byte("ABCDEFGHILMNOPQRSTUVZ"), - }, - "multiple contiguous ranges with first offset > 0": { - src: []byte("ABCDEFGHILMNOPQRSTUVZ"), - ranges: []byteRange{ - {offset: 5, length: 5}, - {offset: 10, length: 10}, - {offset: 20, length: 1}, - }, - expectedRead: []byte("FGHILMNOPQRSTUVZ"), - }, - "multiple non-contiguous ranges": { - src: []byte("ABCDEFGHILMNOPQRSTUVZ"), - ranges: []byteRange{ - {offset: 0, length: 3}, - {offset: 10, length: 5}, - {offset: 16, length: 1}, - {offset: 20, length: 1}, - }, - expectedRead: []byte("ABCMNOPQSZ"), - }, - "discard bytes before the first range": { - src: []byte("ABCDEFGHILMNOPQRSTUVZ"), - ranges: []byteRange{ - {offset: 5, length: 16}, - }, - expectedRead: []byte("FGHILMNOPQRSTUVZ"), - }, - "discard bytes after the last range": { - src: []byte("ABCDEFGHILMNOPQRSTUVZ"), - ranges: []byteRange{ - {offset: 0, length: 16}, - }, - expectedRead: []byte("ABCDEFGHILMNOPQR"), - }, - "unexpected EOF while discarding bytes": { - src: []byte("ABCDEFGHILMNOPQRSTUVZ"), - ranges: []byteRange{ - {offset: 0, length: 16}, - {offset: 25, length: 5}, - }, - expectedErr: io.ErrUnexpectedEOF, - }, - "unexpected EOF while reading byte range": { - src: []byte("ABCDEFGHILMNOPQRSTUVZ"), - ranges: []byteRange{ - {offset: 20, length: 10}, - {offset: 40, length: 10}, - }, - expectedErr: io.ErrUnexpectedEOF, - }, - "unexpected EOF at the beginning of a byte range": { - src: []byte("ABCDEFGHILMNOPQRSTUVZ"), - ranges: []byteRange{ - {offset: 0, length: 10}, - {offset: 20, length: 1}, - {offset: 21, length: 10}, - }, - expectedErr: io.ErrUnexpectedEOF, - }, - } - - for testName, testData := range tests { - t.Run(testName, func(t *testing.T) { - actual := make([]byte, 0, 1024) - actual, err := readByteRanges(bytes.NewReader(testData.src), actual, testData.ranges) - - if testData.expectedErr != nil { - assert.Error(t, err) - assert.Equal(t, true, errors.Is(err, testData.expectedErr)) - } else { - assert.NoError(t, err) - assert.Equal(t, testData.expectedRead, actual) - } - }) - } -} diff --git a/pkg/util/pool/pool.go b/pkg/util/pool/pool.go index bfe50db455c..8702ddc48b1 100644 --- a/pkg/util/pool/pool.go +++ b/pkg/util/pool/pool.go @@ -7,8 +7,6 @@ package pool import ( "sync" - - "github.com/pkg/errors" ) // Interface defines the same functions of sync.Pool. @@ -24,125 +22,6 @@ type NoopPool struct{} func (NoopPool) Put(any) {} func (NoopPool) Get() any { return nil } -// Bytes is a pool of bytes that can be reused. -type Bytes interface { - // Get returns a new byte slices that fits the given size. - Get(sz int) (*[]byte, error) - // Put returns a byte slice to the right bucket in the pool. - Put(b *[]byte) -} - -// NoopBytes is pool that always allocated required slice on heap and ignore puts. -type NoopBytes struct{} - -func (p NoopBytes) Get(sz int) (*[]byte, error) { - b := make([]byte, 0, sz) - return &b, nil -} - -func (p NoopBytes) Put(*[]byte) {} - -// BucketedBytes is a bucketed pool for variably sized byte slices. It can be configured to not allow -// more than a maximum number of bytes being used at a given time. -// Every byte slice obtained from the pool must be returned. -type BucketedBytes struct { - buckets []sync.Pool - sizes []int - maxTotal uint64 - usedTotal uint64 - mtx sync.Mutex - - new func(s int) *[]byte -} - -// NewBucketedBytes returns a new Bytes with size buckets for minSize to maxSize -// increasing by the given factor and maximum number of used bytes. -// No more than maxTotal bytes can be used at any given time unless maxTotal is set to 0. -func NewBucketedBytes(minSize, maxSize int, factor float64, maxTotal uint64) (*BucketedBytes, error) { - if minSize < 1 { - return nil, errors.New("invalid minimum pool size") - } - if maxSize < 1 { - return nil, errors.New("invalid maximum pool size") - } - if factor < 1 { - return nil, errors.New("invalid factor") - } - - var sizes []int - - for s := minSize; s <= maxSize; s = int(float64(s) * factor) { - sizes = append(sizes, s) - } - p := &BucketedBytes{ - buckets: make([]sync.Pool, len(sizes)), - sizes: sizes, - maxTotal: maxTotal, - new: func(sz int) *[]byte { - s := make([]byte, 0, sz) - return &s - }, - } - return p, nil -} - -// ErrPoolExhausted is returned if a pool cannot provide the request bytes. -var ErrPoolExhausted = errors.New("pool exhausted") - -// Get returns a new byte slice that fits the given size. -func (p *BucketedBytes) Get(sz int) (*[]byte, error) { - p.mtx.Lock() - defer p.mtx.Unlock() - - if p.maxTotal > 0 && p.usedTotal+uint64(sz) > p.maxTotal { - return nil, ErrPoolExhausted - } - - for i, bktSize := range p.sizes { - if sz > bktSize { - continue - } - b, ok := p.buckets[i].Get().(*[]byte) - if !ok { - b = p.new(bktSize) - } - - p.usedTotal += uint64(cap(*b)) - return b, nil - } - - // The requested size exceeds that of our highest bucket, allocate it directly. - p.usedTotal += uint64(sz) - return p.new(sz), nil -} - -// Put returns a byte slice to the right bucket in the pool. -func (p *BucketedBytes) Put(b *[]byte) { - if b == nil { - return - } - - sz := cap(*b) - for i, bktSize := range p.sizes { - if sz > bktSize { - continue - } - *b = (*b)[:0] - p.buckets[i].Put(b) - break - } - - p.mtx.Lock() - defer p.mtx.Unlock() - // We could assume here that our users will not make the slices larger - // but lets be on the safe side to avoid an underflow of p.usedTotal. - if uint64(sz) >= p.usedTotal { - p.usedTotal = 0 - } else { - p.usedTotal -= uint64(sz) - } -} - // SlabPool wraps Interface and adds support to get a sub-slice of the data type T // from the pool, trying to fit the slices picked from the pool as much as possible. // diff --git a/pkg/util/pool/pool_test.go b/pkg/util/pool/pool_test.go index 840d028d121..d1547c6ea98 100644 --- a/pkg/util/pool/pool_test.go +++ b/pkg/util/pool/pool_test.go @@ -7,12 +7,10 @@ package pool import ( "math/rand" - "strings" "sync" "testing" "time" - "github.com/pkg/errors" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/goleak" @@ -22,116 +20,6 @@ func TestMain(m *testing.M) { goleak.VerifyTestMain(m) } -func TestBytesPool(t *testing.T) { - chunkPool, err := NewBucketedBytes(10, 100, 2, 1000) - require.NoError(t, err) - - require.Equal(t, []int{10, 20, 40, 80}, chunkPool.sizes) - - for i := 0; i < 10; i++ { - b, err := chunkPool.Get(40) - require.NoError(t, err) - - require.Equal(t, uint64(40), chunkPool.usedTotal) - - if i%2 == 0 { - for j := 0; j < 6; j++ { - *b = append(*b, []byte{'1', '2', '3', '4', '5'}...) - } - } - chunkPool.Put(b) - } - - for i := 0; i < 10; i++ { - b, err := chunkPool.Get(19) - require.NoError(t, err) - chunkPool.Put(b) - } - - // Outside of any bucket. - b, err := chunkPool.Get(1000) - require.NoError(t, err) - chunkPool.Put(b) - - // Check size limitation. - b1, err := chunkPool.Get(500) - require.NoError(t, err) - - b2, err := chunkPool.Get(600) - require.Error(t, err) - require.Equal(t, ErrPoolExhausted, err) - - chunkPool.Put(b1) - chunkPool.Put(b2) - - require.Equal(t, uint64(0), chunkPool.usedTotal) -} - -func TestRacePutGet(t *testing.T) { - chunkPool, err := NewBucketedBytes(3, 100, 2, 5000) - require.NoError(t, err) - - s := sync.WaitGroup{} - - const goroutines = 100 - - // Start multiple goroutines: they always Get and Put two byte slices - // to which they write their contents and check if the data is still - // there after writing it, before putting it back. - errs := make(chan error, goroutines) - stop := make(chan struct{}) - - f := func(txt string, grow bool) { - defer s.Done() - for { - select { - case <-stop: - return - default: - c, err := chunkPool.Get(len(txt)) - if err != nil { - errs <- errors.Wrapf(err, "goroutine %s", txt) - return - } - - *c = append(*c, txt...) - if string(*c) != txt { - errs <- errors.New("expected to get the data just written") - return - } - if grow { - *c = append(*c, txt...) - *c = append(*c, txt...) - if string(*c) != txt+txt+txt { - errs <- errors.New("expected to get the data just written") - return - } - } - - chunkPool.Put(c) - } - } - } - - for i := 0; i < goroutines; i++ { - s.Add(1) - // make sure we start multiple goroutines with same len buf requirements, to hit same pools - s := strings.Repeat(string(byte(i)), i%10) - // some of the goroutines will append more elements to the provided slice - grow := i%2 == 0 - go f(s, grow) - } - - time.Sleep(1 * time.Second) - close(stop) - s.Wait() - select { - case err := <-errs: - require.NoError(t, err) - default: - } -} - func TestSlabPool(t *testing.T) { t.Run("byte slices do not overlap when fit on the same slab", func(t *testing.T) { delegatePool := &TrackedPool{Parent: &sync.Pool{}}