7epRoP7d=iCQ;Q(O=h^+F%z0@Kaf`fz|BytIV6XPC+y9v9S$oCNbKe!!%Lxde7
zavSd`REwwyhY353VZIX`j=~Ybj^OeS7_60WFJbqhhfjc7Of9&Nu=|L7KjA+|%{Dwh
z*aIm2QGxa?t-#j9(U4(l`93oiakN}tG^V*Cdc?F1pBeGnS})!9>$YF(b<=9!O{;wx
zZH`5JPSA{Kd3MNb({fj~8Cot%6xdNc(irq>xmwjEZN9g~3>)57(~1N`j%}>+dVIRC
z#qiEDoO(+SMr`j4bG9DwYvZ(PPo>uhM-zazv9Yl-U^X_zf+2rnSPw=T17>4mWurFA
zibb4Y*zg7;j$uXgkXLuiaM0)B>cU{esnRMub$-8Ae}QV--|7vRl^#v=RC{g9=e-D#
z*J+O$wkKd}p#sp;cwBD{SLYBp;k24~w8w
zc=S-n^v%|-Kz5YkG*Uv6GAx(^zN~1(8KiM1X)L|XcC26|kPT1#1oHH~fX4|(wSGy|
zXGVOw6W_3VhBd7auin#UTCJM*0vn>8yyE82cIxX|{NUJs}
zJ3>p3v^JW}%}7~%o^f5Z+H6|WbYIJiR1O4u^YQBE=vFH>8YAUc*a(NsRYo>;B#v}N
zO-^N6R8)L@5L;PuFye2(7BE+vm<4&9qA3_}X#+3L-F+`$)Zuob<7IPCVLaT`snSTp
zEruRV5H>{hh^A#hif7O7$!UCv_R+uR-BfjORg_?bCm0Dj+JFnh5f-+U^-%87nBAh4
zcGZVZkC;s>44SN3j)5WIBDmm%n$hLY#e6d4l1=lJ>m(U`}Me)3cTO&
z$9ztFYl>y~gK1@G+U-FjU1k<
z43K4-&UrJT3s2eaGb5`O)Kq7aNx^2_Cx*iSyFG$WlBj8hrnKn6NQEbAMi=P8P$sh!
z4}0vq^Gq{T;RzT{1HQXFSx||j=*BX`aJ1s)u;YmsZSySg3d)4BIqZ0&
zD2|LSJl`Oe&DyY@3uLZg`0d4pWu})zS`!fcp(wc(Z{2;K5Y88`ew&`m%
z{1qOtNJ|`Cnh_(VJ)X1;h$nKkf7-b8*9V>XdL&@fRHtggr`yez8E%|`g^6#tSlR%x
z3_BJ!W~3BEjJ7(!)FADG7GsfVh5Q)P1|zKZJliW%zTj(ko++}!_C$=;j#ih2VNF3NtVbI~
z9<&&`A4vkHHugU};v=@+oYYw1nQiKRO-ThRE;k3;Xm^?ZJ@r&Gstvy&DbWc$Ki#xM
z4y2EffNzm$wPH7R>UGE0l4bYBhibQXPFqubta*AUX17#k^%!q!YKk>?dl{yf5;s(O
z;Z7%dfKn>6qV~7as%{
z)|?;_RU7Zp=^h8fJ5e-DVQc(}(Ko%BCLfcjOT-$V64GtkV+U_CeE2VINctzW5pgU%
zR1yD!gLrji(@+z~&-*q@eyCeUb1)R@_WVrjU~idj8Ad8EBSu@|Atz=n-qHC59I%Y`
zgv_W5-jWzUbX~m8r<+!t-*0LB0)VH#|K%rh7~W8hFBQAu$-CizubBJt=E2Z
nwrt*akG}JEuf^j3c39qV{P%g$Z~boo00960wMV$G0Wkmof30n*
literal 0
HcmV?d00001
diff --git a/pkg/test/integration/helper.go b/pkg/test/integration/helper.go
index 844d899f51..dd95e619af 100644
--- a/pkg/test/integration/helper.go
+++ b/pkg/test/integration/helper.go
@@ -88,6 +88,7 @@ func (p *PyroscopeTest) Start(t *testing.T) {
p.config.MemberlistKV.AdvertisePort = p.memberlistPort
p.config.MemberlistKV.TCPTransport.BindPort = p.memberlistPort
p.config.Ingester.LifecyclerConfig.Addr = address
+ p.config.Ingester.LifecyclerConfig.MinReadyDuration = 0
p.config.QueryScheduler.ServiceDiscovery.SchedulerRing.InstanceAddr = address
p.config.Frontend.Addr = address
From ca28b5b223e88003e4911118dd37f68b5628c047 Mon Sep 17 00:00:00 2001
From: Christian Simon
Date: Wed, 31 Jul 2024 16:31:37 +0100
Subject: [PATCH 31/43] Ensure data folder for compactor exists (#3455)
This apparently was missed in #2875
```
ts=2024-07-31T14:22:52.491454333Z caller=compactor.go:646 level=error component=compactor component=compactor msg="failed to compact user blocks" tenant=anonymous err="mkdir data-compactor: permission denied"
```
---
cmd/pyroscope/Dockerfile | 2 ++
cmd/pyroscope/debug.Dockerfile | 7 +++++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/cmd/pyroscope/Dockerfile b/cmd/pyroscope/Dockerfile
index 811dd4de69..edf7d0b8ff 100644
--- a/cmd/pyroscope/Dockerfile
+++ b/cmd/pyroscope/Dockerfile
@@ -14,6 +14,8 @@ COPY --from=debug /etc/group /etc/group
# in order for the container to run as non-root.
VOLUME /data
COPY --chown=pyroscope:pyroscope --from=debug /data /data
+VOLUME /data-compactor
+COPY --chown=pyroscope:pyroscope --from=debug /data /data-compactor
COPY cmd/pyroscope/pyroscope.yaml /etc/pyroscope/config.yaml
COPY profilecli /usr/bin/profilecli
diff --git a/cmd/pyroscope/debug.Dockerfile b/cmd/pyroscope/debug.Dockerfile
index 7569517e33..e3be6ef60d 100644
--- a/cmd/pyroscope/debug.Dockerfile
+++ b/cmd/pyroscope/debug.Dockerfile
@@ -5,10 +5,13 @@ SHELL [ "/busybox/sh", "-c" ]
RUN addgroup -g 10001 -S pyroscope && \
adduser -u 10001 -S pyroscope -G pyroscope -h /data
-# Copy folder from debug container, this folder needs to have the correct UID
-# in order for the container to run as non-root.
+# This folder is created by adduser command with right owner/group
VOLUME /data
+# This folder needs to be created and set to the right owner/group
+VOLUME /data-compactor
+RUN mkdir -p /data-compactor && chown pyroscope:pyroscope /data /data-compactor
+
COPY .tmp/bin/linux_amd64/dlv /usr/bin/dlv
COPY cmd/pyroscope/pyroscope.yaml /etc/pyroscope/config.yaml
COPY profilecli /usr/bin/profilecli
From 857ec2e4b24f0fe69ee48ff63ffd6c725cef0224 Mon Sep 17 00:00:00 2001
From: Tolya Korniltsev
Date: Wed, 31 Jul 2024 19:42:37 +0200
Subject: [PATCH 32/43] fix(docs): remove old
GF_FEATURE_TOGGLES_ENABLE=flameGraph (#3446)
---
docs/sources/deploy-kubernetes/helm.md | 2 +-
docs/sources/get-started/_index.md | 11 ++++++++---
tools/grafana-phlare | 2 +-
3 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/docs/sources/deploy-kubernetes/helm.md b/docs/sources/deploy-kubernetes/helm.md
index dfc842c0dd..e6c951bd6f 100644
--- a/docs/sources/deploy-kubernetes/helm.md
+++ b/docs/sources/deploy-kubernetes/helm.md
@@ -123,7 +123,7 @@ Use a custom namespace so that you don't have to overwrite the default namespace
helm upgrade -n pyroscope-test --install grafana grafana/grafana \
--set image.repository=grafana/grafana \
--set image.tag=main \
- --set env.GF_FEATURE_TOGGLES_ENABLE=flameGraph \
+ --set env.GF_INSTALL_PLUGINS=grafana-pyroscope-app \
--set env.GF_AUTH_ANONYMOUS_ENABLED=true \
--set env.GF_AUTH_ANONYMOUS_ORG_ROLE=Admin \
--set env.GF_DIAGNOSTICS_PROFILING_ENABLED=true \
diff --git a/docs/sources/get-started/_index.md b/docs/sources/get-started/_index.md
index 2ee0668879..820397f8ba 100644
--- a/docs/sources/get-started/_index.md
+++ b/docs/sources/get-started/_index.md
@@ -83,13 +83,18 @@ Verify that you have installed [Docker](https://docs.docker.com/engine/install/)
1. In a new terminal, run a local Grafana server using Docker:
```bash
- docker run --rm --name=grafana -p 3000:3000 -e "GF_FEATURE_TOGGLES_ENABLE=flameGraph" --network=pyroscope-demo grafana/grafana:main
+ docker run --rm --name=grafana \
+ --network=pyroscope-demo \
+ -p 3000:3000 \
+ -e "GF_INSTALL_PLUGINS=grafana-pyroscope-app"\
+ -e "GF_AUTH_ANONYMOUS_ENABLED=true" \
+ -e "GF_AUTH_ANONYMOUS_ORG_ROLE=Admin" \
+ -e "GF_AUTH_DISABLE_LOGIN_FORM=true" \
+ grafana/grafana:main
```
1. In a browser, go to the Grafana server at [http://localhost:3000/datasources](http://localhost:3000/datasources).
-1. Sign in using the default username `admin` and password `admin`.
-
1. Use the following settings to configure a Pyroscope data source to query the local Pyroscope server:
| Field | Value |
diff --git a/tools/grafana-phlare b/tools/grafana-phlare
index 17a8216316..31585c5a38 100755
--- a/tools/grafana-phlare
+++ b/tools/grafana-phlare
@@ -35,7 +35,7 @@ docker run $DOCKER_ARGS --rm \
-v "${datasource_provisioning}:/etc/grafana/provisioning/datasources/phlare.yaml:ro" \
-v "$(pwd)"/grafana/phlare-datasource/dist:/var/lib/grafana/plugins/phlare-datasource \
-v "$(pwd)"/grafana/flamegraph/dist:/var/lib/grafana/plugins/flamegraph \
- -e GF_FEATURE_TOGGLES_ENABLE=flameGraph \
+ -e GF_INSTALL_PLUGINS=grafana-pyroscope-app \
-e GF_INSTALL_PLUGINS=pyroscope-datasource,pyroscope-panel \
-e GF_DEFAULT_APP_MODE=development \
-e GF_AUTH_ANONYMOUS_ENABLED=true \
From 07e75f0178b8876de206d6e774e5dbe1c8eaa775 Mon Sep 17 00:00:00 2001
From: Aleksandar Petrov <8142643+aleks-p@users.noreply.github.com>
Date: Thu, 1 Aug 2024 08:09:10 -0300
Subject: [PATCH 33/43] Bump Helm chart to point to 1.7.1 (#3458)
---
.../pyroscope/helm/pyroscope/Chart.yaml | 4 +-
operations/pyroscope/helm/pyroscope/README.md | 2 +-
.../rendered/micro-services-hpa.yaml | 184 ++++++++--------
.../pyroscope/rendered/micro-services.yaml | 208 +++++++++---------
.../pyroscope/rendered/single-binary.yaml | 48 ++--
5 files changed, 223 insertions(+), 223 deletions(-)
diff --git a/operations/pyroscope/helm/pyroscope/Chart.yaml b/operations/pyroscope/helm/pyroscope/Chart.yaml
index 5263182e6a..05739c101c 100644
--- a/operations/pyroscope/helm/pyroscope/Chart.yaml
+++ b/operations/pyroscope/helm/pyroscope/Chart.yaml
@@ -2,8 +2,8 @@ apiVersion: v2
name: pyroscope
description: 🔥 horizontally-scalable, highly-available, multi-tenant continuous profiling aggregation system
type: application
-version: 1.6.1
-appVersion: 1.6.1
+version: 1.7.1
+appVersion: 1.7.1
dependencies:
- name: grafana-agent
alias: agent
diff --git a/operations/pyroscope/helm/pyroscope/README.md b/operations/pyroscope/helm/pyroscope/README.md
index 1d5cfd3c04..50baeb59e2 100644
--- a/operations/pyroscope/helm/pyroscope/README.md
+++ b/operations/pyroscope/helm/pyroscope/README.md
@@ -1,6 +1,6 @@
# pyroscope
-![Version: 1.6.1](https://img.shields.io/badge/Version-1.6.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.6.1](https://img.shields.io/badge/AppVersion-1.6.1-informational?style=flat-square)
+![Version: 1.7.1](https://img.shields.io/badge/Version-1.7.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.7.1](https://img.shields.io/badge/AppVersion-1.7.1-informational?style=flat-square)
🔥 horizontally-scalable, highly-available, multi-tenant continuous profiling aggregation system
diff --git a/operations/pyroscope/helm/pyroscope/rendered/micro-services-hpa.yaml b/operations/pyroscope/helm/pyroscope/rendered/micro-services-hpa.yaml
index baaeb4e426..8a706e88ef 100644
--- a/operations/pyroscope/helm/pyroscope/rendered/micro-services-hpa.yaml
+++ b/operations/pyroscope/helm/pyroscope/rendered/micro-services-hpa.yaml
@@ -6,10 +6,10 @@ metadata:
name: pyroscope-dev-compactor
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "compactor"
spec:
@@ -27,10 +27,10 @@ metadata:
name: pyroscope-dev-distributor
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "distributor"
spec:
@@ -48,10 +48,10 @@ metadata:
name: pyroscope-dev-ingester
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "ingester"
spec:
@@ -69,10 +69,10 @@ metadata:
name: pyroscope-dev-querier
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "querier"
spec:
@@ -90,10 +90,10 @@ metadata:
name: pyroscope-dev-query-frontend
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-frontend"
spec:
@@ -111,10 +111,10 @@ metadata:
name: pyroscope-dev-query-scheduler
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-scheduler"
spec:
@@ -132,10 +132,10 @@ metadata:
name: pyroscope-dev-store-gateway
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "store-gateway"
spec:
@@ -176,10 +176,10 @@ metadata:
name: pyroscope-dev
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
---
# Source: pyroscope/charts/minio/templates/secrets.yaml
@@ -523,10 +523,10 @@ metadata:
name: alloy-config-pyroscope
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
data:
config.alloy: |
@@ -1363,10 +1363,10 @@ metadata:
name: pyroscope-dev-overrides-config
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
data:
overrides.yaml: |
@@ -1380,10 +1380,10 @@ metadata:
name: pyroscope-dev-config
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
data:
config.yaml: |
@@ -1503,10 +1503,10 @@ metadata:
name: default-pyroscope-dev
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
@@ -1553,10 +1553,10 @@ metadata:
name: default-pyroscope-dev
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
roleRef:
apiGroup: rbac.authorization.k8s.io
@@ -1700,10 +1700,10 @@ metadata:
name: pyroscope-dev-memberlist
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
spec:
type: ClusterIP
@@ -1727,10 +1727,10 @@ metadata:
name: pyroscope-dev-compactor
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "compactor"
spec:
@@ -1752,10 +1752,10 @@ metadata:
name: pyroscope-dev-compactor-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "compactor"
spec:
@@ -1778,10 +1778,10 @@ metadata:
name: pyroscope-dev-distributor
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "distributor"
spec:
@@ -1803,10 +1803,10 @@ metadata:
name: pyroscope-dev-distributor-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "distributor"
spec:
@@ -1829,10 +1829,10 @@ metadata:
name: pyroscope-dev-ingester
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "ingester"
spec:
@@ -1854,10 +1854,10 @@ metadata:
name: pyroscope-dev-ingester-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "ingester"
spec:
@@ -1880,10 +1880,10 @@ metadata:
name: pyroscope-dev-querier
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "querier"
spec:
@@ -1905,10 +1905,10 @@ metadata:
name: pyroscope-dev-querier-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "querier"
spec:
@@ -1931,10 +1931,10 @@ metadata:
name: pyroscope-dev-query-frontend
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-frontend"
spec:
@@ -1956,10 +1956,10 @@ metadata:
name: pyroscope-dev-query-frontend-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-frontend"
spec:
@@ -1982,10 +1982,10 @@ metadata:
name: pyroscope-dev-query-scheduler
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-scheduler"
spec:
@@ -2007,10 +2007,10 @@ metadata:
name: pyroscope-dev-query-scheduler-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-scheduler"
spec:
@@ -2033,10 +2033,10 @@ metadata:
name: pyroscope-dev-store-gateway
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "store-gateway"
spec:
@@ -2058,10 +2058,10 @@ metadata:
name: pyroscope-dev-store-gateway-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "store-gateway"
spec:
@@ -2084,10 +2084,10 @@ metadata:
name: pyroscope-dev-distributor
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "distributor"
spec:
@@ -2099,7 +2099,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -2122,7 +2122,7 @@ spec:
- name: "distributor"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=distributor"
@@ -2177,10 +2177,10 @@ metadata:
name: pyroscope-dev-querier
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "querier"
spec:
@@ -2192,7 +2192,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -2215,7 +2215,7 @@ spec:
- name: "querier"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=querier"
@@ -2270,10 +2270,10 @@ metadata:
name: pyroscope-dev-query-frontend
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-frontend"
spec:
@@ -2285,7 +2285,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -2308,7 +2308,7 @@ spec:
- name: "query-frontend"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=query-frontend"
@@ -2363,10 +2363,10 @@ metadata:
name: pyroscope-dev-query-scheduler
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-scheduler"
spec:
@@ -2378,7 +2378,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -2401,7 +2401,7 @@ spec:
- name: "query-scheduler"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=query-scheduler"
@@ -2456,10 +2456,10 @@ metadata:
name: pyroscope-dev-distributor
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "distributor"
spec:
@@ -2484,10 +2484,10 @@ metadata:
name: pyroscope-dev-querier
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "querier"
spec:
@@ -2515,10 +2515,10 @@ metadata:
name: pyroscope-dev-query-frontend
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-frontend"
spec:
@@ -2543,10 +2543,10 @@ metadata:
name: pyroscope-dev-query-scheduler
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-scheduler"
spec:
@@ -2754,10 +2754,10 @@ metadata:
name: pyroscope-dev-compactor
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "compactor"
spec:
@@ -2772,7 +2772,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -2795,7 +2795,7 @@ spec:
- name: "compactor"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=compactor"
@@ -2855,10 +2855,10 @@ metadata:
name: pyroscope-dev-ingester
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "ingester"
spec:
@@ -2873,7 +2873,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -2896,7 +2896,7 @@ spec:
- name: "ingester"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=ingester"
@@ -2952,10 +2952,10 @@ metadata:
name: pyroscope-dev-store-gateway
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "store-gateway"
spec:
@@ -2970,7 +2970,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -2993,7 +2993,7 @@ spec:
- name: "store-gateway"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=store-gateway"
diff --git a/operations/pyroscope/helm/pyroscope/rendered/micro-services.yaml b/operations/pyroscope/helm/pyroscope/rendered/micro-services.yaml
index 0fb3233260..1a58cd3160 100644
--- a/operations/pyroscope/helm/pyroscope/rendered/micro-services.yaml
+++ b/operations/pyroscope/helm/pyroscope/rendered/micro-services.yaml
@@ -6,10 +6,10 @@ metadata:
name: pyroscope-dev-ad-hoc-profiles
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "ad-hoc-profiles"
spec:
@@ -27,10 +27,10 @@ metadata:
name: pyroscope-dev-compactor
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "compactor"
spec:
@@ -48,10 +48,10 @@ metadata:
name: pyroscope-dev-distributor
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "distributor"
spec:
@@ -69,10 +69,10 @@ metadata:
name: pyroscope-dev-ingester
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "ingester"
spec:
@@ -90,10 +90,10 @@ metadata:
name: pyroscope-dev-querier
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "querier"
spec:
@@ -111,10 +111,10 @@ metadata:
name: pyroscope-dev-query-frontend
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-frontend"
spec:
@@ -132,10 +132,10 @@ metadata:
name: pyroscope-dev-query-scheduler
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-scheduler"
spec:
@@ -153,10 +153,10 @@ metadata:
name: pyroscope-dev-store-gateway
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "store-gateway"
spec:
@@ -174,10 +174,10 @@ metadata:
name: pyroscope-dev-tenant-settings
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "tenant-settings"
spec:
@@ -218,10 +218,10 @@ metadata:
name: pyroscope-dev
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
---
# Source: pyroscope/charts/minio/templates/secrets.yaml
@@ -565,10 +565,10 @@ metadata:
name: alloy-config-pyroscope
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
data:
config.alloy: |
@@ -1405,10 +1405,10 @@ metadata:
name: pyroscope-dev-overrides-config
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
data:
overrides.yaml: |
@@ -1422,10 +1422,10 @@ metadata:
name: pyroscope-dev-config
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
data:
config.yaml: |
@@ -1545,10 +1545,10 @@ metadata:
name: default-pyroscope-dev
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
@@ -1595,10 +1595,10 @@ metadata:
name: default-pyroscope-dev
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
roleRef:
apiGroup: rbac.authorization.k8s.io
@@ -1742,10 +1742,10 @@ metadata:
name: pyroscope-dev-memberlist
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
spec:
type: ClusterIP
@@ -1769,10 +1769,10 @@ metadata:
name: pyroscope-dev-ad-hoc-profiles
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "ad-hoc-profiles"
spec:
@@ -1794,10 +1794,10 @@ metadata:
name: pyroscope-dev-ad-hoc-profiles-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "ad-hoc-profiles"
spec:
@@ -1820,10 +1820,10 @@ metadata:
name: pyroscope-dev-compactor
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "compactor"
spec:
@@ -1845,10 +1845,10 @@ metadata:
name: pyroscope-dev-compactor-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "compactor"
spec:
@@ -1871,10 +1871,10 @@ metadata:
name: pyroscope-dev-distributor
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "distributor"
spec:
@@ -1896,10 +1896,10 @@ metadata:
name: pyroscope-dev-distributor-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "distributor"
spec:
@@ -1922,10 +1922,10 @@ metadata:
name: pyroscope-dev-ingester
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "ingester"
spec:
@@ -1947,10 +1947,10 @@ metadata:
name: pyroscope-dev-ingester-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "ingester"
spec:
@@ -1973,10 +1973,10 @@ metadata:
name: pyroscope-dev-querier
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "querier"
spec:
@@ -1998,10 +1998,10 @@ metadata:
name: pyroscope-dev-querier-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "querier"
spec:
@@ -2024,10 +2024,10 @@ metadata:
name: pyroscope-dev-query-frontend
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-frontend"
spec:
@@ -2049,10 +2049,10 @@ metadata:
name: pyroscope-dev-query-frontend-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-frontend"
spec:
@@ -2075,10 +2075,10 @@ metadata:
name: pyroscope-dev-query-scheduler
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-scheduler"
spec:
@@ -2100,10 +2100,10 @@ metadata:
name: pyroscope-dev-query-scheduler-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-scheduler"
spec:
@@ -2126,10 +2126,10 @@ metadata:
name: pyroscope-dev-store-gateway
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "store-gateway"
spec:
@@ -2151,10 +2151,10 @@ metadata:
name: pyroscope-dev-store-gateway-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "store-gateway"
spec:
@@ -2177,10 +2177,10 @@ metadata:
name: pyroscope-dev-tenant-settings
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "tenant-settings"
spec:
@@ -2202,10 +2202,10 @@ metadata:
name: pyroscope-dev-tenant-settings-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "tenant-settings"
spec:
@@ -2228,10 +2228,10 @@ metadata:
name: pyroscope-dev-ad-hoc-profiles
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "ad-hoc-profiles"
spec:
@@ -2244,7 +2244,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -2267,7 +2267,7 @@ spec:
- name: "ad-hoc-profiles"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=ad-hoc-profiles"
@@ -2322,10 +2322,10 @@ metadata:
name: pyroscope-dev-distributor
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "distributor"
spec:
@@ -2338,7 +2338,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -2361,7 +2361,7 @@ spec:
- name: "distributor"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=distributor"
@@ -2416,10 +2416,10 @@ metadata:
name: pyroscope-dev-querier
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "querier"
spec:
@@ -2432,7 +2432,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -2455,7 +2455,7 @@ spec:
- name: "querier"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=querier"
@@ -2510,10 +2510,10 @@ metadata:
name: pyroscope-dev-query-frontend
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-frontend"
spec:
@@ -2526,7 +2526,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -2549,7 +2549,7 @@ spec:
- name: "query-frontend"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=query-frontend"
@@ -2604,10 +2604,10 @@ metadata:
name: pyroscope-dev-query-scheduler
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "query-scheduler"
spec:
@@ -2620,7 +2620,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -2643,7 +2643,7 @@ spec:
- name: "query-scheduler"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=query-scheduler"
@@ -2698,10 +2698,10 @@ metadata:
name: pyroscope-dev-tenant-settings
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "tenant-settings"
spec:
@@ -2714,7 +2714,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -2737,7 +2737,7 @@ spec:
- name: "tenant-settings"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=tenant-settings"
@@ -2975,10 +2975,10 @@ metadata:
name: pyroscope-dev-compactor
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "compactor"
spec:
@@ -2993,7 +2993,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -3016,7 +3016,7 @@ spec:
- name: "compactor"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=compactor"
@@ -3076,10 +3076,10 @@ metadata:
name: pyroscope-dev-ingester
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "ingester"
spec:
@@ -3094,7 +3094,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -3117,7 +3117,7 @@ spec:
- name: "ingester"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=ingester"
@@ -3173,10 +3173,10 @@ metadata:
name: pyroscope-dev-store-gateway
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "store-gateway"
spec:
@@ -3191,7 +3191,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: dde1479a6b672fba848d9db186796ead0de4454310cf8fdf8185339c47b35812
+ checksum/config: bda5e7377527f00be42d8f1af6aee522ee8f66d44079f0e684fe21731d983f7d
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -3214,7 +3214,7 @@ spec:
- name: "store-gateway"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=store-gateway"
diff --git a/operations/pyroscope/helm/pyroscope/rendered/single-binary.yaml b/operations/pyroscope/helm/pyroscope/rendered/single-binary.yaml
index 4f77e9a788..c85ac1b5d4 100644
--- a/operations/pyroscope/helm/pyroscope/rendered/single-binary.yaml
+++ b/operations/pyroscope/helm/pyroscope/rendered/single-binary.yaml
@@ -6,10 +6,10 @@ metadata:
name: pyroscope-dev
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "all"
spec:
@@ -43,10 +43,10 @@ metadata:
name: pyroscope-dev
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
---
# Source: pyroscope/templates/configmap-alloy.yaml
@@ -56,10 +56,10 @@ metadata:
name: alloy-config-pyroscope
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
data:
config.alloy: |
@@ -896,10 +896,10 @@ metadata:
name: pyroscope-dev-overrides-config
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
data:
overrides.yaml: |
@@ -913,10 +913,10 @@ metadata:
name: pyroscope-dev-config
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
data:
config.yaml: |
@@ -1029,10 +1029,10 @@ metadata:
name: default-pyroscope-dev
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
@@ -1079,10 +1079,10 @@ metadata:
name: default-pyroscope-dev
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
roleRef:
apiGroup: rbac.authorization.k8s.io
@@ -1158,10 +1158,10 @@ metadata:
name: pyroscope-dev-memberlist
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
spec:
type: ClusterIP
@@ -1185,10 +1185,10 @@ metadata:
name: pyroscope-dev
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "all"
spec:
@@ -1210,10 +1210,10 @@ metadata:
name: pyroscope-dev-headless
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "all"
spec:
@@ -1324,10 +1324,10 @@ metadata:
name: pyroscope-dev
namespace: default
labels:
- helm.sh/chart: pyroscope-1.6.1
+ helm.sh/chart: pyroscope-1.7.1
app.kubernetes.io/name: pyroscope
app.kubernetes.io/instance: pyroscope-dev
- app.kubernetes.io/version: "1.6.1"
+ app.kubernetes.io/version: "1.7.1"
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: "all"
spec:
@@ -1342,7 +1342,7 @@ spec:
template:
metadata:
annotations:
- checksum/config: 2e02966e7cf43f885ceda61ac06c802b5d711320b5f703275c7169ce21d1e92b
+ checksum/config: 83e85964754b7e0a989f7bc04af56b5994db1db5ac04cc51dbdddccdbeb9cc1a
profiles.grafana.com/cpu.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
profiles.grafana.com/goroutine.port_name: http2
@@ -1365,7 +1365,7 @@ spec:
- name: "pyroscope"
securityContext:
{}
- image: "grafana/pyroscope:1.6.1"
+ image: "grafana/pyroscope:1.7.1"
imagePullPolicy: IfNotPresent
args:
- "-target=all"
From c4ed96577d10d232331cad494898c8f9cefb23a5 Mon Sep 17 00:00:00 2001
From: Aleksandar Petrov <8142643+aleks-p@users.noreply.github.com>
Date: Thu, 1 Aug 2024 09:33:40 -0300
Subject: [PATCH 34/43] Add release notes for v1.7 (#3456)
* Add release notes for v1.7
* Apply suggestions from code review
Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>
---------
Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>
---
docs/sources/release-notes/v1-7.md | 61 ++++++++++++++++++++++++++++++
1 file changed, 61 insertions(+)
create mode 100644 docs/sources/release-notes/v1-7.md
diff --git a/docs/sources/release-notes/v1-7.md b/docs/sources/release-notes/v1-7.md
new file mode 100644
index 0000000000..e81fa0dde4
--- /dev/null
+++ b/docs/sources/release-notes/v1-7.md
@@ -0,0 +1,61 @@
+---
+title: Version 1.7 release notes
+menuTitle: V1.7
+description: Release notes for Grafana Pyroscope 1.7
+weight: 550
+---
+
+# Version 1.7 release notes
+
+We are excited to present Grafana Pyroscope 1.7.
+
+This release includes several new features:
+
+* The ability to relabel profiles at ingest time
+* Per-app (service) usage metrics
+* Stacktrace selectors for merge profile queries
+* Profile `pprof` export tailored to Go PGO
+
+Additionally, we've improved stability, performance, and documentation.
+
+Notable changes are listed below. For more details, check out the full 1.7.0 changelog: https://github.com/grafana/pyroscope/compare/v1.6.0...v1.7.0.
+
+## Improvements and updates
+
+Version 1.7 includes the following improvements and updates:
+
+* Ability to relabel profiles at ingest ([#3369](https://github.com/grafana/pyroscope/pull/3369))
+* Use Grafana Alloy (instead of Grafana Agent) in the Helm chart ([#3381](https://github.com/grafana/pyroscope/pull/3381))
+* Per-app usage metrics ([#3429](https://github.com/grafana/pyroscope/pull/3429))
+* Add stacktrace selectors to query merge ([#3412](https://github.com/grafana/pyroscope/pull/3412))
+* `pprof` export for Go PGO ([#3360](https://github.com/grafana/pyroscope/pull/3360))
+* Custom binary format for symdb ([#3138](https://github.com/grafana/pyroscope/pull/3138))
+* Repair truncated Go CPU profiles ([#3344](https://github.com/grafana/pyroscope/pull/3344))
+* Add initial load tests ([#3331](https://github.com/grafana/pyroscope/pull/3331))
+* Align default step for `/render` with Grafana ([#3326](https://github.com/grafana/pyroscope/pull/3326))
+* Allow use of different protocols in `profilecli` ([#3368](https://github.com/grafana/pyroscope/pull/3368))
+* Various performance improvements (#3395, #3345, #3349, #3351, #3386, #3348, #3358)
+* Improve readiness check for ingesters and frontend ([#3435](https://github.com/grafana/pyroscope/pull/3435))
+
+## Fixes
+
+Version 1.7 includes the following fixes:
+
+* Fix error handling in filterProfiles ([#3338](https://github.com/grafana/pyroscope/pull/3338))
+* Fix frontend header handling ([#3363](https://github.com/grafana/pyroscope/pull/3363))
+* Fix line numbers for pyspy ([#3337](https://github.com/grafana/pyroscope/pull/3337))
+* Don't compute delta on relabeled `godeltaprof` memory profiles ([#3398](https://github.com/grafana/pyroscope/pull/3398))
+* Honor stacktrace partitions at downsampling ([#3408](https://github.com/grafana/pyroscope/pull/3408))
+* Fix infinite loop in index writer ([#3356](https://github.com/grafana/pyroscope/pull/3356))
+
+## Documentation improvements
+
+Version 1.7 includes the following documentation updates:
+
+* Add a Grafana installation to all examples ([#3431](https://github.com/grafana/pyroscope/pull/3431))
+* Fix broken links ([#3440](https://github.com/grafana/pyroscope/pull/3440))
+* Remove `--stability-level` for Alloy v1.2 ([#3382](https://github.com/grafana/pyroscope/pull/3382))
+* Add parameters from otel-profiling-java ([#3444](https://github.com/grafana/pyroscope/pull/3444))
+* Add supported languages for eBPF ([#3434](https://github.com/grafana/pyroscope/pull/3434))
+* Link to supported languages ([#3432](https://github.com/grafana/pyroscope/pull/3432))
+* Update link to play.grafana.org ([#3433](https://github.com/grafana/pyroscope/pull/3433))
From 0e62d0902b65e5b8c8177523b3298dc0a78b4879 Mon Sep 17 00:00:00 2001
From: Christian Simon
Date: Thu, 1 Aug 2024 14:12:49 +0100
Subject: [PATCH 35/43] chore: Move paths from docs/phlare to docs/pyroscope
(#3460)
I had noticed a couple of paths, which still point to the old path
/docs/phlare instead of /docs/pyroscope
---
.github/workflows/publish-technical-documentation-next.yml | 2 +-
.github/workflows/publish-technical-documentation-release.yml | 2 +-
docs/Makefile | 2 +-
operations/pyroscope/helm/pyroscope/values.yaml | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/publish-technical-documentation-next.yml b/.github/workflows/publish-technical-documentation-next.yml
index a6f853c049..25fa4e1fe2 100644
--- a/.github/workflows/publish-technical-documentation-next.yml
+++ b/.github/workflows/publish-technical-documentation-next.yml
@@ -15,7 +15,7 @@ jobs:
uses: "actions/checkout@v3"
- name: "Build website"
run: |
- docker run -v ${PWD}/docs/sources:/hugo/content/docs/phlare/latest -e HUGO_REFLINKSERRORLEVEL=ERROR --rm grafana/docs-base:latest /bin/bash -c 'make hugo'
+ docker run -v ${PWD}/docs/sources:/hugo/content/docs/pyroscope/latest -e HUGO_REFLINKSERRORLEVEL=ERROR --rm grafana/docs-base:latest /bin/bash -c 'make hugo'
sync:
runs-on: "ubuntu-latest"
diff --git a/.github/workflows/publish-technical-documentation-release.yml b/.github/workflows/publish-technical-documentation-release.yml
index e0587cceb6..cd33b11ba8 100644
--- a/.github/workflows/publish-technical-documentation-release.yml
+++ b/.github/workflows/publish-technical-documentation-release.yml
@@ -17,7 +17,7 @@ jobs:
uses: "actions/checkout@v3"
- name: "Build website"
run: |
- docker run -v ${PWD}/docs/sources:/hugo/content/docs/phlare/latest -e HUGO_REFLINKSERRORLEVEL=ERROR --rm grafana/docs-base:latest /bin/bash -c 'make hugo'
+ docker run -v ${PWD}/docs/sources:/hugo/content/docs/pyroscope/latest -e HUGO_REFLINKSERRORLEVEL=ERROR --rm grafana/docs-base:latest /bin/bash -c 'make hugo'
sync:
runs-on: "ubuntu-latest"
diff --git a/docs/Makefile b/docs/Makefile
index 272be1340f..dfefedeea2 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -10,4 +10,4 @@ include docs.mk
.PHONY: test
test:
- docker run -v $(CURDIR)/sources:/hugo/content/docs/phlare/latest -e HUGO_REFLINKSERRORLEVEL=ERROR --rm grafana/docs-base:latest /bin/bash -c 'exec make hugo'
+ docker run -v $(CURDIR)/sources:/hugo/content/docs/pyroscope/latest -e HUGO_REFLINKSERRORLEVEL=ERROR --rm grafana/docs-base:latest /bin/bash -c 'exec make hugo'
diff --git a/operations/pyroscope/helm/pyroscope/values.yaml b/operations/pyroscope/helm/pyroscope/values.yaml
index 8f9a6317e8..b01cd0cdc9 100644
--- a/operations/pyroscope/helm/pyroscope/values.yaml
+++ b/operations/pyroscope/helm/pyroscope/values.yaml
@@ -47,7 +47,7 @@ pyroscope:
name: ""
podAnnotations:
- # Scrapes itself see https://grafana.com/docs/phlare/latest/operators-guide/deploy-kubernetes/#optional-scrape-your-own-workloads-profiles
+ # Scrapes itself see https://grafana.com/docs/pyroscope/latest/deploy-kubernetes/helm/#optional-scrape-your-own-workloads-profiles
profiles.grafana.com/memory.scrape: "true"
profiles.grafana.com/memory.port_name: http2
profiles.grafana.com/cpu.scrape: "true"
From 80e8ad3320c52ce315114f5db84bb86df707c6e6 Mon Sep 17 00:00:00 2001
From: Christian Simon
Date: Mon, 5 Aug 2024 10:16:55 +0100
Subject: [PATCH 36/43] chore: Add relabeling rules flags. (#3462)
This adds flags for the relabeling rules and also makes sure they will
show up in the documentation properly.
---
cmd/pyroscope/help-all.txt.tmpl | 4 +
.../index.md | 29 ++++++-
pkg/distributor/distributor.go | 8 +-
pkg/validation/limits.go | 28 +++----
pkg/validation/relabeling.go | 75 ++++++++++++++++++-
pkg/validation/validate.go | 2 +-
tools/doc-generator/main.go | 19 ++---
7 files changed, 125 insertions(+), 40 deletions(-)
diff --git a/cmd/pyroscope/help-all.txt.tmpl b/cmd/pyroscope/help-all.txt.tmpl
index bf47cbe097..122b9354d8 100644
--- a/cmd/pyroscope/help-all.txt.tmpl
+++ b/cmd/pyroscope/help-all.txt.tmpl
@@ -175,6 +175,10 @@ Usage of ./pyroscope:
Per-tenant allowed ingestion burst size (in sample size). Units in MB. The burst size refers to the per-distributor local rate limiter, and should be set at least to the maximum profile size expected in a single push request. (default 2)
-distributor.ingestion-rate-limit-mb float
Per-tenant ingestion rate limit in sample size per second. Units in MB. (default 4)
+ -distributor.ingestion-relabeling-default-rules-position value
+ Position of the default ingestion relabeling rules in relation to relabel rules from overrides. Valid values are 'first', 'last' or 'disabled'. (default "first")
+ -distributor.ingestion-relabeling-rules value
+ List of ingestion relabel configurations. The relabeling rules work the same way, as those of [Prometheus](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config). All rules are applied in the order they are specified. Note: In most situations, it is more effective to use relabeling directly in Grafana Alloy.
-distributor.ingestion-tenant-shard-size int
The tenant's shard size used by shuffle-sharding. Must be set both on ingesters and distributors. 0 disables shuffle sharding.
-distributor.push.timeout duration
diff --git a/docs/sources/configure-server/reference-configuration-parameters/index.md b/docs/sources/configure-server/reference-configuration-parameters/index.md
index a82eb486fe..f24d239132 100644
--- a/docs/sources/configure-server/reference-configuration-parameters/index.md
+++ b/docs/sources/configure-server/reference-configuration-parameters/index.md
@@ -1843,6 +1843,8 @@ The `limits` block configures default and per-tenant limits imposed by component
# CLI flag: -validation.max-profile-symbol-value-length
[max_profile_symbol_value_length: | default = 65535]
+distributor_usage_groups:
+
# Duration of the distributor aggregation window. Requires aggregation period to
# be specified. 0 to disable.
# CLI flag: -distributor.aggregation-window
@@ -1853,9 +1855,30 @@ The `limits` block configures default and per-tenant limits imposed by component
# CLI flag: -distributor.aggregation-period
[distributor_aggregation_period: | default = 0s]
-[ingestion_relabeling_rules: | default = ]
-
-[ingestion_relabeling_default_rules_position: | default = ""]
+# List of ingestion relabel configurations. The relabeling rules work the same
+# way, as those of
+# [Prometheus](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config).
+# All rules are applied in the order they are specified. Note: In most
+# situations, it is more effective to use relabeling directly in Grafana Alloy.
+# Example:
+# This example consists of two rules, the first one will drop all profiles
+# received with an label 'environment="secrets"' and the second rule will add
+# a label 'powered_by="Grafana Labs"' to all profile series.
+# ingestion_relabeling_rules:
+# - action: drop
+# regex: secret
+# source_labels:
+# - environment
+# - action: replace
+# replacement: grafana-labs
+# target_label: powered_by
+# CLI flag: -distributor.ingestion-relabeling-rules
+[ingestion_relabeling_rules: | default = []]
+
+# Position of the default ingestion relabeling rules in relation to relabel
+# rules from overrides. Valid values are 'first', 'last' or 'disabled'.
+# CLI flag: -distributor.ingestion-relabeling-default-rules-position
+[ingestion_relabeling_default_rules_position: | default = "first"]
# The tenant's shard size used by shuffle-sharding. Must be set both on
# ingesters and distributors. 0 disables shuffle sharding.
diff --git a/pkg/distributor/distributor.go b/pkg/distributor/distributor.go
index c8f3760591..1dcb39af16 100644
--- a/pkg/distributor/distributor.go
+++ b/pkg/distributor/distributor.go
@@ -413,8 +413,8 @@ func (d *Distributor) sendRequests(ctx context.Context, req *distributormodel.Pu
// Next we split profiles by labels and apply relabel rules.
profileSeries, bytesRelabelDropped, profilesRelabelDropped := extractSampleSeries(req, tenantID, usageGroups, d.limits.IngestionRelabelingRules(tenantID))
- validation.DiscardedBytes.WithLabelValues(string(validation.RelabelRules), tenantID).Add(bytesRelabelDropped)
- validation.DiscardedProfiles.WithLabelValues(string(validation.RelabelRules), tenantID).Add(profilesRelabelDropped)
+ validation.DiscardedBytes.WithLabelValues(string(validation.DroppedByRelabelRules), tenantID).Add(bytesRelabelDropped)
+ validation.DiscardedProfiles.WithLabelValues(string(validation.DroppedByRelabelRules), tenantID).Add(profilesRelabelDropped)
// Filter our series and profiles without samples.
for _, series := range profileSeries {
@@ -786,7 +786,7 @@ func extractSampleSeries(req *distributormodel.PushRequest, tenantID string, usa
if !keep {
bytesRelabelDropped += float64(raw.Profile.SizeVT())
profilesRelabelDropped++ // in this case we dropped a whole profile
- usageGroups.CountDiscardedBytes(string(validation.RelabelRules), int64(raw.Profile.SizeVT()))
+ usageGroups.CountDiscardedBytes(string(validation.DroppedByRelabelRules), int64(raw.Profile.SizeVT()))
continue
}
}
@@ -810,7 +810,7 @@ func extractSampleSeries(req *distributormodel.PushRequest, tenantID string, usa
if !keep {
droppedBytes := sampleSize(raw.Profile.Profile.StringTable, group.Samples)
bytesRelabelDropped += float64(droppedBytes)
- usageGroups.CountDiscardedBytes(string(validation.RelabelRules), droppedBytes)
+ usageGroups.CountDiscardedBytes(string(validation.DroppedByRelabelRules), droppedBytes)
continue
}
}
diff --git a/pkg/validation/limits.go b/pkg/validation/limits.go
index 57b5cc99a3..0f53afdf5d 100644
--- a/pkg/validation/limits.go
+++ b/pkg/validation/limits.go
@@ -8,7 +8,6 @@ import (
"github.com/pkg/errors"
"github.com/prometheus/common/model"
- "github.com/prometheus/prometheus/model/relabel"
"gopkg.in/yaml.v3"
"github.com/grafana/pyroscope/pkg/phlaredb/block"
@@ -22,14 +21,6 @@ const (
MinCompactorPartialBlockDeletionDelay = 4 * time.Hour
)
-type RulesPosition string
-
-const (
- RulePositionFirst RulesPosition = "first"
- RulePositionDisabled RulesPosition = "disabled"
- RulePositionLast RulesPosition = "last"
-)
-
// Limits describe all the limits for tenants; can be used to describe global default
// limits via flags, or per-tenant limits via yaml config.
// NOTE: we use custom `model.Duration` instead of standard `time.Duration` because,
@@ -58,8 +49,8 @@ type Limits struct {
DistributorAggregationPeriod model.Duration `yaml:"distributor_aggregation_period" json:"distributor_aggregation_period"`
// IngestionRelabelingRules allow to specify additional relabeling rules that get applied before a profile gets ingested. There are some default relabeling rules, which ensure consistency of profiling series. The position of the default rules can be contolled by IngestionRelabelingDefaultRulesPosition
- IngestionRelabelingRules []*relabel.Config `yaml:"ingestion_relabeling_rules" json:"ingestion_relabeling_rules"`
- IngestionRelabelingDefaultRulesPosition RulesPosition `yaml:"ingestion_relabeling_default_rules_position" json:"ingestion_relabeling_default_rules_position"`
+ IngestionRelabelingRules RelabelRules `yaml:"ingestion_relabeling_rules" json:"ingestion_relabeling_rules" category:"advanced"`
+ IngestionRelabelingDefaultRulesPosition RelabelRulesPosition `yaml:"ingestion_relabeling_default_rules_position" json:"ingestion_relabeling_default_rules_position" category:"advanced"`
// The tenant shard size determines the how many ingesters a particular
// tenant will be sharded to. Needs to be specified on distributors for
@@ -173,6 +164,12 @@ func (l *Limits) RegisterFlags(f *flag.FlagSet) {
_ = l.RejectOlderThan.Set("1h")
f.Var(&l.RejectOlderThan, "validation.reject-older-than", "This limits how far into the past profiling data can be ingested. This limit is enforced in the distributor. 0 to disable, defaults to 1h.")
+
+ _ = l.IngestionRelabelingDefaultRulesPosition.Set("first")
+ f.Var(&l.IngestionRelabelingDefaultRulesPosition, "distributor.ingestion-relabeling-default-rules-position", "Position of the default ingestion relabeling rules in relation to relabel rules from overrides. Valid values are 'first', 'last' or 'disabled'.")
+ _ = l.IngestionRelabelingRules.Set("[]")
+ f.Var(&l.IngestionRelabelingRules, "distributor.ingestion-relabeling-rules", "List of ingestion relabel configurations. The relabeling rules work the same way, as those of [Prometheus](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config). All rules are applied in the order they are specified. Note: In most situations, it is more effective to use relabeling directly in Grafana Alloy.")
+
}
// UnmarshalYAML implements the yaml.Unmarshaler interface.
@@ -198,11 +195,10 @@ func (l *Limits) UnmarshalYAML(unmarshal func(interface{}) error) error {
// Validate validates that this limits config is valid.
func (l *Limits) Validate() error {
- switch l.IngestionRelabelingDefaultRulesPosition {
- case "", RulePositionFirst, RulePositionLast, RulePositionDisabled:
- break
- default:
- return fmt.Errorf("invalid ingestion_relabeling_default_rules_position: %s", l.IngestionRelabelingDefaultRulesPosition)
+ if l.IngestionRelabelingDefaultRulesPosition != "" {
+ if err := l.IngestionRelabelingDefaultRulesPosition.Set(string(l.IngestionRelabelingDefaultRulesPosition)); err != nil {
+ return err
+ }
}
return nil
diff --git a/pkg/validation/relabeling.go b/pkg/validation/relabeling.go
index 1b9acdc562..58890b2541 100644
--- a/pkg/validation/relabeling.go
+++ b/pkg/validation/relabeling.go
@@ -1,8 +1,12 @@
package validation
import (
+ "encoding/json"
+ "fmt"
+
"github.com/prometheus/common/model"
"github.com/prometheus/prometheus/model/relabel"
+ "gopkg.in/yaml.v3"
)
var (
@@ -50,11 +54,78 @@ var (
}
)
+type RelabelRulesPosition string
+
+func (p *RelabelRulesPosition) Set(s string) error {
+ switch sp := RelabelRulesPosition(s); sp {
+ case RelabelRulePositionFirst, RelabelRulePositionLast, RelabelRulePositionDisabled:
+ *p = sp
+ return nil
+ }
+ return fmt.Errorf("invalid ingestion_relabeling_default_rules_position: %s", s)
+}
+
+func (p *RelabelRulesPosition) String() string {
+ return string(*p)
+}
+
+const (
+ RelabelRulePositionFirst RelabelRulesPosition = "first"
+ RelabelRulePositionDisabled RelabelRulesPosition = "disabled"
+ RelabelRulePositionLast RelabelRulesPosition = "last"
+)
+
+type RelabelRules []*relabel.Config
+
+func (p *RelabelRules) Set(s string) error {
+
+ v := []*relabel.Config{}
+ if err := yaml.Unmarshal([]byte(s), &v); err != nil {
+ return err
+ }
+
+ for idx, rule := range v {
+ if err := rule.Validate(); err != nil {
+ return fmt.Errorf("rule at pos %d is not valid: %w", idx, err)
+ }
+ }
+ *p = v
+ return nil
+}
+
+func (p RelabelRules) String() string {
+ yamlBytes, err := yaml.Marshal(p)
+ if err != nil {
+ panic(fmt.Errorf("error marshal yaml: %w", err))
+ }
+
+ temp := make([]interface{}, 0, len(p))
+ err = yaml.Unmarshal(yamlBytes, &temp)
+ if err != nil {
+ panic(fmt.Errorf("error unmarshal yaml: %w", err))
+ }
+
+ jsonBytes, err := json.Marshal(temp)
+ if err != nil {
+ panic(fmt.Errorf("error marshal json: %w", err))
+ }
+ return string(jsonBytes)
+}
+
+// ExampleDoc provides an example doc for this config, especially valuable since it's custom-unmarshaled.
+func (r RelabelRules) ExampleDoc() (comment string, yaml interface{}) {
+ return `This example consists of two rules, the first one will drop all profiles received with an label 'environment="secrets"' and the second rule will add a label 'powered_by="Grafana Labs"' to all profile series.`,
+ []map[string]interface{}{
+ {"action": "drop", "source_labels": []interface{}{"environment"}, "regex": "secret"},
+ {"action": "replace", "replacement": "grafana-labs", "target_label": "powered_by"},
+ }
+}
+
func (o *Overrides) IngestionRelabelingRules(tenantID string) []*relabel.Config {
l := o.getOverridesForTenant(tenantID)
// return only custom rules when default rules are disabled
- if l.IngestionRelabelingDefaultRulesPosition == RulePositionDisabled {
+ if l.IngestionRelabelingDefaultRulesPosition == RelabelRulePositionDisabled {
return l.IngestionRelabelingRules
}
@@ -65,7 +136,7 @@ func (o *Overrides) IngestionRelabelingRules(tenantID string) []*relabel.Config
rules := make([]*relabel.Config, 0, len(l.IngestionRelabelingRules)+len(defaultRelabelRules))
- if l.IngestionRelabelingDefaultRulesPosition == "" || l.IngestionRelabelingDefaultRulesPosition == RulePositionFirst {
+ if l.IngestionRelabelingDefaultRulesPosition == "" || l.IngestionRelabelingDefaultRulesPosition == RelabelRulePositionFirst {
rules = append(rules, defaultRelabelRules...)
return append(rules, l.IngestionRelabelingRules...)
}
diff --git a/pkg/validation/validate.go b/pkg/validation/validate.go
index 5aa320681c..ab7c0413f2 100644
--- a/pkg/validation/validate.go
+++ b/pkg/validation/validate.go
@@ -57,7 +57,7 @@ const (
QueryMissingTimeRange Reason = "missing_time_range"
// Those profiles were dropped because of relabeling rules
- RelabelRules Reason = "dropped_by_relabel_rules"
+ DroppedByRelabelRules Reason = "dropped_by_relabel_rules"
SeriesLimitErrorMsg = "Maximum active series limit exceeded (%d/%d), reduce the number of active streams (reduce labels or reduce label values), or contact your administrator to see if the limit can be increased"
MissingLabelsErrorMsg = "error at least one label pair is required per profile"
diff --git a/tools/doc-generator/main.go b/tools/doc-generator/main.go
index c178bd3fa0..7fa1bd8290 100644
--- a/tools/doc-generator/main.go
+++ b/tools/doc-generator/main.go
@@ -97,6 +97,7 @@ func generateBlocksMarkdown(blocks []*parse.ConfigBlock) string {
return md.string()
}
+//nolint:unused
func generateBlockMarkdown(blocks []*parse.ConfigBlock, blockName, fieldName string) string {
// Look for the requested block.
for _, block := range blocks {
@@ -159,21 +160,11 @@ func main() {
// Generate documentation markdown.
data := struct {
- ConfigFile string
- BlocksStorageConfigBlock string
- StoreGatewayConfigBlock string
- CompactorConfigBlock string
- QuerierConfigBlock string
- S3SSEConfigBlock string
- GeneratedFileWarning string
+ ConfigFile string
+ GeneratedFileWarning string
}{
- ConfigFile: generateBlocksMarkdown(blocks),
- BlocksStorageConfigBlock: generateBlockMarkdown(blocks, "blocks_storage_config", "blocks_storage"),
- StoreGatewayConfigBlock: generateBlockMarkdown(blocks, "store_gateway_config", "store_gateway"),
- CompactorConfigBlock: generateBlockMarkdown(blocks, "compactor_config", "compactor"),
- QuerierConfigBlock: generateBlockMarkdown(blocks, "querier_config", "querier"),
- S3SSEConfigBlock: generateBlockMarkdown(blocks, "s3_sse_config", "sse"),
- GeneratedFileWarning: "",
+ ConfigFile: generateBlocksMarkdown(blocks),
+ GeneratedFileWarning: "",
}
// Load the template file.
From 060b2b80032bbcd0b1cef726e68f0db1ff3fb496 Mon Sep 17 00:00:00 2001
From: Tolya Korniltsev
Date: Mon, 5 Aug 2024 11:55:31 +0200
Subject: [PATCH 37/43] chore: cleanup pkg/og/storage/segment (#3453)
* chore: cleanup pkg/og/storage/segment
Remove some unused pkg/og/storage/segment which are only referenced in
tess. This saves 40s of `make test` on my laptop.
* Update pkg/og/testing/time.go
Co-authored-by: Anton Kolesnikov
---------
Co-authored-by: Anton Kolesnikov
---
pkg/og/storage/segment/debug_vis.go | 145 ------
pkg/og/storage/segment/fuzz_test.go | 280 ----------
pkg/og/storage/segment/key_bech_test.go | 2 +
pkg/og/storage/segment/key_test.go | 1 +
pkg/og/storage/segment/overlap.go | 48 --
pkg/og/storage/segment/overlap_test.go | 195 -------
pkg/og/storage/segment/relationship.go | 53 --
pkg/og/storage/segment/relationship_test.go | 91 ----
pkg/og/storage/segment/retention.go | 81 ---
pkg/og/storage/segment/segment.go | 460 -----------------
pkg/og/storage/segment/segment_test.go | 482 ------------------
pkg/og/storage/segment/serialization.go | 234 ---------
.../segment/serialization_bench_test.go | 33 --
pkg/og/storage/segment/serialization_test.go | 128 -----
pkg/og/storage/segment/timeline.go | 104 ----
pkg/og/storage/segment/timeline_test.go | 134 -----
pkg/og/storage/segment/visualize.go | 44 --
pkg/og/testing/time.go | 3 -
18 files changed, 3 insertions(+), 2515 deletions(-)
delete mode 100644 pkg/og/storage/segment/debug_vis.go
delete mode 100644 pkg/og/storage/segment/fuzz_test.go
delete mode 100644 pkg/og/storage/segment/overlap.go
delete mode 100644 pkg/og/storage/segment/overlap_test.go
delete mode 100644 pkg/og/storage/segment/relationship.go
delete mode 100644 pkg/og/storage/segment/relationship_test.go
delete mode 100644 pkg/og/storage/segment/retention.go
delete mode 100644 pkg/og/storage/segment/segment.go
delete mode 100644 pkg/og/storage/segment/segment_test.go
delete mode 100644 pkg/og/storage/segment/serialization.go
delete mode 100644 pkg/og/storage/segment/serialization_bench_test.go
delete mode 100644 pkg/og/storage/segment/serialization_test.go
delete mode 100644 pkg/og/storage/segment/timeline_test.go
delete mode 100644 pkg/og/storage/segment/visualize.go
diff --git a/pkg/og/storage/segment/debug_vis.go b/pkg/og/storage/segment/debug_vis.go
deleted file mode 100644
index c206ca1fae..0000000000
--- a/pkg/og/storage/segment/debug_vis.go
+++ /dev/null
@@ -1,145 +0,0 @@
-package segment
-
-import (
- "encoding/json"
- "math/big"
- "os"
- "text/template"
- "time"
-)
-
-var visDebuggingEnabled = false
-
-type visualizeNode2 struct {
- T1 time.Time
- T2 time.Time
- Depth int
- HasTrie bool
- Samples uint64
- M int
- D int
- Used bool
-}
-
-type vis struct {
- nodes []*visualizeNode2
-}
-
-// This is here for debugging
-func newVis() *vis {
- return &vis{nodes: []*visualizeNode2{}}
-}
-
-func (v *vis) add(n *streeNode, r *big.Rat, used bool) {
- if !visDebuggingEnabled {
- return
- }
- v.nodes = append(v.nodes, &visualizeNode2{
- T1: n.time.UTC(),
- T2: n.time.Add(durations[n.depth]).UTC(),
- Depth: n.depth,
- HasTrie: n.present,
- Samples: n.samples,
- M: int(r.Num().Int64()),
- D: int(r.Denom().Int64()),
- Used: used,
- })
-}
-
-type TmpltVars struct {
- Data string
-}
-
-func (v *vis) print(name string) {
- if !visDebuggingEnabled {
- return
- }
- vizTmplt, _ := template.New("viz").Parse(vizTmplt)
-
- jsonBytes, _ := json.MarshalIndent(v.nodes, "", " ")
- jsonStr := string(jsonBytes)
- w, _ := os.Create(name)
- vizTmplt.Execute(w, TmpltVars{Data: jsonStr})
-}
-
-var vizTmplt = `
-
-
-
-
-
-
-
-
-
-
-
-
-
-`
diff --git a/pkg/og/storage/segment/fuzz_test.go b/pkg/og/storage/segment/fuzz_test.go
deleted file mode 100644
index 3df605eb56..0000000000
--- a/pkg/og/storage/segment/fuzz_test.go
+++ /dev/null
@@ -1,280 +0,0 @@
-package segment
-
-import (
- "log"
- "math/big"
- "math/rand"
- "sync"
- "time"
-
- . "github.com/onsi/ginkgo/v2"
- . "github.com/onsi/gomega"
-
- "github.com/grafana/pyroscope/pkg/og/testing"
-)
-
-type datapoint struct {
- t time.Time
- samples uint64
- r *big.Rat
-}
-
-type storageMock struct {
- resolution time.Duration
- data []datapoint
-}
-
-func newMock(resolution time.Duration) *storageMock {
- return &storageMock{
- resolution: resolution,
- data: []datapoint{},
- }
-}
-
-func (sm *storageMock) Put(st, et time.Time, samples uint64) {
- st, et = normalize(st, et)
- fullDur := et.Sub(st) / sm.resolution
- for t := st; t.Before(et); t = t.Add(sm.resolution) {
- d := datapoint{
- t: t,
- samples: samples,
- r: big.NewRat(int64(samples), int64(fullDur)),
- }
-
- sm.data = append(sm.data, d)
- }
-}
-
-func (sm *storageMock) Get(st, et time.Time, cb func(depth int, samples, writes uint64, t time.Time, r *big.Rat)) {
- st, et = normalize(st, et)
- for _, d := range sm.data {
- if !d.t.Before(st) && !d.t.Add(sm.resolution).After(et) {
- cb(0, 1, 1, d.t, d.r)
- }
- }
-}
-
-// if you change something in this test make sure it doesn't change test coverage.
-func fuzzTest(testWrites bool, writeSize func() int) {
- s := New()
- m := newMock(10 * time.Second)
-
- r := rand.New(rand.NewSource(1213))
-
- for k := 0; k < 20; k++ {
- maxStartTime := r.Intn(5000)
- // for i := 0; i < 10; i++ {
- for i := 0; i < r.Intn(200); i++ {
- sti := r.Intn(maxStartTime) * 10
- st := testing.SimpleTime(sti)
- et := testing.SimpleTime(sti + writeSize())
- dur := et.Sub(st)
-
- // samples := uint64(1+r.Intn(10)) * uint64(dur/(10*time.Second))
- samples := uint64(20)
-
- m.Put(st, et, samples)
- s.Put(st, et, samples, func(depth int, t time.Time, r *big.Rat, addons []Addon) {
- log.Println(depth, r, dur)
- })
- }
- mSum := big.NewRat(0, 1)
- mWrites := big.NewRat(0, 1)
- sSum := big.NewRat(0, 1)
- sWrites := big.NewRat(0, 1)
- for i := 0; i < r.Intn(100); i++ {
- sti := r.Intn(100) * 10
- st := testing.SimpleTime(sti)
- et := testing.SimpleTime(sti + r.Intn(100)*10)
-
- m.Get(st, et, func(depth int, samples, writes uint64, t time.Time, r *big.Rat) {
- rClone := big.NewRat(r.Num().Int64(), r.Denom().Int64())
- mSum.Add(mSum, rClone.Mul(rClone, big.NewRat(int64(samples), 1)))
- log.Println("mWrites", samples, writes, r)
- // if r.Num().Int64() > 0 {
- // r = r.Inv(r)
- w := big.NewRat(int64(writes), 1)
- // mWrites.Add(mWrites, r.Mul(r, w))
- mWrites.Add(mWrites, w)
- // }
- })
-
- s.Get(st, et, func(depth int, samples, writes uint64, t time.Time, r *big.Rat) {
- rClone := big.NewRat(r.Num().Int64(), r.Denom().Int64())
- sSum.Add(sSum, rClone.Mul(rClone, big.NewRat(int64(samples), 1)))
- log.Println("sWrites", samples, writes, r)
- // if r.Num().Int64() > 0 {
- // r = r.Inv(r)
- w := big.NewRat(int64(writes), 1)
- // sWrites.Add(sWrites, r.Mul(r, w))
- sWrites.Add(sWrites, w)
- // }
- })
- }
- mSumF, _ := mSum.Float64()
- mWritesF, _ := mWrites.Float64()
- log.Println("m:", mSum, mSumF, mWrites, mWritesF)
-
- sSumF, _ := sSum.Float64()
- sWritesF, _ := sWrites.Float64()
- log.Println("s:", sSum, sSumF, sWrites, sWritesF)
-
- Expect(mSum.Cmp(sSum)).To(Equal(0))
- if testWrites {
- Expect(mWrites.Cmp(sWrites)).To(Equal(0))
- }
- }
-}
-
-// See https://github.com/pyroscope-io/pyroscope/issues/28 for more context
-var _ = Describe("segment", func() {
- Context("fuzz tests", func() {
- Context("writes are 10 second long", func() {
- It("works as expected", func() {
- done := make(chan interface{})
- go func() {
- fuzzTest(true, func() int {
- return 10
- })
- close(done)
- }()
- Eventually(done, 5).Should(BeClosed())
- })
- })
- Context("writes are different lengths", func() {
- It("works as expected", func() {
- done := make(chan interface{})
- go func() {
- fuzzTest(false, func() int {
- return 20
- // return 1 + rand.Intn(10)*10
- })
- close(done)
- }()
- Eventually(done, 5).Should(BeClosed())
- })
- })
- Context("retention and sampling randomized test", func() {
- It("works as expected", func() {
- var (
- seed = 7332
- n = 1
- wg sync.WaitGroup
- )
- wg.Add(n)
- for i := 0; i < n; i++ {
- go func(i int) {
- fuzzDeleteNodesBefore(seed + i)
- wg.Done()
- }(i)
- }
- wg.Wait()
- })
- })
- })
-})
-
-func fuzzDeleteNodesBefore(seed int) {
- defer GinkgoRecover()
-
- s := New()
- r := rand.New(rand.NewSource(int64(seed)))
- w := testSegWriter{
- n: 10e3, // Number of writes
- r: r,
-
- samplesPerWrite: 100,
- writeTimeSpanSec: 10,
- startTimeMin: randInt(1000, 3000),
- startTimeMax: randInt(7000, 100000),
-
- buckets: make([]*bucket, 10),
- }
-
- w.write(s)
-
- for _, b := range w.buckets {
- // Delete samples that fall within the time span of the bucket.
- removed, err := s.DeleteNodesBefore(&RetentionPolicy{AbsoluteTime: b.time})
- Expect(err).ToNot(HaveOccurred())
- Expect(removed).To(BeFalse())
- // Ensure we have removed expected number of samples from the segment.
- samples, writes := totalSamplesWrites(s, time.Time{}, testing.SimpleTime(w.startTimeMax*10))
- Expect(samples).To(Equal(b.samples))
- Expect(writes).To(Equal(b.writes))
- // Ensure no samples left outside the retention period.
- samples, writes = totalSamplesWrites(s, b.time, testing.SimpleTime(w.startTimeMax*10))
- Expect(samples).To(Equal(b.samples))
- Expect(writes).To(Equal(b.writes))
- }
-
- st := testing.SimpleTime(w.startTimeMax * 10)
- samples, writes := totalSamplesWrites(s, st, st.Add(time.Hour))
- Expect(samples).To(BeZero())
- Expect(writes).To(BeZero())
-}
-
-// testSegWriter inserts randomized data into the segment recording the
-// samples distribution by time. Every bucket indicates the number of
-// writes and samples that had been written before the bucket time mark.
-type testSegWriter struct {
- r *rand.Rand
- n int
-
- samplesPerWrite int
- writeTimeSpanSec int
- expectedWrites int
-
- startTimeMin int
- startTimeMax int
-
- buckets []*bucket
-}
-
-type bucket struct {
- time time.Time
- samples int
- writes int
-}
-
-func (f testSegWriter) putStartEndTime() (st time.Time, et time.Time) {
- st = testing.SimpleTime(randInt(f.startTimeMin, f.startTimeMax) * 10)
- et = st.Add(time.Second * time.Duration(f.writeTimeSpanSec))
- return st, et
-}
-
-func randInt(min, max int) int { return rand.Intn(max-min) + min }
-
-func (f testSegWriter) expectedSamples() int { return f.n * f.samplesPerWrite }
-
-func (f testSegWriter) write(s *Segment) {
- // Initialize time buckets, if required: the whole time
- // span is divided proportionally to the number of buckets.
- if len(f.buckets) > 0 {
- step := (f.startTimeMax - f.startTimeMin) / len(f.buckets) * 10
- for i := 0; i < len(f.buckets); i++ {
- f.buckets[i] = &bucket{time: testing.SimpleTime(f.startTimeMin + step*i)}
- }
- }
- for i := 0; i < f.n; i++ {
- st, et := f.putStartEndTime()
- err := s.Put(st, et, uint64(f.samplesPerWrite), putNoOp)
- Expect(err).ToNot(HaveOccurred())
- for _, b := range f.buckets {
- if et.After(b.time) {
- b.samples += f.samplesPerWrite
- b.writes++
- }
- }
- }
-}
-
-func totalSamplesWrites(s *Segment, st, et time.Time) (samples, writes int) {
- v := big.NewRat(0, 1)
- s.Get(st, et, func(depth int, s, w uint64, t time.Time, r *big.Rat) {
- x := big.NewRat(r.Num().Int64(), r.Denom().Int64())
- v.Add(v, x.Mul(x, big.NewRat(int64(s), 1)))
- writes += int(w)
- })
- return int(v.Num().Int64()), writes
-}
diff --git a/pkg/og/storage/segment/key_bech_test.go b/pkg/og/storage/segment/key_bech_test.go
index b254b1c0e0..b1c56c5531 100644
--- a/pkg/og/storage/segment/key_bech_test.go
+++ b/pkg/og/storage/segment/key_bech_test.go
@@ -31,6 +31,8 @@ func BenchmarkKey_Parse(b *testing.B) {
}
}
+func randInt(min, max int) int { return rand.Intn(max-min) + min }
+
// TODO(kolesnikovae): This is not near perfect way of generating strings.
// It makes sense to create a package for util functions like this.
diff --git a/pkg/og/storage/segment/key_test.go b/pkg/og/storage/segment/key_test.go
index e5f6d8cedc..b1fbfc9f9a 100644
--- a/pkg/og/storage/segment/key_test.go
+++ b/pkg/og/storage/segment/key_test.go
@@ -7,6 +7,7 @@ import (
"github.com/grafana/pyroscope/pkg/og/flameql"
)
+// todo port from ginko
var _ = Describe("segment key", func() {
Context("ParseKey", func() {
It("no tags version works", func() {
diff --git a/pkg/og/storage/segment/overlap.go b/pkg/og/storage/segment/overlap.go
deleted file mode 100644
index 53d300f078..0000000000
--- a/pkg/og/storage/segment/overlap.go
+++ /dev/null
@@ -1,48 +0,0 @@
-package segment
-
-import (
- "math/big"
- "time"
-)
-
-func tmin(a, b time.Time) time.Time {
- if a.Before(b) {
- return a
- }
- return b
-}
-
-func tmax(a, b time.Time) time.Time {
- if a.After(b) {
- return a
- }
- return b
-}
-
-func dmax(a, b time.Duration) time.Duration {
- if a > b {
- return a
- }
- return b
-}
-
-// relationship overlap read overlap write
-// inside rel = iota // | S E | <1 1/1
-// match // matching ranges 1/1 1/1
-// outside // | | S E 0/1 0/1
-// overlap // | S | E <1 <1
-// contain // S | | E 1/1 <1
-
-// t1, t2 represent segment node, st, et represent the read query time range
-func overlapRead(t1, t2, st, et time.Time, dur time.Duration) *big.Rat {
- m := int64(dmax(0, tmin(t2, et).Sub(tmax(t1, st))) / dur)
- d := int64(t2.Sub(t1) / dur)
- return big.NewRat(m, d)
-}
-
-// t1, t2 represent segment node, st, et represent the write query time range
-func overlapWrite(t1, t2, st, et time.Time, dur time.Duration) *big.Rat {
- m := int64(dmax(0, tmin(t2, et).Sub(tmax(t1, st))) / dur)
- d := int64(et.Sub(st) / dur)
- return big.NewRat(m, d)
-}
diff --git a/pkg/og/storage/segment/overlap_test.go b/pkg/og/storage/segment/overlap_test.go
deleted file mode 100644
index 8e2c2837e3..0000000000
--- a/pkg/og/storage/segment/overlap_test.go
+++ /dev/null
@@ -1,195 +0,0 @@
-package segment
-
-import (
- "math/big"
- "time"
-
- . "github.com/onsi/ginkgo/v2"
- . "github.com/onsi/gomega"
- "github.com/grafana/pyroscope/pkg/og/testing"
-)
-
-// relationship overlap read overlap write
-// inside rel = iota // | S E | <1 1/1
-// match // matching ranges 1/1 1/1
-// outside // | | S E 0/1 0/1
-// overlap // | S | E <1 <1
-// contain // S | | E 1/1 <1
-
-var _ = Describe("segment", func() {
- Context("overlapRead", func() {
- Context("match", func() {
- It("returns correct values", func() {
- Expect(overlapRead(
- testing.SimpleTime(0), testing.SimpleTime(100), // t1 t2
- testing.SimpleTime(0), testing.SimpleTime(100), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(1, 1).String()))
- })
- })
- Context("inside", func() {
- It("returns correct values", func() {
- Expect(overlapRead(
- testing.SimpleTime(0), testing.SimpleTime(100), // t1 t2
- testing.SimpleTime(10), testing.SimpleTime(90), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(8, 10).String()))
- Expect(overlapRead(
- testing.SimpleTime(0), testing.SimpleTime(100), // t1 t2
- testing.SimpleTime(0), testing.SimpleTime(90), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(9, 10).String()))
- Expect(overlapRead(
- testing.SimpleTime(0), testing.SimpleTime(100), // t1 t2
- testing.SimpleTime(10), testing.SimpleTime(100), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(9, 10).String()))
- })
- })
- Context("contain", func() {
- It("returns correct values", func() {
- Expect(overlapRead(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(90), testing.SimpleTime(210), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(1, 1).String()))
- Expect(overlapRead(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(100), testing.SimpleTime(210), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(1, 1).String()))
- Expect(overlapRead(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(90), testing.SimpleTime(200), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(1, 1).String()))
- })
- })
- Context("overlap", func() {
- It("returns correct values", func() {
- Expect(overlapRead(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(90), testing.SimpleTime(110), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(1, 10).String()))
- Expect(overlapRead(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(190), testing.SimpleTime(210), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(1, 10).String()))
- })
- })
- Context("outside", func() {
- It("returns correct values", func() {
- Expect(overlapRead(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(90), testing.SimpleTime(100), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(0, 1).String()))
- Expect(overlapRead(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(80), testing.SimpleTime(90), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(0, 1).String()))
- Expect(overlapRead(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(200), testing.SimpleTime(210), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(0, 1).String()))
- Expect(overlapRead(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(210), testing.SimpleTime(220), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(0, 1).String()))
- })
- })
- })
-
- Context("overlapWrite", func() {
- Context("match", func() {
- It("returns correct values", func() {
- Expect(overlapWrite(
- testing.SimpleTime(0), testing.SimpleTime(100), // t1 t2
- testing.SimpleTime(0), testing.SimpleTime(100), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(1, 1).String()))
- })
- })
- Context("inside", func() {
- It("returns correct values", func() {
- Expect(overlapWrite(
- testing.SimpleTime(0), testing.SimpleTime(100), // t1 t2
- testing.SimpleTime(10), testing.SimpleTime(90), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(1, 1).String()))
- Expect(overlapWrite(
- testing.SimpleTime(0), testing.SimpleTime(100), // t1 t2
- testing.SimpleTime(0), testing.SimpleTime(90), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(1, 1).String()))
- Expect(overlapWrite(
- testing.SimpleTime(0), testing.SimpleTime(100), // t1 t2
- testing.SimpleTime(10), testing.SimpleTime(100), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(1, 1).String()))
- })
- })
- Context("contain", func() {
- It("returns correct values", func() {
- Expect(overlapWrite(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(90), testing.SimpleTime(210), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(10, 12).String()))
- Expect(overlapWrite(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(100), testing.SimpleTime(210), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(10, 11).String()))
- Expect(overlapWrite(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(90), testing.SimpleTime(200), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(10, 11).String()))
- })
- })
- Context("overlap", func() {
- It("returns correct values", func() {
- Expect(overlapWrite(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(90), testing.SimpleTime(110), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(1, 2).String()))
- Expect(overlapWrite(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(190), testing.SimpleTime(210), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(1, 2).String()))
- })
- })
- Context("outside", func() {
- It("returns correct values", func() {
- Expect(overlapWrite(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(90), testing.SimpleTime(100), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(0, 1).String()))
- Expect(overlapWrite(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(80), testing.SimpleTime(90), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(0, 1).String()))
- Expect(overlapWrite(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(200), testing.SimpleTime(210), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(0, 1).String()))
- Expect(overlapWrite(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(210), testing.SimpleTime(220), // st et
- 10*time.Second,
- ).String()).To(Equal(big.NewRat(0, 1).String()))
- })
- })
- })
-})
diff --git a/pkg/og/storage/segment/relationship.go b/pkg/og/storage/segment/relationship.go
deleted file mode 100644
index 627d6f5674..0000000000
--- a/pkg/og/storage/segment/relationship.go
+++ /dev/null
@@ -1,53 +0,0 @@
-package segment
-
-import (
- "time"
-)
-
-type rel int
-
-const (
- // relationship overlap read overlap write
- inside rel = iota // | S E | <1 1/1
- match // matching ranges 1/1 1/1
- outside // | | S E 0/1 0/1
- overlap // | S | E <1 <1
- contain // S | | E 1/1 <1
-)
-
-var overlapStrings map[rel]string
-
-// TODO: I bet there's a better way
-func init() {
- overlapStrings = make(map[rel]string)
- overlapStrings[inside] = "inside"
- overlapStrings[outside] = "outside"
- overlapStrings[match] = "match"
- overlapStrings[overlap] = "overlap"
- overlapStrings[contain] = "contain"
-}
-
-func (r rel) String() string {
- return overlapStrings[r]
-}
-
-// t1, t2 represent segment node, st, et represent the read/write query time range
-func relationship(t1, t2, st, et time.Time) rel {
- if t1.Equal(st) && t2.Equal(et) {
- return match
- }
- if !t1.After(st) && !t2.Before(et) {
- return inside
- }
- if !t1.Before(st) && !t2.After(et) {
- return contain
- }
- if !t1.After(st) && !t2.After(st) {
- return outside
- }
- if !t1.Before(et) && !t2.Before(et) {
- return outside
- }
-
- return overlap
-}
diff --git a/pkg/og/storage/segment/relationship_test.go b/pkg/og/storage/segment/relationship_test.go
deleted file mode 100644
index d03137a5f3..0000000000
--- a/pkg/og/storage/segment/relationship_test.go
+++ /dev/null
@@ -1,91 +0,0 @@
-package segment
-
-import (
- . "github.com/onsi/ginkgo/v2"
- . "github.com/onsi/gomega"
- "github.com/grafana/pyroscope/pkg/og/testing"
-)
-
-// relationship overlap read overlap write
-// inside rel = iota // | S E | <1 1/1
-// match // matching ranges 1/1 1/1
-// outside // | | S E 0/1 0/1
-// overlap // | S | E <1 <1
-// contain // S | | E 1/1 <1
-
-var _ = Describe("stree", func() {
- Context("relationship", func() {
- Context("match", func() {
- It("returns correct values", func() {
- Expect(relationship(
- testing.SimpleTime(0), testing.SimpleTime(100), // t1 t2
- testing.SimpleTime(0), testing.SimpleTime(100), // st et
- ).String()).To(Equal("match"))
- })
- })
- Context("inside", func() {
- It("returns correct values", func() {
- Expect(relationship(
- testing.SimpleTime(0), testing.SimpleTime(100), // t1 t2
- testing.SimpleTime(10), testing.SimpleTime(90), // st et
- ).String()).To(Equal("inside"))
- Expect(relationship(
- testing.SimpleTime(0), testing.SimpleTime(100), // t1 t2
- testing.SimpleTime(0), testing.SimpleTime(90), // st et
- ).String()).To(Equal("inside"))
- Expect(relationship(
- testing.SimpleTime(0), testing.SimpleTime(100), // t1 t2
- testing.SimpleTime(10), testing.SimpleTime(100), // st et
- ).String()).To(Equal("inside"))
- })
- })
- Context("contain", func() {
- It("returns correct values", func() {
- Expect(relationship(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(90), testing.SimpleTime(210), // st et
- ).String()).To(Equal("contain"))
- Expect(relationship(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(100), testing.SimpleTime(210), // st et
- ).String()).To(Equal("contain"))
- Expect(relationship(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(90), testing.SimpleTime(200), // st et
- ).String()).To(Equal("contain"))
- })
- })
- Context("overlap", func() {
- It("returns correct values", func() {
- Expect(relationship(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(90), testing.SimpleTime(110), // st et
- ).String()).To(Equal("overlap"))
- Expect(relationship(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(190), testing.SimpleTime(210), // st et
- ).String()).To(Equal("overlap"))
- })
- })
- Context("outside", func() {
- It("returns correct values", func() {
- Expect(relationship(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(90), testing.SimpleTime(100), // st et
- ).String()).To(Equal("outside"))
- Expect(relationship(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(80), testing.SimpleTime(90), // st et
- ).String()).To(Equal("outside"))
- Expect(relationship(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(200), testing.SimpleTime(210), // st et
- ).String()).To(Equal("outside"))
- Expect(relationship(
- testing.SimpleTime(100), testing.SimpleTime(200), // t1 t2
- testing.SimpleTime(210), testing.SimpleTime(220), // st et
- ).String()).To(Equal("outside"))
- })
- })
- })
-})
diff --git a/pkg/og/storage/segment/retention.go b/pkg/og/storage/segment/retention.go
deleted file mode 100644
index 63b47fa2da..0000000000
--- a/pkg/og/storage/segment/retention.go
+++ /dev/null
@@ -1,81 +0,0 @@
-package segment
-
-import (
- "time"
-)
-
-type RetentionPolicy struct {
- now time.Time
-
- AbsoluteTime time.Time
- Levels map[int]time.Time
-
- ExemplarsRetentionTime time.Time
-}
-
-func NewRetentionPolicy() *RetentionPolicy {
- return &RetentionPolicy{now: time.Now()}
-}
-
-func (r RetentionPolicy) LowerTimeBoundary() time.Time {
- if len(r.Levels) == 0 {
- return r.AbsoluteTime
- }
- return r.Levels[0]
-}
-
-func (r *RetentionPolicy) SetAbsolutePeriod(period time.Duration) *RetentionPolicy {
- r.AbsoluteTime = r.periodToTime(period)
- return r
-}
-
-func (r *RetentionPolicy) SetExemplarsRetentionPeriod(period time.Duration) *RetentionPolicy {
- r.ExemplarsRetentionTime = r.periodToTime(period)
- return r
-}
-
-func (r *RetentionPolicy) SetLevelPeriod(level int, period time.Duration) *RetentionPolicy {
- if r.Levels == nil {
- r.Levels = make(map[int]time.Time)
- }
- r.Levels[level] = r.periodToTime(period)
- return r
-}
-
-func (r *RetentionPolicy) SetLevels(levels ...time.Duration) *RetentionPolicy {
- if r.Levels == nil {
- r.Levels = make(map[int]time.Time)
- }
- for level, period := range levels {
- if period != 0 {
- r.Levels[level] = r.periodToTime(period)
- }
- }
- return r
-}
-
-func (r RetentionPolicy) isToBeDeleted(sn *streeNode) bool {
- return sn.isBefore(r.AbsoluteTime) || sn.isBefore(r.levelMaxTime(sn.depth))
-}
-
-func (r RetentionPolicy) periodToTime(age time.Duration) time.Time {
- if age == 0 {
- return time.Time{}
- }
- return r.now.Add(-1 * age)
-}
-
-func (r *RetentionPolicy) normalize() *RetentionPolicy {
- r.AbsoluteTime = normalizeTime(r.AbsoluteTime)
- for k, v := range r.Levels {
- r.Levels[k] = normalizeTime(v)
- }
- return r
-}
-
-func (r RetentionPolicy) levelMaxTime(depth int) time.Time {
- if r.Levels == nil {
- return time.Time{}
- }
- return r.Levels[depth]
-}
diff --git a/pkg/og/storage/segment/segment.go b/pkg/og/storage/segment/segment.go
deleted file mode 100644
index b0eb4f961d..0000000000
--- a/pkg/og/storage/segment/segment.go
+++ /dev/null
@@ -1,460 +0,0 @@
-package segment
-
-import (
- "context"
- "errors"
- "fmt"
- "math/big"
- "os"
- "path/filepath"
- "runtime/trace"
- "sync"
- "time"
-
- "github.com/grafana/pyroscope/pkg/og/storage/metadata"
-)
-
-type streeNode struct {
- depth int
- time time.Time
- present bool
- samples uint64
- writes uint64
- children []*streeNode
-}
-
-func (sn *streeNode) replace(child *streeNode) {
- i := child.time.Sub(sn.time) / durations[child.depth]
- sn.children[i] = child
-}
-
-func (sn *streeNode) relationship(st, et time.Time) rel {
- t2 := sn.time.Add(durations[sn.depth])
- return relationship(sn.time, t2, st, et)
-}
-
-func (sn *streeNode) isBefore(rt time.Time) bool {
- t2 := sn.time.Add(durations[sn.depth])
- return !t2.After(rt)
-}
-
-func (sn *streeNode) isAfter(rt time.Time) bool {
- return sn.time.After(rt)
-}
-
-func (sn *streeNode) endTime() time.Time {
- return sn.time.Add(durations[sn.depth])
-}
-
-func (sn *streeNode) overlapRead(st, et time.Time) *big.Rat {
- t2 := sn.time.Add(durations[sn.depth])
- return overlapRead(sn.time, t2, st, et, durations[0])
-}
-
-func (sn *streeNode) overlapWrite(st, et time.Time) *big.Rat {
- t2 := sn.time.Add(durations[sn.depth])
- return overlapWrite(sn.time, t2, st, et, durations[0])
-}
-
-func (sn *streeNode) findAddons() []Addon {
- res := []Addon{}
- if sn.present {
- res = append(res, Addon{
- Depth: sn.depth,
- T: sn.time,
- })
- } else {
- for _, child := range sn.children {
- if child != nil {
- res = append(res, child.findAddons()...)
- }
- }
- }
- return res
-}
-
-func (sn *streeNode) put(st, et time.Time, samples uint64, cb func(n *streeNode, depth int, dt time.Time, r *big.Rat, addons []Addon)) {
- nodes := []*streeNode{sn}
-
- for len(nodes) > 0 {
- sn = nodes[0]
- nodes = nodes[1:]
-
- rel := sn.relationship(st, et)
- if rel != outside {
- childrenCount := 0
- createNewChildren := rel == inside || rel == overlap
- for i, v := range sn.children {
- if createNewChildren && v == nil { // maybe create a new child
- childT := sn.time.Truncate(durations[sn.depth]).Add(time.Duration(i) * durations[sn.depth-1])
-
- rel2 := relationship(childT, childT.Add(durations[sn.depth-1]), st, et)
- if rel2 != outside {
- sn.children[i] = newNode(childT, sn.depth-1, 10)
- }
- }
-
- if sn.children[i] != nil {
- childrenCount++
- nodes = append(nodes, sn.children[i])
- }
- }
- var addons []Addon
-
- r := sn.overlapWrite(st, et)
- fv, _ := r.Float64()
- sn.samples += uint64(float64(samples) * fv)
- sn.writes += uint64(1)
-
- // relationship overlap read overlap write
- // inside rel = iota // | S E | <1 1/1
- // match // matching ranges 1/1 1/1
- // outside // | | S E 0/1 0/1
- // overlap // | S | E <1 <1
- // contain // S | | E 1/1 <1
-
- if rel == match || rel == contain || childrenCount > 1 || sn.present {
- if !sn.present {
- addons = sn.findAddons()
- }
-
- cb(sn, sn.depth, sn.time, r, addons)
- sn.present = true
- }
- }
- }
-}
-
-func normalize(st, et time.Time) (time.Time, time.Time) {
- st = st.Truncate(durations[0])
- et2 := et.Truncate(durations[0])
- if et2.Equal(et) && !st.Equal(et2) {
- return st, et
- }
- return st, et2.Add(durations[0])
-}
-
-func normalizeTime(t time.Time) time.Time {
- return t.Truncate(durations[0])
-}
-
-// get traverses through the tree searching for the nodes satisfying
-// the given time range. If no nodes were found, the most precise
-// down-sampling root node will be passed to the callback function,
-// and relationship r will be proportional to the down-sampling factor.
-//
-// relationship overlap read overlap write
-// inside rel = iota // | S E | <1 1/1
-// match // matching ranges 1/1 1/1
-// outside // | | S E 0/1 0/1
-// overlap // | S | E <1 <1
-// contain // S | | E 1/1 <1
-func (sn *streeNode) get(ctx context.Context, s *Segment, st, et time.Time, cb func(*streeNode, *big.Rat)) {
- r := sn.relationship(st, et)
- trace.Logf(ctx, traceCatNodeGet, "D=%d T=%v P=%v R=%v", sn.depth, sn.time.Unix(), sn.present, r)
- switch r {
- case outside:
- return
- case inside, overlap:
- // Defer to children.
- case contain, match:
- // Take the node as is.
- if sn.present {
- cb(sn, big.NewRat(1, 1))
- return
- }
- }
- trace.Log(ctx, traceCatNodeGet, "drill down")
- // Whether child nodes are outside the retention period.
- if sn.time.Before(s.watermarks.levels[sn.depth-1]) && sn.present {
- trace.Log(ctx, traceCatNodeGet, "sampled")
- // Create a sampled tree from the current node.
- cb(sn, sn.overlapRead(st, et))
- return
- }
- // Traverse nodes recursively.
- for _, v := range sn.children {
- if v != nil {
- v.get(ctx, s, st, et, cb)
- }
- }
-}
-
-// deleteDataBefore returns true if the node should be deleted.
-func (sn *streeNode) deleteNodesBefore(t *RetentionPolicy) (bool, error) {
- if sn.isAfter(t.AbsoluteTime) && t.Levels == nil {
- return false, nil
- }
- remove := t.isToBeDeleted(sn)
- for i, v := range sn.children {
- if v == nil {
- continue
- }
- ok, err := v.deleteNodesBefore(t)
- if err != nil {
- return false, err
- }
- if ok {
- sn.children[i] = nil
- }
- }
- return remove, nil
-}
-
-func (sn *streeNode) walkNodesToDelete(t *RetentionPolicy, cb func(depth int, t time.Time) error) (bool, error) {
- if sn.isAfter(t.AbsoluteTime) && t.Levels == nil {
- return false, nil
- }
- var err error
- remove := t.isToBeDeleted(sn)
- if remove {
- if err = cb(sn.depth, sn.time); err != nil {
- return false, err
- }
- }
- for _, v := range sn.children {
- if v == nil {
- continue
- }
- if _, err = v.walkNodesToDelete(t, cb); err != nil {
- return false, err
- }
- }
- return remove, nil
-}
-
-type Segment struct {
- m sync.RWMutex
- root *streeNode
-
- spyName string
- sampleRate uint32
- units metadata.Units
- aggregationType metadata.AggregationType
-
- watermarks
-}
-
-type watermarks struct {
- absoluteTime time.Time
- levels map[int]time.Time
-}
-
-func newNode(t time.Time, depth, multiplier int) *streeNode {
- sn := &streeNode{
- depth: depth,
- time: t,
- }
- if depth > 0 {
- sn.children = make([]*streeNode, multiplier)
- }
- return sn
-}
-
-func New() *Segment {
- return &Segment{watermarks: watermarks{
- levels: make(map[int]time.Time),
- }}
-}
-
-// TODO: DRY
-func maxTime(a, b time.Time) time.Time {
- if a.After(b) {
- return a
- }
- return b
-}
-
-func minTime(a, b time.Time) time.Time {
- if a.Before(b) {
- return a
- }
- return b
-}
-
-func (s *Segment) growTree(st, et time.Time) bool {
- var prevVal *streeNode
- if s.root != nil {
- st = minTime(st, s.root.time)
- et = maxTime(et, s.root.endTime())
- } else {
- st = st.Truncate(durations[0])
- s.root = newNode(st, 0, multiplier)
- }
-
- for {
- rel := s.root.relationship(st, et)
-
- if rel == inside || rel == match {
- break
- }
-
- prevVal = s.root
- newDepth := prevVal.depth + 1
- if newDepth >= len(durations) {
- return false
- }
- s.root = newNode(prevVal.time.Truncate(durations[newDepth]), newDepth, multiplier)
- if prevVal != nil {
- s.root.samples = prevVal.samples
- s.root.writes = prevVal.writes
- s.root.replace(prevVal)
- }
- }
- return true
-}
-
-type Addon struct {
- Depth int
- T time.Time
-}
-
-var errStartTimeBeforeEndTime = errors.New("start time cannot be after end time")
-var errTreeMaxSize = errors.New("segment tree reached max size, check start / end time parameters")
-
-// TODO: simplify arguments
-// TODO: validate st < et
-func (s *Segment) Put(st, et time.Time, samples uint64, cb func(depth int, t time.Time, r *big.Rat, addons []Addon)) error {
- s.m.Lock()
- defer s.m.Unlock()
-
- st, et = normalize(st, et)
- if st.After(et) {
- return errStartTimeBeforeEndTime
- }
-
- if !s.growTree(st, et) {
- return errTreeMaxSize
- }
- v := newVis()
- s.root.put(st, et, samples, func(sn *streeNode, depth int, tm time.Time, r *big.Rat, addons []Addon) {
- v.add(sn, r, true)
- cb(depth, tm, r, addons)
- })
- v.print(filepath.Join(os.TempDir(), fmt.Sprintf("0-put-%s-%s.html", st.String(), et.String())))
- return nil
-}
-
-const (
- traceRegionGet = "segment.Get"
- traceCatGet = traceRegionGet
- traceCatNodeGet = "node.get"
-)
-
-//revive:disable-next-line:get-return callback
-func (s *Segment) Get(st, et time.Time, cb func(depth int, samples, writes uint64, t time.Time, r *big.Rat)) {
- // TODO: simplify arguments
- // TODO: validate st < et
- s.GetContext(context.Background(), st, et, cb)
-}
-
-//revive:disable-next-line:get-return callback
-func (s *Segment) GetContext(ctx context.Context, st, et time.Time, cb func(depth int, samples, writes uint64, t time.Time, r *big.Rat)) {
- defer trace.StartRegion(ctx, traceRegionGet).End()
- s.m.RLock()
- defer s.m.RUnlock()
- if st.Before(s.watermarks.absoluteTime) {
- trace.Logf(ctx, traceCatGet, "start time %s is outside the retention period; set to %s", st, s.watermarks.absoluteTime)
- st = s.watermarks.absoluteTime
- }
- st, et = normalize(st, et)
- if s.root == nil {
- trace.Log(ctx, traceCatGet, "empty")
- return
- }
- // divider := int(et.Sub(st) / durations[0])
- v := newVis()
- s.root.get(ctx, s, st, et, func(sn *streeNode, r *big.Rat) {
- // TODO: pass m / d from .get() ?
- v.add(sn, r, true)
- cb(sn.depth, sn.samples, sn.writes, sn.time, r)
- })
- v.print(filepath.Join(os.TempDir(), fmt.Sprintf("0-get-%s-%s.html", st.String(), et.String())))
-}
-
-func (s *Segment) DeleteNodesBefore(t *RetentionPolicy) (bool, error) {
- s.m.Lock()
- defer s.m.Unlock()
- if s.root == nil {
- return true, nil
- }
- ok, err := s.root.deleteNodesBefore(t.normalize())
- if err != nil {
- return false, err
- }
- if ok {
- s.root = nil
- }
- s.updateWatermarks(t)
- return ok, nil
-}
-
-func (s *Segment) updateWatermarks(t *RetentionPolicy) {
- if t.AbsoluteTime.After(s.watermarks.absoluteTime) {
- s.watermarks.absoluteTime = t.AbsoluteTime
- }
- for k, v := range t.Levels {
- if level, ok := s.watermarks.levels[k]; ok && v.Before(level) {
- continue
- }
- s.watermarks.levels[k] = v
- }
-}
-
-func (s *Segment) WalkNodesToDelete(t *RetentionPolicy, cb func(depth int, t time.Time) error) (bool, error) {
- s.m.RLock()
- defer s.m.RUnlock()
- if s.root == nil {
- return true, nil
- }
- return s.root.walkNodesToDelete(t.normalize(), cb)
-}
-
-func (s *Segment) SetMetadata(md metadata.Metadata) {
- s.m.Lock()
- s.spyName = md.SpyName
- s.sampleRate = md.SampleRate
- s.units = md.Units
- s.aggregationType = md.AggregationType
- s.m.Unlock()
-}
-
-func (s *Segment) GetMetadata() metadata.Metadata {
- s.m.Lock()
- md := metadata.Metadata{
- SpyName: s.spyName,
- SampleRate: s.sampleRate,
- Units: s.units,
- AggregationType: s.aggregationType,
- }
- s.m.Unlock()
- return md
-}
-
-var zeroTime time.Time
-
-func (s *Segment) StartTime() time.Time {
- if s.root == nil {
- return zeroTime
- }
- n := s.root
-
- for {
- if len(n.children) == 0 {
- return n.time
- }
-
- oldN := n
-
- for _, child := range n.children {
- if child != nil {
- n = child
- break
- }
- }
-
- if n == oldN {
- return n.time
- }
- }
-}
diff --git a/pkg/og/storage/segment/segment_test.go b/pkg/og/storage/segment/segment_test.go
deleted file mode 100644
index a3573d23b1..0000000000
--- a/pkg/og/storage/segment/segment_test.go
+++ /dev/null
@@ -1,482 +0,0 @@
-package segment
-
-import (
- "bufio"
- "log"
- "math/big"
- "math/rand"
- "os"
- "strconv"
- "strings"
- "time"
-
- . "github.com/onsi/ginkgo/v2"
- . "github.com/onsi/gomega"
-
- "github.com/grafana/pyroscope/pkg/og/testing"
-)
-
-var putNoOp = func(depth int, t time.Time, r *big.Rat, addons []Addon) {}
-
-func doGet(s *Segment, st, et time.Time) []time.Time {
- res := []time.Time{}
- s.Get(st, et, func(d int, samples, writes uint64, t time.Time, r *big.Rat) {
- res = append(res, t)
- })
- return res
-}
-
-func strip(val string) string {
- ret := ""
- scanner := bufio.NewScanner(strings.NewReader(val))
- for scanner.Scan() {
- line := strings.TrimSpace(scanner.Text())
- if len(line) > 0 {
- ret += line + "\n"
- }
- }
- return ret
-}
-
-func expectChildrenSamplesAddUpToParentSamples(tn *streeNode) {
- childrenSum := uint64(0)
- if len(tn.children) == 0 {
- return
- }
- for _, v := range tn.children {
- if v != nil {
- expectChildrenSamplesAddUpToParentSamples(v)
- childrenSum += v.samples
- }
- }
- Expect(childrenSum).To(Equal(tn.samples))
-}
-
-var _ = Describe("stree", func() {
- Context("Get", func() {
- Context("When there's no root", func() {
- It("get doesn't fail", func() {
- s := New()
- Expect(doGet(s, testing.SimpleTime(0), testing.SimpleTime(39))).To(HaveLen(0))
- })
- })
- })
-
- Context("StartTime", func() {
- Context("empty segment", func() {
- It("returns zero time", func() {
- s := New()
- Expect(s.StartTime().IsZero()).To(BeTrue())
- })
- })
-
- Context("fuzz test", func() {
- It("always returns the right values", func() {
- r := rand.New(rand.NewSource(6231912))
-
- // doesn't work with minTime = 0
- minTime := 1023886146
- maxTime := 1623886146
-
- runs := 100
- maxInsertionsPerTree := 100
-
- for i := 0; i < runs; i++ {
- s := New()
- minSt := maxTime
- for j := 0; j < 1+r.Intn(maxInsertionsPerTree); j++ {
- st := (minTime + r.Intn(maxTime-minTime)) / 10 * 10
- if st < minSt {
- minSt = st
- }
- et := st + 10 + r.Intn(1000)
- s.Put(testing.SimpleTime(st), testing.SimpleTime(et), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- }
-
- Expect(s.StartTime()).To(Equal(testing.SimpleTime(minSt)))
- }
- })
- })
- })
-
- Context("DeleteDataBefore", func() {
- Context("empty segment", func() {
- It("returns true and no keys", func() {
- s := New()
-
- keys := []string{}
- rp := &RetentionPolicy{AbsoluteTime: testing.SimpleTime(19)}
- r, _ := s.WalkNodesToDelete(rp, func(depth int, t time.Time) error {
- keys = append(keys, strconv.Itoa(depth)+":"+strconv.Itoa(int(t.Unix())))
- return nil
- })
-
- Expect(r).To(BeTrue())
- Expect(keys).To(BeEmpty())
- })
- })
-
- Context("simple test 1", func() {
- It("correctly deletes data", func() {
- s := New()
- s.Put(testing.SimpleUTime(10), testing.SimpleUTime(19), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleUTime(20), testing.SimpleUTime(29), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
-
- keys := []string{}
- rp := &RetentionPolicy{AbsoluteTime: testing.SimpleUTime(21)}
- r, _ := s.WalkNodesToDelete(rp, func(depth int, t time.Time) error {
- keys = append(keys, strconv.Itoa(depth)+":"+strconv.Itoa(int(t.Unix())))
- return nil
- })
-
- Expect(r).To(BeFalse())
- Expect(keys).To(ConsistOf([]string{
- "0:10",
- }))
- })
- })
-
- Context("simple test 3", func() {
- It("correctly deletes data", func() {
- s := New()
- s.Put(testing.SimpleUTime(10), testing.SimpleUTime(19), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleUTime(1020), testing.SimpleUTime(1029), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
-
- keys := []string{}
- rp := &RetentionPolicy{AbsoluteTime: testing.SimpleUTime(21)}
- r, _ := s.WalkNodesToDelete(rp, func(depth int, t time.Time) error {
- keys = append(keys, strconv.Itoa(depth)+":"+strconv.Itoa(int(t.Unix())))
- return nil
- })
-
- Expect(r).To(BeFalse())
- Expect(keys).To(ConsistOf([]string{
- "0:10",
- }))
- })
- })
-
- Context("simple test 2", func() {
- It("correctly deletes data", func() {
- s := New()
- s.Put(testing.SimpleUTime(10), testing.SimpleUTime(19), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleUTime(20), testing.SimpleUTime(29), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
-
- keys := []string{}
- rp := &RetentionPolicy{AbsoluteTime: testing.SimpleUTime(200)}
- r, _ := s.WalkNodesToDelete(rp, func(depth int, t time.Time) error {
- keys = append(keys, strconv.Itoa(depth)+":"+strconv.Itoa(int(t.Unix())))
- return nil
- })
-
- Expect(r).To(BeTrue())
- Expect(keys).To(ConsistOf([]string{
- "1:0",
- "0:10",
- "0:20",
- }))
- })
- })
-
- Context("level-based retention", func() {
- It("correctly deletes data partially", func() {
- s := New()
- s.Put(testing.SimpleUTime(10), testing.SimpleUTime(19), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleUTime(20), testing.SimpleUTime(29), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
-
- keys := []string{}
- rp := &RetentionPolicy{Levels: map[int]time.Time{0: time.Now()}}
- r, _ := s.WalkNodesToDelete(rp, func(depth int, t time.Time) error {
- keys = append(keys, strconv.Itoa(depth)+":"+strconv.Itoa(int(t.Unix())))
- return nil
- })
-
- Expect(r).To(BeFalse())
- Expect(s.root).ToNot(BeNil())
- Expect(keys).To(ConsistOf([]string{
- "0:10",
- "0:20",
- }))
-
- removed, err := s.DeleteNodesBefore(rp)
- Expect(err).ToNot(HaveOccurred())
- Expect(removed).To(BeFalse())
- })
-
- It("correctly deletes data completely", func() {
- s := New()
- s.Put(testing.SimpleUTime(10), testing.SimpleUTime(19), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleUTime(20), testing.SimpleUTime(29), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
-
- var keys []string
- rp := &RetentionPolicy{Levels: map[int]time.Time{0: time.Now(), 1: time.Now()}}
- r, _ := s.WalkNodesToDelete(rp, func(depth int, t time.Time) error {
- keys = append(keys, strconv.Itoa(depth)+":"+strconv.Itoa(int(t.Unix())))
- return nil
- })
-
- Expect(r).To(BeTrue())
- Expect(keys).To(ConsistOf([]string{
- "1:0",
- "0:10",
- "0:20",
- }))
-
- removed, err := s.DeleteNodesBefore(rp)
- Expect(err).ToNot(HaveOccurred())
- Expect(removed).To(BeTrue())
- })
-
- Context("Issue 715", func() {
- // See https://github.com/pyroscope-io/pyroscope/issues/715
- It("does not return nodes affected by retention policy", func() {
- b, err := os.Open("testdata/issue_715")
- Expect(err).ToNot(HaveOccurred())
- s, err := Deserialize(b)
- Expect(err).ToNot(HaveOccurred())
-
- var keys []string
- st := time.Date(2022, time.January, 12, 9, 40, 0, 0, time.UTC)
- et := time.Date(2022, time.January, 12, 10, 40, 0, 0, time.UTC)
- s.Get(st, et, func(depth int, samples, writes uint64, t time.Time, r *big.Rat) {
- keys = append(keys, strconv.Itoa(depth)+":"+strconv.Itoa(int(t.Unix()))+":"+r.String())
- })
-
- Expect(keys).To(BeEmpty())
- })
-
- It("correctly samples data", func() {
- s := New()
- st := time.Date(2021, time.December, 1, 0, 0, 0, 0, time.UTC)
- et := time.Date(2022, time.January, 1, 0, 0, 0, 0, time.UTC)
- rp := &RetentionPolicy{AbsoluteTime: et}
-
- c := st
- for c.Before(et) {
- e := c.Add(time.Second * time.Duration(10))
- err := s.Put(c, e, 100, func(int, time.Time, *big.Rat, []Addon) {})
- Expect(err).ToNot(HaveOccurred())
- c = e
- }
-
- r, err := s.DeleteNodesBefore(rp)
- Expect(r).To(BeFalse())
- Expect(err).ToNot(HaveOccurred())
-
- gSt := st.Add(-time.Hour)
- gEt := et.Add(time.Hour)
-
- var keys []string
- s.Get(gSt, gEt, func(depth int, samples, writes uint64, t time.Time, r *big.Rat) {
- keys = append(keys, strconv.Itoa(depth)+":"+strconv.Itoa(int(t.Unix()))+":"+r.String())
- })
-
- Expect(keys).To(BeEmpty())
- })
-
- It("correctly samples data with level retention period", func() {
- s := New()
- st := time.Date(2021, time.December, 1, 0, 0, 0, 0, time.UTC)
- et := time.Date(2021, time.December, 2, 0, 0, 0, 0, time.UTC)
-
- c := st
- for c.Before(et) {
- e := c.Add(time.Second * time.Duration(10))
- err := s.Put(c, e, 100, func(int, time.Time, *big.Rat, []Addon) {})
- Expect(err).ToNot(HaveOccurred())
- c = e
- }
-
- r, err := s.DeleteNodesBefore(&RetentionPolicy{Levels: map[int]time.Time{0: et}})
- Expect(r).To(BeFalse())
- Expect(err).ToNot(HaveOccurred())
-
- gSt := time.Date(2021, time.December, 1, 10, 0, 0, 0, time.UTC)
- gEt := gSt.Add(time.Second * 30)
-
- var keys []string
- s.Get(gSt, gEt, func(depth int, samples, writes uint64, t time.Time, r *big.Rat) {
- keys = append(keys, strconv.Itoa(depth)+":"+strconv.Itoa(int(t.Unix()))+":"+r.String())
- })
-
- Expect(keys).To(ConsistOf([]string{
- "1:1638352800:3/10",
- }))
- })
- })
- })
- })
-
- Context("Put", func() {
- Context("When inserts are far apart", func() {
- Context("When second insert is far in the future", func() {
- It("sets root properly", func() {
- log.Println("---")
- s := New()
- s.Put(testing.SimpleTime(1330),
- testing.SimpleTime(1339), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(0))
- s.Put(testing.SimpleTime(1110),
- testing.SimpleTime(1119), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- expectChildrenSamplesAddUpToParentSamples(s.root)
- })
- })
- Context("When second insert is far in the past", func() {
- It("sets root properly", func() {
- log.Println("---")
- s := New()
- s.Put(testing.SimpleTime(2030),
- testing.SimpleTime(2039), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(0))
- s.Put(testing.SimpleTime(0),
- testing.SimpleTime(9), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- expectChildrenSamplesAddUpToParentSamples(s.root)
- })
- })
- })
-
- Context("When empty", func() {
- It("sets root properly", func() {
- s := New()
- s.Put(testing.SimpleTime(0),
- testing.SimpleTime(9), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(0))
- })
-
- It("sets root properly", func() {
- s := New()
- s.Put(testing.SimpleTime(0),
- testing.SimpleTime(49), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(1))
- })
-
- It("sets root properly", func() {
- s := New()
- s.Put(testing.SimpleTime(10),
- testing.SimpleTime(109), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(2))
- })
-
- It("sets root properly", func() {
- s := New()
- s.Put(testing.SimpleTime(10),
- testing.SimpleTime(19), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(0))
- s.Put(testing.SimpleTime(10),
- testing.SimpleTime(19), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- expectChildrenSamplesAddUpToParentSamples(s.root)
- })
-
- It("sets root properly", func() {
- s := New()
- s.Put(testing.SimpleTime(10),
- testing.SimpleTime(19), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(0))
- s.Put(testing.SimpleTime(20),
- testing.SimpleTime(29), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(1))
- expectChildrenSamplesAddUpToParentSamples(s.root)
- })
-
- It("sets root properly", func() {
- s := New()
- s.Put(testing.SimpleTime(10),
- testing.SimpleTime(19), 10, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(0))
- s.Put(testing.SimpleTime(20),
- testing.SimpleTime(39), 10, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(1))
- expectChildrenSamplesAddUpToParentSamples(s.root)
- })
-
- It("sets root properly", func() {
- s := New()
- s.Put(testing.SimpleTime(10),
- testing.SimpleTime(19), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(0))
-
- s.Put(testing.SimpleTime(20),
- testing.SimpleTime(29), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(1))
-
- s.Put(testing.SimpleTime(30),
- testing.SimpleTime(39), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(1))
- expectChildrenSamplesAddUpToParentSamples(s.root)
- })
-
- It("sets root properly", func() {
- s := New()
- s.Put(testing.SimpleTime(30),
- testing.SimpleTime(39), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(0))
-
- s.Put(testing.SimpleTime(20),
- testing.SimpleTime(29), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(1))
-
- s.Put(testing.SimpleTime(10),
- testing.SimpleTime(19), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(1))
-
- Expect(doGet(s, testing.SimpleTime(0), testing.SimpleTime(39))).To(HaveLen(3))
- })
-
- It("works with 3 mins", func() {
- s := New()
- s.Put(testing.SimpleTime(10),
- testing.SimpleTime(70), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(1))
- // Expect(doGet(s, testing.SimpleTime(20, testing.SimpleTime(49))).To(HaveLen(3))
- })
-
- It("sets trie properly, gets work", func() {
- s := New()
-
- s.Put(testing.SimpleTime(0),
- testing.SimpleTime(9), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(0))
-
- s.Put(testing.SimpleTime(100),
- testing.SimpleTime(109), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- expectChildrenSamplesAddUpToParentSamples(s.root)
- Expect(s.root).ToNot(BeNil())
- Expect(s.root.depth).To(Equal(2))
- Expect(s.root.present).To(BeTrue())
- Expect(s.root.children[0]).ToNot(BeNil())
- Expect(s.root.children[0].present).ToNot(BeTrue())
- Expect(s.root.children[1]).ToNot(BeNil())
- Expect(s.root.children[1].present).ToNot(BeTrue())
- Expect(s.root.children[0].children[0].present).To(BeTrue())
- Expect(s.root.children[1].children[0].present).To(BeTrue())
-
- Expect(doGet(s, testing.SimpleTime(0), testing.SimpleTime(9))).To(HaveLen(1))
- Expect(doGet(s, testing.SimpleTime(10), testing.SimpleTime(19))).To(HaveLen(0))
- Expect(doGet(s, testing.SimpleTime(100), testing.SimpleTime(109))).To(HaveLen(1))
- Expect(doGet(s, testing.SimpleTime(0), testing.SimpleTime(109))).To(HaveLen(2))
- Expect(doGet(s, testing.SimpleTime(0), testing.SimpleTime(999))).To(HaveLen(1))
- Expect(doGet(s, testing.SimpleTime(0), testing.SimpleTime(1000))).To(HaveLen(1))
- Expect(doGet(s, testing.SimpleTime(0), testing.SimpleTime(1001))).To(HaveLen(1))
- Expect(doGet(s, testing.SimpleTime(0), testing.SimpleTime(989))).To(HaveLen(2))
- })
- })
- })
-})
diff --git a/pkg/og/storage/segment/serialization.go b/pkg/og/storage/segment/serialization.go
deleted file mode 100644
index e484915b72..0000000000
--- a/pkg/og/storage/segment/serialization.go
+++ /dev/null
@@ -1,234 +0,0 @@
-package segment
-
-import (
- "bufio"
- "bytes"
- "errors"
- "io"
- "time"
-
- "github.com/grafana/pyroscope/pkg/og/storage/metadata"
- "github.com/grafana/pyroscope/pkg/og/util/serialization"
- "github.com/grafana/pyroscope/pkg/og/util/varint"
-)
-
-// serialization format version. it's not very useful right now, but it will be in the future
-const currentVersion = 3
-
-func (s *Segment) populateFromMetadata(mdata map[string]interface{}) {
- if v, ok := mdata["sampleRate"]; ok {
- s.sampleRate = uint32(v.(float64))
- }
- if v, ok := mdata["spyName"]; ok {
- s.spyName = v.(string)
- }
- if v, ok := mdata["units"]; ok {
- s.units = metadata.Units(v.(string))
- }
- if v, ok := mdata["aggregationType"]; ok {
- s.aggregationType = metadata.AggregationType(v.(string))
- }
-}
-
-func (s *Segment) generateMetadata() map[string]interface{} {
- return map[string]interface{}{
- "sampleRate": s.sampleRate,
- "spyName": s.spyName,
- "units": s.units,
- "aggregationType": s.aggregationType,
- }
-}
-
-func (s *Segment) Serialize(w io.Writer) error {
- s.m.RLock()
- defer s.m.RUnlock()
-
- vw := varint.NewWriter()
- if _, err := vw.Write(w, currentVersion); err != nil {
- return err
- }
- if err := serialization.WriteMetadata(w, s.generateMetadata()); err != nil {
- return err
- }
-
- if s.root == nil {
- return nil
- }
-
- s.serialize(w, vw, s.root)
-
- return s.watermarks.serialize(w)
-}
-
-func (s *Segment) serialize(w io.Writer, vw varint.Writer, n *streeNode) {
- vw.Write(w, uint64(n.depth))
- vw.Write(w, uint64(n.time.Unix()))
- vw.Write(w, n.samples)
- vw.Write(w, n.writes)
- p := uint64(0)
- if n.present {
- p = 1
- }
- vw.Write(w, p)
-
- // depth
- // time
- // keyInChunks
- // children
- l := 0
- for _, v := range n.children {
- if v != nil {
- l++
- }
- }
-
- vw.Write(w, uint64(l))
- for _, v := range n.children {
- if v != nil {
- s.serialize(w, vw, v)
- }
- }
-}
-
-var errMaxDepth = errors.New("depth is too high")
-
-func Deserialize(r io.Reader) (*Segment, error) {
- s := New()
- br := bufio.NewReader(r) // TODO if it's already a bytereader skip
-
- // reads serialization format version, see comment at the top
- version, err := varint.Read(br)
- if err != nil {
- return nil, err
- }
-
- mdata, err := serialization.ReadMetadata(br)
- if err != nil {
- return nil, err
- }
- s.populateFromMetadata(mdata)
-
- // In some cases, there can be no nodes.
- if br.Buffered() == 0 {
- return s, nil
- }
-
- parents := []*streeNode{nil}
- for len(parents) > 0 {
- depth, err := varint.Read(br)
- if err != nil {
- return nil, err
- }
- if int(depth) >= len(durations) {
- return nil, errMaxDepth
- }
- timeVal, err := varint.Read(br)
- if err != nil {
- return nil, err
- }
- samplesVal, err := varint.Read(br)
- if err != nil {
- return nil, err
- }
- var writesVal uint64
- if version >= 2 {
- writesVal, err = varint.Read(br)
- if err != nil {
- return nil, err
- }
- }
- presentVal, err := varint.Read(br)
- if err != nil {
- return nil, err
- }
- node := newNode(time.Unix(int64(timeVal), 0), int(depth), multiplier)
- if presentVal == 1 {
- node.present = true
- }
- node.samples = samplesVal
- node.writes = writesVal
- if s.root == nil {
- s.root = node
- }
-
- parent := parents[0]
- parents = parents[1:]
- if parent != nil {
- parent.replace(node)
- }
- childrenLen, err := varint.Read(br)
- if err != nil {
- return nil, err
- }
-
- r := []*streeNode{}
- for i := 0; i < int(childrenLen); i++ {
- r = append(r, node)
- }
- parents = append(r, parents...)
- }
-
- if version >= 3 {
- if err = deserializeWatermarks(br, &s.watermarks); err != nil {
- return nil, err
- }
- }
-
- return s, nil
-}
-
-func (s *Segment) Bytes() ([]byte, error) {
- b := bytes.Buffer{}
- if err := s.Serialize(&b); err != nil {
- return nil, err
- }
- return b.Bytes(), nil
-}
-
-func FromBytes(p []byte) (*Segment, error) {
- return Deserialize(bytes.NewReader(p))
-}
-
-func (w watermarks) serialize(dst io.Writer) error {
- vw := varint.NewWriter()
- if _, err := vw.Write(dst, uint64(w.absoluteTime.UTC().Unix())); err != nil {
- return err
- }
- if _, err := vw.Write(dst, uint64(len(w.levels))); err != nil {
- return err
- }
- for k, v := range w.levels {
- if _, err := vw.Write(dst, uint64(k)); err != nil {
- return err
- }
- if _, err := vw.Write(dst, uint64(v.UTC().Unix())); err != nil {
- return err
- }
- }
- return nil
-}
-
-func deserializeWatermarks(r io.ByteReader, w *watermarks) error {
- a, err := varint.Read(r)
- if err != nil {
- return err
- }
- w.absoluteTime = time.Unix(int64(a), 0).UTC()
- l, err := varint.Read(r)
- if err != nil {
- return err
- }
- levels := int(l)
- for i := 0; i < levels; i++ {
- k, err := varint.Read(r)
- if err != nil {
- return err
- }
- v, err := varint.Read(r)
- if err != nil {
- return err
- }
- w.levels[int(k)] = time.Unix(int64(v), 0).UTC()
- }
- return nil
-}
diff --git a/pkg/og/storage/segment/serialization_bench_test.go b/pkg/og/storage/segment/serialization_bench_test.go
deleted file mode 100644
index b4ae513397..0000000000
--- a/pkg/og/storage/segment/serialization_bench_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package segment
-
-import (
- "bytes"
- "fmt"
- "math/big"
- "math/rand"
- "testing"
- "time"
-
- ptesting "github.com/grafana/pyroscope/pkg/og/testing"
-)
-
-func serialize(s *Segment) []byte {
- var buf bytes.Buffer
- s.Serialize(&buf)
- return buf.Bytes()
-}
-
-func BenchmarkSerialize(b *testing.B) {
- for k := 10; k <= 1000000; k *= 10 {
- s := New()
- for i := 0; i < k; i++ {
- s.Put(ptesting.SimpleTime(i*10), ptesting.SimpleTime(i*10+9), uint64(rand.Intn(100)), func(de int, t time.Time, r *big.Rat, a []Addon) {})
- }
- b.ResetTimer()
- b.Run(fmt.Sprintf("serialize %d", k), func(b *testing.B) {
- for i := 0; i < b.N; i++ {
- _ = serialize(s)
- }
- })
- }
-}
diff --git a/pkg/og/storage/segment/serialization_test.go b/pkg/og/storage/segment/serialization_test.go
deleted file mode 100644
index 9408fe3f6b..0000000000
--- a/pkg/og/storage/segment/serialization_test.go
+++ /dev/null
@@ -1,128 +0,0 @@
-package segment
-
-import (
- "bytes"
- "log"
- "math/big"
- "time"
-
- . "github.com/onsi/ginkgo/v2"
- . "github.com/onsi/gomega"
- "github.com/grafana/pyroscope/pkg/og/testing"
-)
-
-var serializedExampleV1 = "\x01({\"sampleRate\":0,\"spyName\":\"\",\"units\":\"\"}" +
- "\x01\x80\x92\xb8Ø\xfe\xff\xff\xff\x01\x03\x01\x03\x00\x80\x92\xb8Ø\xfe\xff\xff" +
- "\xff\x01\x01\x01\x00\x00\x8a\x92\xb8Ø\xfe\xff\xff\xff\x01\x01\x01\x00\x00\x94\x92" +
- "\xb8Ø\xfe\xff\xff\xff\x01\x01\x01\x00"
-
-var serializedExampleV2 = "\x02={\"aggregationType\":\"\",\"sampleRate\":0,\"spyName\":\"\",\"units\":\"\"}" +
- "\x01\x80\x92\xb8Ø\xfe\xff\xff\xff\x01\x03\x03\x01\x03\x00\x80\x92\xb8Ø\xfe\xff\xff\xff\x01\x01\x01\x01\x00" +
- "\x00\x8a\x92\xb8Ø\xfe\xff\xff\xff\x01\x01\x01\x01\x00\x00\x94\x92\xb8Ø\xfe\xff\xff\xff\x01\x01\x01\x01\x00"
-
-var serializedExampleV3 = "\x03={\"aggregationType\":\"\",\"sampleRate\":0,\"spyName\":\"\",\"units\":\"\"}" +
- "\x01\x80\x92\xb8Ø\xfe\xff\xff\xff\x01\x03\x03\x01\x03\x00\x80\x92\xb8Ø\xfe\xff\xff\xff\x01\x01\x01\x01\x00" +
- "\x00\x8a\x92\xb8Ø\xfe\xff\xff\xff\x01\x01\x01\x01\x00\x00\x94\x92\xb8Ø\xfe\xff\xff\xff\x01\x01\x01\x01\x00" +
- "\x80\x92\xb8Ø\xfe\xff\xff\xff\x01\x00"
-
-var _ = Describe("stree", func() {
- Context("Serialize / Deserialize", func() {
- It("both functions work properly", func() {
- s := New()
- s.Put(testing.SimpleTime(0),
- testing.SimpleTime(9), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleTime(10),
- testing.SimpleTime(19), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleTime(20),
- testing.SimpleTime(29), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
-
- s.watermarks = watermarks{absoluteTime: testing.SimpleTime(100)}
-
- var buf bytes.Buffer
- s.Serialize(&buf)
- serialized := buf.Bytes()
- log.Printf("%q", serialized)
-
- s, err := Deserialize(bytes.NewReader(serialized))
- Expect(err).ToNot(HaveOccurred())
- var buf2 bytes.Buffer
- s.Serialize(&buf2)
- serialized2 := buf2.Bytes()
- Expect(string(serialized2)).To(Equal(string(serialized)))
- })
- })
-
- Context("Serialize", func() {
- It("serializes segment tree properly", func() {
- s := New()
- s.Put(testing.SimpleTime(0),
- testing.SimpleTime(9), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleTime(10),
- testing.SimpleTime(19), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleTime(20),
- testing.SimpleTime(29), 1, func(de int, t time.Time, r *big.Rat, a []Addon) {})
-
- var buf bytes.Buffer
- s.Serialize(&buf)
- serialized := buf.Bytes()
- log.Printf("q: %q", string(serialized))
- Expect(string(serialized)).To(Equal(serializedExampleV3))
- })
- })
-
- Context("Deserialize", func() {
- Context("v1", func() {
- It("deserializes v1 data", func() {
- s, err := Deserialize(bytes.NewReader([]byte(serializedExampleV1)))
- Expect(err).ToNot(HaveOccurred())
- Expect(s.root.children[0]).ToNot(BeNil())
- Expect(s.root.children[1]).ToNot(BeNil())
- Expect(s.root.children[2]).ToNot(BeNil())
- Expect(s.root.children[3]).To(BeNil())
- })
- })
- Context("v2", func() {
- It("deserializes v2 data", func() {
- s, err := Deserialize(bytes.NewReader([]byte(serializedExampleV2)))
- Expect(err).ToNot(HaveOccurred())
- Expect(s.root.children[0]).ToNot(BeNil())
- Expect(s.root.children[1]).ToNot(BeNil())
- Expect(s.root.children[2]).ToNot(BeNil())
- Expect(s.root.children[3]).To(BeNil())
- Expect(s.root.writes).To(Equal(uint64(3)))
- })
- })
- Context("v3", func() {
- It("deserializes v3 data", func() {
- s, err := Deserialize(bytes.NewReader([]byte(serializedExampleV3)))
- Expect(err).ToNot(HaveOccurred())
- Expect(s.root.children[0]).ToNot(BeNil())
- Expect(s.root.children[1]).ToNot(BeNil())
- Expect(s.root.children[2]).ToNot(BeNil())
- Expect(s.root.children[3]).To(BeNil())
- Expect(s.root.writes).To(Equal(uint64(3)))
- })
- })
- })
-
- Context("watermarks serialize / deserialize", func() {
- It("both functions work properly", func() {
- w := watermarks{
- absoluteTime: testing.SimpleTime(100),
- levels: map[int]time.Time{
- 0: testing.SimpleTime(100),
- 1: testing.SimpleTime(1000),
- },
- }
-
- var buf bytes.Buffer
- err := w.serialize(&buf)
- Expect(err).ToNot(HaveOccurred())
-
- s := New()
- err = deserializeWatermarks(bytes.NewReader(buf.Bytes()), &s.watermarks)
- Expect(err).ToNot(HaveOccurred())
- Expect(w).To(Equal(s.watermarks))
- })
- })
-})
diff --git a/pkg/og/storage/segment/timeline.go b/pkg/og/storage/segment/timeline.go
index cfb35d11fb..8d204868e6 100644
--- a/pkg/og/storage/segment/timeline.go
+++ b/pkg/og/storage/segment/timeline.go
@@ -32,107 +32,3 @@ type Timeline struct {
// 4. Data before 1635506200 has resolution 10000s
Watermarks map[int]int64 `json:"watermarks"`
}
-
-func GenerateTimeline(st, et time.Time) *Timeline {
- st, et = normalize(st, et)
- totalDuration := et.Sub(st)
- minDuration := totalDuration / time.Duration(1024)
- delta := durations[0]
- for _, d := range durations {
- if d < 0 {
- break
- }
- if d < minDuration {
- delta = d
- }
- }
- return &Timeline{
- st: st,
- et: et,
- StartTime: st.Unix(),
- Samples: make([]uint64, totalDuration/delta),
- durationDelta: delta,
- DurationDeltaNormalized: int64(delta / time.Second),
- Watermarks: make(map[int]int64),
- }
-}
-
-func (tl *Timeline) PopulateTimeline(s *Segment) {
- s.m.Lock()
- if s.root != nil {
- s.root.populateTimeline(tl, s)
- }
- s.m.Unlock()
-}
-
-func (sn streeNode) populateTimeline(tl *Timeline, s *Segment) {
- if sn.relationship(tl.st, tl.et) == outside {
- return
- }
-
- var (
- currentDuration = durations[sn.depth]
- levelWatermark time.Time
- hasDataBefore bool
- )
-
- if sn.depth > 0 {
- levelWatermark = s.watermarks.levels[sn.depth-1]
- }
-
- if len(sn.children) > 0 && currentDuration >= tl.durationDelta {
- for i, v := range sn.children {
- if v != nil {
- v.populateTimeline(tl, s)
- hasDataBefore = true
- continue
- }
- if hasDataBefore || levelWatermark.IsZero() || sn.isBefore(s.watermarks.absoluteTime) {
- continue
- }
- if c := sn.createSampledChild(i); c.isBefore(levelWatermark) && c.isAfter(s.watermarks.absoluteTime) {
- c.populateTimeline(tl, s)
- if m := c.time.Add(durations[c.depth]); m.After(tl.st) {
- tl.Watermarks[c.depth+1] = c.time.Add(durations[c.depth]).Unix()
- }
- }
- }
- return
- }
-
- nodeTime := sn.time
- if currentDuration < tl.durationDelta {
- currentDuration = tl.durationDelta
- nodeTime = nodeTime.Truncate(currentDuration)
- }
-
- i := int(nodeTime.Sub(tl.st) / tl.durationDelta)
- rightBoundary := i + int(currentDuration/tl.durationDelta)
-
- l := len(tl.Samples)
- for i < rightBoundary {
- if i >= 0 && i < l {
- if tl.Samples[i] == 0 {
- tl.Samples[i] = 1
- }
- tl.Samples[i] += sn.samples
- }
- i++
- }
-}
-
-func (sn *streeNode) createSampledChild(i int) *streeNode {
- s := &streeNode{
- depth: sn.depth - 1,
- time: sn.time.Add(time.Duration(i) * durations[sn.depth-1]),
- samples: sn.samples / multiplier,
- writes: sn.samples / multiplier,
- }
- if s.depth > 0 {
- s.children = make([]*streeNode, multiplier)
- for j := range s.children {
- s.children[j] = s.createSampledChild(j)
- }
- }
- return s
-}
diff --git a/pkg/og/storage/segment/timeline_test.go b/pkg/og/storage/segment/timeline_test.go
deleted file mode 100644
index cffa425c82..0000000000
--- a/pkg/og/storage/segment/timeline_test.go
+++ /dev/null
@@ -1,134 +0,0 @@
-package segment
-
-import (
- "math/big"
- "time"
-
- . "github.com/onsi/ginkgo/v2"
- . "github.com/onsi/gomega"
- "github.com/grafana/pyroscope/pkg/og/testing"
-)
-
-var _ = Describe("timeline", func() {
- var (
- timeline *Timeline
- st int
- et int
- )
-
- BeforeEach(func() {
- st = 0
- et = 40
- })
- JustBeforeEach(func() {
- timeline = GenerateTimeline(
- testing.SimpleTime(st),
- testing.SimpleTime(et),
- )
- })
-
- Describe("PopulateTimeline", func() {
- Context("empty segment", func() {
- It("works as expected", func(done Done) {
- s := New()
- timeline.PopulateTimeline(s)
- Expect(timeline.Samples).To(Equal([]uint64{
- 0,
- 0,
- 0,
- 0,
- }))
- close(done)
- })
- })
- Context("one level", func() {
- It("works as expected", func() {
- done := make(chan interface{})
- go func() {
- s := New()
- s.Put(testing.SimpleTime(0),
- testing.SimpleTime(9), 2, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleTime(10),
- testing.SimpleTime(19), 5, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleTime(20),
- testing.SimpleTime(29), 0, func(de int, t time.Time, r *big.Rat, a []Addon) {})
-
- timeline.PopulateTimeline(s)
- Expect(timeline.Samples).To(Equal([]uint64{
- 3,
- 6,
- 1,
- 0,
- }))
-
- close(done)
- }()
- Eventually(done, 5).Should(BeClosed())
- })
- })
- Context("multiple Levels", func() {
- BeforeEach(func() {
- st = 0
- et = 365 * 24 * 60 * 60
- })
-
- It("works as expected", func() {
- done := make(chan interface{})
- go func() {
- s := New()
- s.Put(testing.SimpleTime(0),
- testing.SimpleTime(9), 2, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleTime(10),
- testing.SimpleTime(19), 5, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleTime(20),
- testing.SimpleTime(29), 0, func(de int, t time.Time, r *big.Rat, a []Addon) {})
-
- timeline.PopulateTimeline(s)
- expected := make([]uint64, 3153)
- expected[0] = 8
- Expect(timeline.Samples).To(Equal(expected))
-
- close(done)
- }()
- Eventually(done, 5).Should(BeClosed())
- })
- })
-
- Context("with threshold", func() {
- BeforeEach(func() {
- st = 0
- et = 365 * 24 * 60 * 60
- })
-
- It("removed nodes are down-sampled", func() {
- done := make(chan interface{})
- go func() {
- s := New()
- now := time.Now()
- s.Put(testing.SimpleTime(0),
- testing.SimpleTime(9), 2, func(de int, t time.Time, r *big.Rat, a []Addon) {})
- s.Put(testing.SimpleTime(10),
- testing.SimpleTime(19), 5, func(de int, t time.Time, r *big.Rat, a []Addon) {})
-
- // To prevent segment root removal.
- s.Put(now.Add(-10*time.Second),
- now, 0, func(de int, t time.Time, r *big.Rat, a []Addon) {})
-
- threshold := NewRetentionPolicy().
- SetLevelPeriod(0, time.Second).
- SetLevelPeriod(1, time.Minute)
-
- _, err := s.DeleteNodesBefore(threshold)
- Expect(err).ToNot(HaveOccurred())
- timeline.PopulateTimeline(s)
- expected := make([]uint64, 3153)
- expected[0] = 8
- Expect(timeline.Samples).To(Equal(expected))
-
- close(done)
- }()
- Eventually(done, 5).Should(BeClosed())
- })
- })
- })
-})
diff --git a/pkg/og/storage/segment/visualize.go b/pkg/og/storage/segment/visualize.go
deleted file mode 100644
index 81990fea75..0000000000
--- a/pkg/og/storage/segment/visualize.go
+++ /dev/null
@@ -1,44 +0,0 @@
-package segment
-
-import (
- "time"
-)
-
-// var highchartsTemplate *template.Template
-
-func init() {
-}
-
-type visualizeNode struct {
- T1 time.Time
- T2 time.Time
- Depth int
- HasTrie bool
-}
-
-// This is here for debugging
-func (s *Segment) Visualize() {
- res := []*visualizeNode{}
- if s.root != nil {
- nodes := []*streeNode{s.root}
- for len(nodes) != 0 {
- n := nodes[0]
- nodes = nodes[1:]
- // log.Debug("node:", durations[n.depth])
- res = append(res, &visualizeNode{
- T1: n.time.UTC(),
- T2: n.time.Add(durations[n.depth]).UTC(),
- Depth: n.depth,
- HasTrie: n.present,
- })
- for _, v := range n.children {
- if v != nil {
- nodes = append(nodes, v)
- }
- }
- }
- }
-
- // jsonBytes, _ := json.MarshalIndent(res, "", " ")
- // log.Debug(string(jsonBytes))
-}
diff --git a/pkg/og/testing/time.go b/pkg/og/testing/time.go
index 11ca446a35..0ba46ddcf8 100644
--- a/pkg/og/testing/time.go
+++ b/pkg/og/testing/time.go
@@ -12,9 +12,6 @@ func ParseTime(str string) time.Time {
return r.UTC()
}
-func SimpleTime(i int) time.Time {
- return time.Time{}.Add(time.Duration(i) * time.Second).UTC()
-}
func SimpleUTime(i int) time.Time {
return time.Unix(int64(i), 0)
From bdc0079ac2b71b62a2ed9e87e89abb1bb7af59b6 Mon Sep 17 00:00:00 2001
From: Christian Simon
Date: Mon, 5 Aug 2024 11:28:35 +0100
Subject: [PATCH 38/43] chore: Apparently github broke docker compose: (#3466)
Related: https://github.com/actions/runner-images/issues/9692
---
.github/workflows/e2e.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml
index e0b3a8f578..97d1278b43 100644
--- a/.github/workflows/e2e.yaml
+++ b/.github/workflows/e2e.yaml
@@ -60,7 +60,7 @@ jobs:
- run: yarn --frozen-lockfile
- run: make build
- name: run nginx with /foobar/
- run: docker-compose -f scripts/base-url/docker-compose.yaml up -d
+ run: docker compose -f scripts/base-url/docker-compose.yaml up -d
- name: Cypress run
uses: cypress-io/github-action@v5
with:
From 1e372a1279a89130c8bccbcaa531eeac8bd555d4 Mon Sep 17 00:00:00 2001
From: Christian Simon
Date: Wed, 7 Aug 2024 10:28:50 +0100
Subject: [PATCH 39/43] chore: Refactor block listing. (#3465)
We stopped using the prefix based listing a while ago, so this brings us
back to upstream of thanos-io/objstore.
---
Makefile | 2 +-
.../go/adhocprofiles/v1/adhocprofiles.pb.go | 20 +--
api/gen/proto/go/google/v1/profile.pb.go | 20 +--
api/gen/proto/go/ingester/v1/ingester.pb.go | 74 +++++------
api/gen/proto/go/push/v1/push.pb.go | 12 +-
api/gen/proto/go/querier/v1/querier.pb.go | 52 ++++----
api/gen/proto/go/settings/v1/setting.pb.go | 14 +--
api/gen/proto/go/status/v1/status.pb.go | 14 +--
.../go/storegateway/v1/storegateway.pb.go | 4 +-
api/gen/proto/go/types/v1/types.pb.go | 36 +++---
api/gen/proto/go/vcs/v1/vcs.pb.go | 26 ++--
api/gen/proto/go/version/v1/version.pb.go | 12 +-
api/go.mod | 12 +-
api/go.sum | 29 ++---
ebpf/go.mod | 24 ++--
ebpf/go.sum | 69 ++++------
go.mod | 55 ++++----
go.sum | 118 +++++++++---------
go.work.sum | 41 +++++-
pkg/frontend/frontendpb/frontend.pb.go | 8 +-
.../providers/filesystem/bucket_client.go | 93 --------------
.../filesystem/bucket_client_test.go | 25 ----
pkg/og/storage/tree/profile.pb.go | 20 +--
pkg/phlaredb/block/list.go | 115 -----------------
pkg/phlaredb/block/list_test.go | 41 ------
pkg/querier/stats/stats.pb.go | 6 +-
pkg/scheduler/schedulerpb/scheduler.pb.go | 16 +--
pkg/util/httpgrpc/httpgrpc.pb.go | 10 +-
28 files changed, 347 insertions(+), 621 deletions(-)
delete mode 100644 pkg/phlaredb/block/list_test.go
diff --git a/Makefile b/Makefile
index cd977fa82e..dd37c00785 100644
--- a/Makefile
+++ b/Makefile
@@ -267,7 +267,7 @@ $(BIN)/golangci-lint: Makefile
$(BIN)/protoc-gen-go: Makefile go.mod
@mkdir -p $(@D)
- GOBIN=$(abspath $(@D)) $(GO) install google.golang.org/protobuf/cmd/protoc-gen-go@v1.34.1
+ GOBIN=$(abspath $(@D)) $(GO) install google.golang.org/protobuf/cmd/protoc-gen-go@v1.34.2
$(BIN)/protoc-gen-connect-go: Makefile go.mod
@mkdir -p $(@D)
diff --git a/api/gen/proto/go/adhocprofiles/v1/adhocprofiles.pb.go b/api/gen/proto/go/adhocprofiles/v1/adhocprofiles.pb.go
index 3a581b3aee..b92ebcf4eb 100644
--- a/api/gen/proto/go/adhocprofiles/v1/adhocprofiles.pb.go
+++ b/api/gen/proto/go/adhocprofiles/v1/adhocprofiles.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: adhocprofiles/v1/adhocprofiles.proto
@@ -495,7 +495,7 @@ func file_adhocprofiles_v1_adhocprofiles_proto_rawDescGZIP() []byte {
}
var file_adhocprofiles_v1_adhocprofiles_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
-var file_adhocprofiles_v1_adhocprofiles_proto_goTypes = []interface{}{
+var file_adhocprofiles_v1_adhocprofiles_proto_goTypes = []any{
(*AdHocProfilesUploadRequest)(nil), // 0: adhocprofiles.v1.AdHocProfilesUploadRequest
(*AdHocProfilesGetRequest)(nil), // 1: adhocprofiles.v1.AdHocProfilesGetRequest
(*AdHocProfilesGetResponse)(nil), // 2: adhocprofiles.v1.AdHocProfilesGetResponse
@@ -524,7 +524,7 @@ func file_adhocprofiles_v1_adhocprofiles_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*AdHocProfilesUploadRequest); i {
case 0:
return &v.state
@@ -536,7 +536,7 @@ func file_adhocprofiles_v1_adhocprofiles_proto_init() {
return nil
}
}
- file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*AdHocProfilesGetRequest); i {
case 0:
return &v.state
@@ -548,7 +548,7 @@ func file_adhocprofiles_v1_adhocprofiles_proto_init() {
return nil
}
}
- file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*AdHocProfilesGetResponse); i {
case 0:
return &v.state
@@ -560,7 +560,7 @@ func file_adhocprofiles_v1_adhocprofiles_proto_init() {
return nil
}
}
- file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*AdHocProfilesListRequest); i {
case 0:
return &v.state
@@ -572,7 +572,7 @@ func file_adhocprofiles_v1_adhocprofiles_proto_init() {
return nil
}
}
- file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*AdHocProfilesListResponse); i {
case 0:
return &v.state
@@ -584,7 +584,7 @@ func file_adhocprofiles_v1_adhocprofiles_proto_init() {
return nil
}
}
- file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[5].Exporter = func(v any, i int) any {
switch v := v.(*AdHocProfilesProfileMetadata); i {
case 0:
return &v.state
@@ -597,8 +597,8 @@ func file_adhocprofiles_v1_adhocprofiles_proto_init() {
}
}
}
- file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[0].OneofWrappers = []interface{}{}
- file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[1].OneofWrappers = []interface{}{}
+ file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[0].OneofWrappers = []any{}
+ file_adhocprofiles_v1_adhocprofiles_proto_msgTypes[1].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
diff --git a/api/gen/proto/go/google/v1/profile.pb.go b/api/gen/proto/go/google/v1/profile.pb.go
index 4df2323579..9d2a74865e 100644
--- a/api/gen/proto/go/google/v1/profile.pb.go
+++ b/api/gen/proto/go/google/v1/profile.pb.go
@@ -38,7 +38,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: google/v1/profile.proto
@@ -954,7 +954,7 @@ func file_google_v1_profile_proto_rawDescGZIP() []byte {
}
var file_google_v1_profile_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
-var file_google_v1_profile_proto_goTypes = []interface{}{
+var file_google_v1_profile_proto_goTypes = []any{
(*Profile)(nil), // 0: google.v1.Profile
(*ValueType)(nil), // 1: google.v1.ValueType
(*Sample)(nil), // 2: google.v1.Sample
@@ -986,7 +986,7 @@ func file_google_v1_profile_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_google_v1_profile_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_google_v1_profile_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*Profile); i {
case 0:
return &v.state
@@ -998,7 +998,7 @@ func file_google_v1_profile_proto_init() {
return nil
}
}
- file_google_v1_profile_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_google_v1_profile_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*ValueType); i {
case 0:
return &v.state
@@ -1010,7 +1010,7 @@ func file_google_v1_profile_proto_init() {
return nil
}
}
- file_google_v1_profile_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ file_google_v1_profile_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*Sample); i {
case 0:
return &v.state
@@ -1022,7 +1022,7 @@ func file_google_v1_profile_proto_init() {
return nil
}
}
- file_google_v1_profile_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ file_google_v1_profile_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*Label); i {
case 0:
return &v.state
@@ -1034,7 +1034,7 @@ func file_google_v1_profile_proto_init() {
return nil
}
}
- file_google_v1_profile_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ file_google_v1_profile_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*Mapping); i {
case 0:
return &v.state
@@ -1046,7 +1046,7 @@ func file_google_v1_profile_proto_init() {
return nil
}
}
- file_google_v1_profile_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ file_google_v1_profile_proto_msgTypes[5].Exporter = func(v any, i int) any {
switch v := v.(*Location); i {
case 0:
return &v.state
@@ -1058,7 +1058,7 @@ func file_google_v1_profile_proto_init() {
return nil
}
}
- file_google_v1_profile_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ file_google_v1_profile_proto_msgTypes[6].Exporter = func(v any, i int) any {
switch v := v.(*Line); i {
case 0:
return &v.state
@@ -1070,7 +1070,7 @@ func file_google_v1_profile_proto_init() {
return nil
}
}
- file_google_v1_profile_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ file_google_v1_profile_proto_msgTypes[7].Exporter = func(v any, i int) any {
switch v := v.(*Function); i {
case 0:
return &v.state
diff --git a/api/gen/proto/go/ingester/v1/ingester.pb.go b/api/gen/proto/go/ingester/v1/ingester.pb.go
index 3b679ca791..a805190c13 100644
--- a/api/gen/proto/go/ingester/v1/ingester.pb.go
+++ b/api/gen/proto/go/ingester/v1/ingester.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: ingester/v1/ingester.proto
@@ -2200,7 +2200,7 @@ func file_ingester_v1_ingester_proto_rawDescGZIP() []byte {
var file_ingester_v1_ingester_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_ingester_v1_ingester_proto_msgTypes = make([]protoimpl.MessageInfo, 29)
-var file_ingester_v1_ingester_proto_goTypes = []interface{}{
+var file_ingester_v1_ingester_proto_goTypes = []any{
(StacktracesMergeFormat)(0), // 0: ingester.v1.StacktracesMergeFormat
(*ProfileTypesRequest)(nil), // 1: ingester.v1.ProfileTypesRequest
(*ProfileTypesResponse)(nil), // 2: ingester.v1.ProfileTypesResponse
@@ -2317,7 +2317,7 @@ func file_ingester_v1_ingester_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_ingester_v1_ingester_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*ProfileTypesRequest); i {
case 0:
return &v.state
@@ -2329,7 +2329,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*ProfileTypesResponse); i {
case 0:
return &v.state
@@ -2341,7 +2341,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*SeriesRequest); i {
case 0:
return &v.state
@@ -2353,7 +2353,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*SeriesResponse); i {
case 0:
return &v.state
@@ -2365,7 +2365,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*FlushRequest); i {
case 0:
return &v.state
@@ -2377,7 +2377,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[5].Exporter = func(v any, i int) any {
switch v := v.(*FlushResponse); i {
case 0:
return &v.state
@@ -2389,7 +2389,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[6].Exporter = func(v any, i int) any {
switch v := v.(*SelectProfilesRequest); i {
case 0:
return &v.state
@@ -2401,7 +2401,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[7].Exporter = func(v any, i int) any {
switch v := v.(*MergeProfilesStacktracesRequest); i {
case 0:
return &v.state
@@ -2413,7 +2413,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[8].Exporter = func(v any, i int) any {
switch v := v.(*MergeProfilesStacktracesResult); i {
case 0:
return &v.state
@@ -2425,7 +2425,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[9].Exporter = func(v any, i int) any {
switch v := v.(*MergeProfilesStacktracesResponse); i {
case 0:
return &v.state
@@ -2437,7 +2437,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[10].Exporter = func(v any, i int) any {
switch v := v.(*SelectSpanProfileRequest); i {
case 0:
return &v.state
@@ -2449,7 +2449,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[11].Exporter = func(v any, i int) any {
switch v := v.(*MergeSpanProfileRequest); i {
case 0:
return &v.state
@@ -2461,7 +2461,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[12].Exporter = func(v any, i int) any {
switch v := v.(*MergeSpanProfileResponse); i {
case 0:
return &v.state
@@ -2473,7 +2473,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[13].Exporter = func(v any, i int) any {
switch v := v.(*MergeSpanProfileResult); i {
case 0:
return &v.state
@@ -2485,7 +2485,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[14].Exporter = func(v any, i int) any {
switch v := v.(*ProfileSets); i {
case 0:
return &v.state
@@ -2497,7 +2497,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[15].Exporter = func(v any, i int) any {
switch v := v.(*SeriesProfile); i {
case 0:
return &v.state
@@ -2509,7 +2509,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[16].Exporter = func(v any, i int) any {
switch v := v.(*Profile); i {
case 0:
return &v.state
@@ -2521,7 +2521,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[17].Exporter = func(v any, i int) any {
switch v := v.(*StacktraceSample); i {
case 0:
return &v.state
@@ -2533,7 +2533,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[18].Exporter = func(v any, i int) any {
switch v := v.(*MergeProfilesLabelsRequest); i {
case 0:
return &v.state
@@ -2545,7 +2545,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[19].Exporter = func(v any, i int) any {
switch v := v.(*MergeProfilesLabelsResponse); i {
case 0:
return &v.state
@@ -2557,7 +2557,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[20].Exporter = func(v any, i int) any {
switch v := v.(*MergeProfilesPprofRequest); i {
case 0:
return &v.state
@@ -2569,7 +2569,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[21].Exporter = func(v any, i int) any {
switch v := v.(*MergeProfilesPprofResponse); i {
case 0:
return &v.state
@@ -2581,7 +2581,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[22].Exporter = func(v any, i int) any {
switch v := v.(*BlockMetadataRequest); i {
case 0:
return &v.state
@@ -2593,7 +2593,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[23].Exporter = func(v any, i int) any {
switch v := v.(*BlockMetadataResponse); i {
case 0:
return &v.state
@@ -2605,7 +2605,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[24].Exporter = func(v any, i int) any {
switch v := v.(*Hints); i {
case 0:
return &v.state
@@ -2617,7 +2617,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[25].Exporter = func(v any, i int) any {
switch v := v.(*BlockHints); i {
case 0:
return &v.state
@@ -2629,7 +2629,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[26].Exporter = func(v any, i int) any {
switch v := v.(*GetBlockStatsRequest); i {
case 0:
return &v.state
@@ -2641,7 +2641,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[27].Exporter = func(v any, i int) any {
switch v := v.(*GetBlockStatsResponse); i {
case 0:
return &v.state
@@ -2653,7 +2653,7 @@ func file_ingester_v1_ingester_proto_init() {
return nil
}
}
- file_ingester_v1_ingester_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+ file_ingester_v1_ingester_proto_msgTypes[28].Exporter = func(v any, i int) any {
switch v := v.(*BlockStats); i {
case 0:
return &v.state
@@ -2666,12 +2666,12 @@ func file_ingester_v1_ingester_proto_init() {
}
}
}
- file_ingester_v1_ingester_proto_msgTypes[6].OneofWrappers = []interface{}{}
- file_ingester_v1_ingester_proto_msgTypes[7].OneofWrappers = []interface{}{}
- file_ingester_v1_ingester_proto_msgTypes[10].OneofWrappers = []interface{}{}
- file_ingester_v1_ingester_proto_msgTypes[11].OneofWrappers = []interface{}{}
- file_ingester_v1_ingester_proto_msgTypes[18].OneofWrappers = []interface{}{}
- file_ingester_v1_ingester_proto_msgTypes[20].OneofWrappers = []interface{}{}
+ file_ingester_v1_ingester_proto_msgTypes[6].OneofWrappers = []any{}
+ file_ingester_v1_ingester_proto_msgTypes[7].OneofWrappers = []any{}
+ file_ingester_v1_ingester_proto_msgTypes[10].OneofWrappers = []any{}
+ file_ingester_v1_ingester_proto_msgTypes[11].OneofWrappers = []any{}
+ file_ingester_v1_ingester_proto_msgTypes[18].OneofWrappers = []any{}
+ file_ingester_v1_ingester_proto_msgTypes[20].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
diff --git a/api/gen/proto/go/push/v1/push.pb.go b/api/gen/proto/go/push/v1/push.pb.go
index 997e17464a..17c139b332 100644
--- a/api/gen/proto/go/push/v1/push.pb.go
+++ b/api/gen/proto/go/push/v1/push.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: push/v1/push.proto
@@ -276,7 +276,7 @@ func file_push_v1_push_proto_rawDescGZIP() []byte {
}
var file_push_v1_push_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_push_v1_push_proto_goTypes = []interface{}{
+var file_push_v1_push_proto_goTypes = []any{
(*PushResponse)(nil), // 0: push.v1.PushResponse
(*PushRequest)(nil), // 1: push.v1.PushRequest
(*RawProfileSeries)(nil), // 2: push.v1.RawProfileSeries
@@ -302,7 +302,7 @@ func file_push_v1_push_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_push_v1_push_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_push_v1_push_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*PushResponse); i {
case 0:
return &v.state
@@ -314,7 +314,7 @@ func file_push_v1_push_proto_init() {
return nil
}
}
- file_push_v1_push_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_push_v1_push_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*PushRequest); i {
case 0:
return &v.state
@@ -326,7 +326,7 @@ func file_push_v1_push_proto_init() {
return nil
}
}
- file_push_v1_push_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ file_push_v1_push_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*RawProfileSeries); i {
case 0:
return &v.state
@@ -338,7 +338,7 @@ func file_push_v1_push_proto_init() {
return nil
}
}
- file_push_v1_push_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ file_push_v1_push_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*RawSample); i {
case 0:
return &v.state
diff --git a/api/gen/proto/go/querier/v1/querier.pb.go b/api/gen/proto/go/querier/v1/querier.pb.go
index 3cfa0a2ec6..077f4b8868 100644
--- a/api/gen/proto/go/querier/v1/querier.pb.go
+++ b/api/gen/proto/go/querier/v1/querier.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: querier/v1/querier.proto
@@ -1748,7 +1748,7 @@ func file_querier_v1_querier_proto_rawDescGZIP() []byte {
var file_querier_v1_querier_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_querier_v1_querier_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
-var file_querier_v1_querier_proto_goTypes = []interface{}{
+var file_querier_v1_querier_proto_goTypes = []any{
(ProfileFormat)(0), // 0: querier.v1.ProfileFormat
(*ProfileTypesRequest)(nil), // 1: querier.v1.ProfileTypesRequest
(*ProfileTypesResponse)(nil), // 2: querier.v1.ProfileTypesResponse
@@ -1836,7 +1836,7 @@ func file_querier_v1_querier_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_querier_v1_querier_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*ProfileTypesRequest); i {
case 0:
return &v.state
@@ -1848,7 +1848,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*ProfileTypesResponse); i {
case 0:
return &v.state
@@ -1860,7 +1860,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*SeriesRequest); i {
case 0:
return &v.state
@@ -1872,7 +1872,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*SeriesResponse); i {
case 0:
return &v.state
@@ -1884,7 +1884,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*SelectMergeStacktracesRequest); i {
case 0:
return &v.state
@@ -1896,7 +1896,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[5].Exporter = func(v any, i int) any {
switch v := v.(*SelectMergeStacktracesResponse); i {
case 0:
return &v.state
@@ -1908,7 +1908,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[6].Exporter = func(v any, i int) any {
switch v := v.(*SelectMergeSpanProfileRequest); i {
case 0:
return &v.state
@@ -1920,7 +1920,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[7].Exporter = func(v any, i int) any {
switch v := v.(*SelectMergeSpanProfileResponse); i {
case 0:
return &v.state
@@ -1932,7 +1932,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[8].Exporter = func(v any, i int) any {
switch v := v.(*DiffRequest); i {
case 0:
return &v.state
@@ -1944,7 +1944,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[9].Exporter = func(v any, i int) any {
switch v := v.(*DiffResponse); i {
case 0:
return &v.state
@@ -1956,7 +1956,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[10].Exporter = func(v any, i int) any {
switch v := v.(*FlameGraph); i {
case 0:
return &v.state
@@ -1968,7 +1968,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[11].Exporter = func(v any, i int) any {
switch v := v.(*FlameGraphDiff); i {
case 0:
return &v.state
@@ -1980,7 +1980,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[12].Exporter = func(v any, i int) any {
switch v := v.(*Level); i {
case 0:
return &v.state
@@ -1992,7 +1992,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[13].Exporter = func(v any, i int) any {
switch v := v.(*SelectMergeProfileRequest); i {
case 0:
return &v.state
@@ -2004,7 +2004,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[14].Exporter = func(v any, i int) any {
switch v := v.(*SelectSeriesRequest); i {
case 0:
return &v.state
@@ -2016,7 +2016,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[15].Exporter = func(v any, i int) any {
switch v := v.(*SelectSeriesResponse); i {
case 0:
return &v.state
@@ -2028,7 +2028,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[16].Exporter = func(v any, i int) any {
switch v := v.(*AnalyzeQueryRequest); i {
case 0:
return &v.state
@@ -2040,7 +2040,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[17].Exporter = func(v any, i int) any {
switch v := v.(*AnalyzeQueryResponse); i {
case 0:
return &v.state
@@ -2052,7 +2052,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[18].Exporter = func(v any, i int) any {
switch v := v.(*QueryScope); i {
case 0:
return &v.state
@@ -2064,7 +2064,7 @@ func file_querier_v1_querier_proto_init() {
return nil
}
}
- file_querier_v1_querier_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_v1_querier_proto_msgTypes[19].Exporter = func(v any, i int) any {
switch v := v.(*QueryImpact); i {
case 0:
return &v.state
@@ -2077,10 +2077,10 @@ func file_querier_v1_querier_proto_init() {
}
}
}
- file_querier_v1_querier_proto_msgTypes[4].OneofWrappers = []interface{}{}
- file_querier_v1_querier_proto_msgTypes[6].OneofWrappers = []interface{}{}
- file_querier_v1_querier_proto_msgTypes[13].OneofWrappers = []interface{}{}
- file_querier_v1_querier_proto_msgTypes[14].OneofWrappers = []interface{}{}
+ file_querier_v1_querier_proto_msgTypes[4].OneofWrappers = []any{}
+ file_querier_v1_querier_proto_msgTypes[6].OneofWrappers = []any{}
+ file_querier_v1_querier_proto_msgTypes[13].OneofWrappers = []any{}
+ file_querier_v1_querier_proto_msgTypes[14].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
diff --git a/api/gen/proto/go/settings/v1/setting.pb.go b/api/gen/proto/go/settings/v1/setting.pb.go
index fe25258daf..81e54c1dce 100644
--- a/api/gen/proto/go/settings/v1/setting.pb.go
+++ b/api/gen/proto/go/settings/v1/setting.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: settings/v1/setting.proto
@@ -326,7 +326,7 @@ func file_settings_v1_setting_proto_rawDescGZIP() []byte {
}
var file_settings_v1_setting_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
-var file_settings_v1_setting_proto_goTypes = []interface{}{
+var file_settings_v1_setting_proto_goTypes = []any{
(*GetSettingsRequest)(nil), // 0: settings.v1.GetSettingsRequest
(*GetSettingsResponse)(nil), // 1: settings.v1.GetSettingsResponse
(*SetSettingsRequest)(nil), // 2: settings.v1.SetSettingsRequest
@@ -354,7 +354,7 @@ func file_settings_v1_setting_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_settings_v1_setting_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_settings_v1_setting_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*GetSettingsRequest); i {
case 0:
return &v.state
@@ -366,7 +366,7 @@ func file_settings_v1_setting_proto_init() {
return nil
}
}
- file_settings_v1_setting_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_settings_v1_setting_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*GetSettingsResponse); i {
case 0:
return &v.state
@@ -378,7 +378,7 @@ func file_settings_v1_setting_proto_init() {
return nil
}
}
- file_settings_v1_setting_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ file_settings_v1_setting_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*SetSettingsRequest); i {
case 0:
return &v.state
@@ -390,7 +390,7 @@ func file_settings_v1_setting_proto_init() {
return nil
}
}
- file_settings_v1_setting_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ file_settings_v1_setting_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*SetSettingsResponse); i {
case 0:
return &v.state
@@ -402,7 +402,7 @@ func file_settings_v1_setting_proto_init() {
return nil
}
}
- file_settings_v1_setting_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ file_settings_v1_setting_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*Setting); i {
case 0:
return &v.state
diff --git a/api/gen/proto/go/status/v1/status.pb.go b/api/gen/proto/go/status/v1/status.pb.go
index dbf3e21ef2..ef45ee7ee4 100644
--- a/api/gen/proto/go/status/v1/status.pb.go
+++ b/api/gen/proto/go/status/v1/status.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: status/v1/status.proto
@@ -363,7 +363,7 @@ func file_status_v1_status_proto_rawDescGZIP() []byte {
}
var file_status_v1_status_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
-var file_status_v1_status_proto_goTypes = []interface{}{
+var file_status_v1_status_proto_goTypes = []any{
(*GetBuildInfoRequest)(nil), // 0: status.v1.GetBuildInfoRequest
(*GetBuildInfoResponse)(nil), // 1: status.v1.GetBuildInfoResponse
(*GetBuildInfoData)(nil), // 2: status.v1.GetBuildInfoData
@@ -394,7 +394,7 @@ func file_status_v1_status_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_status_v1_status_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_status_v1_status_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*GetBuildInfoRequest); i {
case 0:
return &v.state
@@ -406,7 +406,7 @@ func file_status_v1_status_proto_init() {
return nil
}
}
- file_status_v1_status_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_status_v1_status_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*GetBuildInfoResponse); i {
case 0:
return &v.state
@@ -418,7 +418,7 @@ func file_status_v1_status_proto_init() {
return nil
}
}
- file_status_v1_status_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ file_status_v1_status_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*GetBuildInfoData); i {
case 0:
return &v.state
@@ -430,7 +430,7 @@ func file_status_v1_status_proto_init() {
return nil
}
}
- file_status_v1_status_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ file_status_v1_status_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*GetConfigRequest); i {
case 0:
return &v.state
@@ -442,7 +442,7 @@ func file_status_v1_status_proto_init() {
return nil
}
}
- file_status_v1_status_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ file_status_v1_status_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*GetConfigResponse); i {
case 0:
return &v.state
diff --git a/api/gen/proto/go/storegateway/v1/storegateway.pb.go b/api/gen/proto/go/storegateway/v1/storegateway.pb.go
index 9248db42b9..635c7ebe7b 100644
--- a/api/gen/proto/go/storegateway/v1/storegateway.pb.go
+++ b/api/gen/proto/go/storegateway/v1/storegateway.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: storegateway/v1/storegateway.proto
@@ -112,7 +112,7 @@ var file_storegateway_v1_storegateway_proto_rawDesc = []byte{
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
-var file_storegateway_v1_storegateway_proto_goTypes = []interface{}{
+var file_storegateway_v1_storegateway_proto_goTypes = []any{
(*v1.MergeProfilesStacktracesRequest)(nil), // 0: ingester.v1.MergeProfilesStacktracesRequest
(*v1.MergeProfilesLabelsRequest)(nil), // 1: ingester.v1.MergeProfilesLabelsRequest
(*v1.MergeProfilesPprofRequest)(nil), // 2: ingester.v1.MergeProfilesPprofRequest
diff --git a/api/gen/proto/go/types/v1/types.pb.go b/api/gen/proto/go/types/v1/types.pb.go
index c2fad88103..cd2f67933f 100644
--- a/api/gen/proto/go/types/v1/types.pb.go
+++ b/api/gen/proto/go/types/v1/types.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: types/v1/types.proto
@@ -1136,7 +1136,7 @@ func file_types_v1_types_proto_rawDescGZIP() []byte {
var file_types_v1_types_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_types_v1_types_proto_msgTypes = make([]protoimpl.MessageInfo, 16)
-var file_types_v1_types_proto_goTypes = []interface{}{
+var file_types_v1_types_proto_goTypes = []any{
(TimeSeriesAggregationType)(0), // 0: types.v1.TimeSeriesAggregationType
(*LabelPair)(nil), // 1: types.v1.LabelPair
(*ProfileType)(nil), // 2: types.v1.ProfileType
@@ -1176,7 +1176,7 @@ func file_types_v1_types_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_types_v1_types_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*LabelPair); i {
case 0:
return &v.state
@@ -1188,7 +1188,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*ProfileType); i {
case 0:
return &v.state
@@ -1200,7 +1200,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*Labels); i {
case 0:
return &v.state
@@ -1212,7 +1212,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*Series); i {
case 0:
return &v.state
@@ -1224,7 +1224,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*Point); i {
case 0:
return &v.state
@@ -1236,7 +1236,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[5].Exporter = func(v any, i int) any {
switch v := v.(*LabelValuesRequest); i {
case 0:
return &v.state
@@ -1248,7 +1248,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[6].Exporter = func(v any, i int) any {
switch v := v.(*LabelValuesResponse); i {
case 0:
return &v.state
@@ -1260,7 +1260,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[7].Exporter = func(v any, i int) any {
switch v := v.(*LabelNamesRequest); i {
case 0:
return &v.state
@@ -1272,7 +1272,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[8].Exporter = func(v any, i int) any {
switch v := v.(*LabelNamesResponse); i {
case 0:
return &v.state
@@ -1284,7 +1284,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[9].Exporter = func(v any, i int) any {
switch v := v.(*BlockInfo); i {
case 0:
return &v.state
@@ -1296,7 +1296,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[10].Exporter = func(v any, i int) any {
switch v := v.(*BlockCompaction); i {
case 0:
return &v.state
@@ -1308,7 +1308,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[11].Exporter = func(v any, i int) any {
switch v := v.(*StackTraceSelector); i {
case 0:
return &v.state
@@ -1320,7 +1320,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[12].Exporter = func(v any, i int) any {
switch v := v.(*Location); i {
case 0:
return &v.state
@@ -1332,7 +1332,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[13].Exporter = func(v any, i int) any {
switch v := v.(*GoPGO); i {
case 0:
return &v.state
@@ -1344,7 +1344,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[14].Exporter = func(v any, i int) any {
switch v := v.(*GetProfileStatsRequest); i {
case 0:
return &v.state
@@ -1356,7 +1356,7 @@ func file_types_v1_types_proto_init() {
return nil
}
}
- file_types_v1_types_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
+ file_types_v1_types_proto_msgTypes[15].Exporter = func(v any, i int) any {
switch v := v.(*GetProfileStatsResponse); i {
case 0:
return &v.state
diff --git a/api/gen/proto/go/vcs/v1/vcs.pb.go b/api/gen/proto/go/vcs/v1/vcs.pb.go
index ee5a294d38..194183d9a2 100644
--- a/api/gen/proto/go/vcs/v1/vcs.pb.go
+++ b/api/gen/proto/go/vcs/v1/vcs.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: vcs/v1/vcs.proto
@@ -702,7 +702,7 @@ func file_vcs_v1_vcs_proto_rawDescGZIP() []byte {
}
var file_vcs_v1_vcs_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
-var file_vcs_v1_vcs_proto_goTypes = []interface{}{
+var file_vcs_v1_vcs_proto_goTypes = []any{
(*GithubAppRequest)(nil), // 0: vcs.v1.GithubAppRequest
(*GithubAppResponse)(nil), // 1: vcs.v1.GithubAppResponse
(*GithubLoginRequest)(nil), // 2: vcs.v1.GithubLoginRequest
@@ -740,7 +740,7 @@ func file_vcs_v1_vcs_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_vcs_v1_vcs_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_vcs_v1_vcs_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*GithubAppRequest); i {
case 0:
return &v.state
@@ -752,7 +752,7 @@ func file_vcs_v1_vcs_proto_init() {
return nil
}
}
- file_vcs_v1_vcs_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_vcs_v1_vcs_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*GithubAppResponse); i {
case 0:
return &v.state
@@ -764,7 +764,7 @@ func file_vcs_v1_vcs_proto_init() {
return nil
}
}
- file_vcs_v1_vcs_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ file_vcs_v1_vcs_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*GithubLoginRequest); i {
case 0:
return &v.state
@@ -776,7 +776,7 @@ func file_vcs_v1_vcs_proto_init() {
return nil
}
}
- file_vcs_v1_vcs_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ file_vcs_v1_vcs_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*GithubLoginResponse); i {
case 0:
return &v.state
@@ -788,7 +788,7 @@ func file_vcs_v1_vcs_proto_init() {
return nil
}
}
- file_vcs_v1_vcs_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ file_vcs_v1_vcs_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*GithubRefreshRequest); i {
case 0:
return &v.state
@@ -800,7 +800,7 @@ func file_vcs_v1_vcs_proto_init() {
return nil
}
}
- file_vcs_v1_vcs_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ file_vcs_v1_vcs_proto_msgTypes[5].Exporter = func(v any, i int) any {
switch v := v.(*GithubRefreshResponse); i {
case 0:
return &v.state
@@ -812,7 +812,7 @@ func file_vcs_v1_vcs_proto_init() {
return nil
}
}
- file_vcs_v1_vcs_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ file_vcs_v1_vcs_proto_msgTypes[6].Exporter = func(v any, i int) any {
switch v := v.(*GetFileRequest); i {
case 0:
return &v.state
@@ -824,7 +824,7 @@ func file_vcs_v1_vcs_proto_init() {
return nil
}
}
- file_vcs_v1_vcs_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ file_vcs_v1_vcs_proto_msgTypes[7].Exporter = func(v any, i int) any {
switch v := v.(*GetFileResponse); i {
case 0:
return &v.state
@@ -836,7 +836,7 @@ func file_vcs_v1_vcs_proto_init() {
return nil
}
}
- file_vcs_v1_vcs_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
+ file_vcs_v1_vcs_proto_msgTypes[8].Exporter = func(v any, i int) any {
switch v := v.(*GetCommitRequest); i {
case 0:
return &v.state
@@ -848,7 +848,7 @@ func file_vcs_v1_vcs_proto_init() {
return nil
}
}
- file_vcs_v1_vcs_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
+ file_vcs_v1_vcs_proto_msgTypes[9].Exporter = func(v any, i int) any {
switch v := v.(*GetCommitResponse); i {
case 0:
return &v.state
@@ -860,7 +860,7 @@ func file_vcs_v1_vcs_proto_init() {
return nil
}
}
- file_vcs_v1_vcs_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
+ file_vcs_v1_vcs_proto_msgTypes[10].Exporter = func(v any, i int) any {
switch v := v.(*CommitAuthor); i {
case 0:
return &v.state
diff --git a/api/gen/proto/go/version/v1/version.pb.go b/api/gen/proto/go/version/v1/version.pb.go
index 9909712bfa..cb22481d0d 100644
--- a/api/gen/proto/go/version/v1/version.pb.go
+++ b/api/gen/proto/go/version/v1/version.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: version/v1/version.proto
@@ -297,7 +297,7 @@ func file_version_v1_version_proto_rawDescGZIP() []byte {
}
var file_version_v1_version_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
-var file_version_v1_version_proto_goTypes = []interface{}{
+var file_version_v1_version_proto_goTypes = []any{
(*VersionRequest)(nil), // 0: version.v1.VersionRequest
(*VersionResponse)(nil), // 1: version.v1.VersionResponse
(*InstanceVersion)(nil), // 2: version.v1.InstanceVersion
@@ -322,7 +322,7 @@ func file_version_v1_version_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_version_v1_version_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_version_v1_version_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*VersionRequest); i {
case 0:
return &v.state
@@ -334,7 +334,7 @@ func file_version_v1_version_proto_init() {
return nil
}
}
- file_version_v1_version_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_version_v1_version_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*VersionResponse); i {
case 0:
return &v.state
@@ -346,7 +346,7 @@ func file_version_v1_version_proto_init() {
return nil
}
}
- file_version_v1_version_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ file_version_v1_version_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*InstanceVersion); i {
case 0:
return &v.state
@@ -358,7 +358,7 @@ func file_version_v1_version_proto_init() {
return nil
}
}
- file_version_v1_version_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ file_version_v1_version_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*Versions); i {
case 0:
return &v.state
diff --git a/api/go.mod b/api/go.mod
index f2b73aed7d..85216efe33 100644
--- a/api/go.mod
+++ b/api/go.mod
@@ -7,16 +7,16 @@ require (
github.com/gorilla/mux v1.8.0
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0
github.com/planetscale/vtprotobuf v0.6.0
- github.com/prometheus/common v0.52.3
- google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8
+ github.com/prometheus/common v0.55.0
+ google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c
google.golang.org/grpc v1.62.1
- google.golang.org/protobuf v1.34.1
+ google.golang.org/protobuf v1.34.2
)
require (
- github.com/golang/protobuf v1.5.3 // indirect
+ github.com/golang/protobuf v1.5.4 // indirect
golang.org/x/net v0.26.0 // indirect
- golang.org/x/sys v0.21.0 // indirect
+ golang.org/x/sys v0.23.0 // indirect
golang.org/x/text v0.16.0 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
)
diff --git a/api/go.sum b/api/go.sum
index f1e0cc994f..ca87d2ab94 100644
--- a/api/go.sum
+++ b/api/go.sum
@@ -1,9 +1,7 @@
connectrpc.com/connect v1.16.2 h1:ybd6y+ls7GOlb7Bh5C8+ghA6SvCBajHwxssO2CGFjqE=
connectrpc.com/connect v1.16.2/go.mod h1:n2kgwskMHXC+lVqb18wngEpF95ldBHXjZYJussz5FRc=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
@@ -12,22 +10,19 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0 h1:Wqo399gCIufwto+VfwCSvsnfGpF
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.0/go.mod h1:qmOFXW2epJhM0qSnUUYpldc7gVz2KMQwJ/QYCDIa7XU=
github.com/planetscale/vtprotobuf v0.6.0 h1:nBeETjudeJ5ZgBHUz1fVHvbqUKnYOXNhsIEabROxmNA=
github.com/planetscale/vtprotobuf v0.6.0/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
-github.com/prometheus/common v0.52.3 h1:5f8uj6ZwHSscOGNdIQg6OiZv/ybiK2CO2q2drVZAQSA=
-github.com/prometheus/common v0.52.3/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
+github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
+github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
-golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
-golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM=
+golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8 h1:8eadJkXbwDEMNwcB5O0s5Y5eCfyuCLdvaiOIaGTrWmQ=
-google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78 h1:Xs9lu+tLXxLIfuci70nG4cpwaRC+mRQPUL7LoIeDJC4=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs=
+google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c h1:kaI7oewGK5YnVwj+Y+EJBO/YN1ht8iTL9XkFHtVZLsc=
+google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
-google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
diff --git a/ebpf/go.mod b/ebpf/go.mod
index 7e9fff5b42..b6b4f4cbc9 100644
--- a/ebpf/go.mod
+++ b/ebpf/go.mod
@@ -5,44 +5,44 @@ go 1.21
require (
connectrpc.com/connect v1.16.2
github.com/avvmoto/buf-readerat v0.0.0-20171115124131-a17c8cb89270
- github.com/cespare/xxhash/v2 v2.2.0
+ github.com/cespare/xxhash/v2 v2.3.0
github.com/cilium/ebpf v0.11.0
github.com/go-kit/log v0.2.1
github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7
github.com/grafana/pyroscope/api v0.4.0
github.com/hashicorp/golang-lru/v2 v2.0.7
github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab
- github.com/klauspost/compress v1.17.7
+ github.com/klauspost/compress v1.17.9
github.com/pkg/errors v0.9.1
- github.com/prometheus/client_golang v1.19.0
- github.com/prometheus/common v0.52.3
+ github.com/prometheus/client_golang v1.19.1
+ github.com/prometheus/common v0.55.0
github.com/prometheus/prometheus v0.51.2
github.com/samber/lo v1.38.1
github.com/stretchr/testify v1.9.0
- golang.org/x/sys v0.21.0
+ golang.org/x/sys v0.23.0
)
require (
github.com/beorn7/perks v1.0.1 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/go-logfmt/logfmt v0.6.0 // indirect
- github.com/golang/protobuf v1.5.3 // indirect
+ github.com/golang/protobuf v1.5.4 // indirect
github.com/gorilla/mux v1.8.0 // indirect
github.com/grafana/regexp v0.0.0-20221123153739-15dc172cd2db // indirect
github.com/jpillora/backoff v1.0.0 // indirect
+ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
- github.com/prometheus/client_model v0.6.0 // indirect
- github.com/prometheus/procfs v0.12.0 // indirect
+ github.com/prometheus/client_model v0.6.1 // indirect
+ github.com/prometheus/procfs v0.15.1 // indirect
github.com/rogpeppe/go-internal v1.12.0 // indirect
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a // indirect
golang.org/x/net v0.26.0 // indirect
- golang.org/x/oauth2 v0.18.0 // indirect
+ golang.org/x/oauth2 v0.21.0 // indirect
golang.org/x/text v0.16.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
google.golang.org/grpc v1.62.1 // indirect
- google.golang.org/protobuf v1.34.1 // indirect
+ google.golang.org/protobuf v1.34.2 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
diff --git a/ebpf/go.sum b/ebpf/go.sum
index 43a16de7c5..d3bff4adff 100644
--- a/ebpf/go.sum
+++ b/ebpf/go.sum
@@ -4,8 +4,8 @@ github.com/avvmoto/buf-readerat v0.0.0-20171115124131-a17c8cb89270 h1:JIxGEMs4E5
github.com/avvmoto/buf-readerat v0.0.0-20171115124131-a17c8cb89270/go.mod h1:2XtVRGCw/HthOLxU0Qw6o6jSJrcEoOb2OCCl8gQYvGw=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
-github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
-github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
+github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cilium/ebpf v0.11.0 h1:V8gS/bTCCjX9uUnkUFUpPsksM8n1lXBAvHcpiFk1X2Y=
github.com/cilium/ebpf v0.11.0/go.mod h1:WE7CZAnqOL2RouJ4f1uyNhqr2P4CCvXFIqdRDUgWsVs=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
@@ -16,11 +16,8 @@ github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU=
github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7 h1:y3N7Bm7Y9/CtpiVkw/ZWj6lSlDF3F74SfKwfTCer72Q=
@@ -37,26 +34,28 @@ github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab h1:BA4a7pe
github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw=
github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
-github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg=
-github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
+github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
+github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
-github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
-github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
-github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
-github.com/prometheus/common v0.52.3 h1:5f8uj6ZwHSscOGNdIQg6OiZv/ybiK2CO2q2drVZAQSA=
-github.com/prometheus/common v0.52.3/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
-github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
-github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
+github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
+github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
+github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
+github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
+github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
+github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
+github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
+github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
github.com/prometheus/prometheus v0.51.2 h1:U0faf1nT4CB9DkBW87XLJCBi2s8nwWXdTbyzRUAkX0w=
github.com/prometheus/prometheus v0.51.2/go.mod h1:yv4MwOn3yHMQ6MZGHPg/U7Fcyqf+rxqiZfSur6myVtc=
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
@@ -65,48 +64,24 @@ github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM=
github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a h1:Q8/wZp0KX97QFTc2ywcOE0YRjZPVIx+MXInMzdvQqcA=
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
-golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
-golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
+golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
-google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78 h1:Xs9lu+tLXxLIfuci70nG4cpwaRC+mRQPUL7LoIeDJC4=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk=
google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
-google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
diff --git a/go.mod b/go.mod
index c19a1f8b74..58552f8958 100644
--- a/go.mod
+++ b/go.mod
@@ -8,7 +8,7 @@ require (
github.com/PuerkitoBio/goquery v1.8.1
github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59
github.com/briandowns/spinner v1.23.0
- github.com/cespare/xxhash/v2 v2.2.0
+ github.com/cespare/xxhash/v2 v2.3.0
github.com/colega/zeropool v0.0.0-20230505084239-6fb4a4f75381
github.com/dennwc/varint v1.0.0
github.com/dgryski/go-groupvarint v0.0.0-20230630160417-2bfb7969fb3c
@@ -38,10 +38,10 @@ require (
github.com/hashicorp/golang-lru/v2 v2.0.7
github.com/json-iterator/go v1.1.12
github.com/k0kubun/pp/v3 v3.2.0
- github.com/klauspost/compress v1.17.7
+ github.com/klauspost/compress v1.17.9
github.com/kubescape/go-git-url v0.0.27
github.com/mattn/go-isatty v0.0.19
- github.com/minio/minio-go/v7 v7.0.61
+ github.com/minio/minio-go/v7 v7.0.72
github.com/mitchellh/go-wordwrap v1.0.1
github.com/oauth2-proxy/oauth2-proxy/v7 v7.5.1
github.com/oklog/ulid v1.3.1
@@ -53,16 +53,16 @@ require (
github.com/parquet-go/parquet-go v0.18.1-0.20231004061202-cde8189c4c26
github.com/pkg/errors v0.9.1
github.com/planetscale/vtprotobuf v0.6.0
- github.com/prometheus/client_golang v1.19.0
- github.com/prometheus/client_model v0.6.0
- github.com/prometheus/common v0.52.3
+ github.com/prometheus/client_golang v1.19.1
+ github.com/prometheus/client_model v0.6.1
+ github.com/prometheus/common v0.55.0
github.com/prometheus/prometheus v0.51.2
github.com/samber/lo v1.38.1
github.com/simonswine/tempopb v0.2.0
github.com/sirupsen/logrus v1.9.3
github.com/spf13/afero v1.11.0
github.com/stretchr/testify v1.9.0
- github.com/thanos-io/objstore v0.0.0-20230727115635-d0c43443ecda
+ github.com/thanos-io/objstore v0.0.0-20240722162417-19b0c0f0ffd8
github.com/uber/jaeger-client-go v2.30.0+incompatible
github.com/valyala/bytebufferpool v1.0.0
github.com/xlab/treeprint v1.2.0
@@ -72,29 +72,28 @@ require (
golang.org/x/exp v0.0.0-20240119083558-1b970713d09a
golang.org/x/mod v0.17.0
golang.org/x/net v0.26.0
- golang.org/x/oauth2 v0.18.0
- golang.org/x/sync v0.7.0
- golang.org/x/sys v0.21.0
+ golang.org/x/oauth2 v0.21.0
+ golang.org/x/sync v0.8.0
+ golang.org/x/sys v0.23.0
golang.org/x/text v0.16.0
golang.org/x/time v0.5.0
- google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8
+ google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c
google.golang.org/grpc v1.62.1
- google.golang.org/protobuf v1.34.1
+ google.golang.org/protobuf v1.34.2
gopkg.in/alecthomas/kingpin.v2 v2.2.6
gopkg.in/yaml.v3 v3.0.1
sigs.k8s.io/yaml v1.3.0
)
require (
- cloud.google.com/go v0.112.0 // indirect
- cloud.google.com/go/compute v1.23.4 // indirect
- cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 // indirect
- cloud.google.com/go/iam v1.1.6 // indirect
- cloud.google.com/go/storage v1.36.0 // indirect
+ cloud.google.com/go v0.112.1 // indirect
+ cloud.google.com/go/compute/metadata v0.3.0 // indirect
+ cloud.google.com/go/iam v1.1.7 // indirect
+ cloud.google.com/go/storage v1.40.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.0 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
@@ -143,15 +142,16 @@ require (
github.com/go-openapi/swag v0.22.9 // indirect
github.com/go-openapi/validate v0.23.0 // indirect
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
+ github.com/goccy/go-json v0.10.3 // indirect
github.com/gogo/googleapis v1.4.1 // indirect
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
- github.com/golang/protobuf v1.5.3 // indirect
+ github.com/golang/protobuf v1.5.4 // indirect
github.com/golang/snappy v0.0.4 // indirect
github.com/google/btree v1.1.2 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/google/s2a-go v0.1.7 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/googleapis/gax-go/v2 v2.12.2 // indirect
+ github.com/googleapis/gax-go/v2 v2.12.3 // indirect
github.com/grafana/jfr-parser v0.8.1-0.20240228024232-8abcb81c304c // indirect
github.com/hashicorp/consul/api v1.28.2 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
@@ -170,14 +170,13 @@ require (
github.com/josharian/intern v1.0.0 // indirect
github.com/jpillora/backoff v1.0.0 // indirect
github.com/julienschmidt/httprouter v1.3.0 // indirect
- github.com/klauspost/cpuid/v2 v2.2.5 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.8 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-runewidth v0.0.14 // indirect
github.com/miekg/dns v1.1.58 // indirect
github.com/minio/md5-simd v1.1.2 // indirect
- github.com/minio/sha256-simd v1.0.1 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
@@ -194,7 +193,7 @@ require (
github.com/prometheus/alertmanager v0.27.0 // indirect
github.com/prometheus/common/sigv4 v0.1.0 // indirect
github.com/prometheus/exporter-toolkit v0.11.0 // indirect
- github.com/prometheus/procfs v0.12.0 // indirect
+ github.com/prometheus/procfs v0.15.1 // indirect
github.com/rivo/uniseg v0.4.3 // indirect
github.com/rs/xid v1.5.0 // indirect
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect
@@ -222,10 +221,9 @@ require (
golang.org/x/crypto v0.24.0 // indirect
golang.org/x/term v0.21.0 // indirect
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
- google.golang.org/api v0.168.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
- google.golang.org/genproto v0.0.0-20240205150955-31a09d347014 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78 // indirect
+ google.golang.org/api v0.172.0 // indirect
+ google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
k8s.io/apimachinery v0.29.2 // indirect
@@ -241,9 +239,6 @@ replace (
// merged upstream yet.
github.com/hashicorp/memberlist => github.com/grafana/memberlist v0.3.1-0.20220708130638-bd88e10a3d91
- // Replaced with fork, to allow prefix listing, see https://github.com/simonswine/objstore/commit/84f91ea90e721f17d2263cf479fff801cab7cf27
- github.com/thanos-io/objstore => github.com/grafana/objstore v0.0.0-20231121154247-84f91ea90e72
-
// gopkg.in/yaml.v3
// + https://github.com/go-yaml/yaml/pull/691
// + https://github.com/go-yaml/yaml/pull/876
diff --git a/go.sum b/go.sum
index 42cbb920f0..8ed60b7dd1 100644
--- a/go.sum
+++ b/go.sum
@@ -13,22 +13,20 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
-cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM=
-cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4=
+cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM=
+cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
-cloud.google.com/go/compute v1.23.4 h1:EBT9Nw4q3zyE7G45Wvv3MzolIrCJEuHys5muLY0wvAw=
-cloud.google.com/go/compute v1.23.4/go.mod h1:/EJMj55asU6kAFnuZET8zqgwgJ9FvXWXOkkfQZa4ioI=
-cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68 h1:aRVqY1p2IJaBGStWMsQMpkAa83cPkCDLl80eOj0Rbz4=
-cloud.google.com/go/compute/metadata v0.2.4-0.20230617002413-005d2dfb6b68/go.mod h1:1a3eRNYX12fs5UABBIXS8HXVvQbX9hRB/RkEBPORpe8=
+cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc=
+cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
-cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc=
-cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI=
+cloud.google.com/go/iam v1.1.7 h1:z4VHOhwKLF/+UYXAJDFwGtNF0b6gjsW1Pk9Ml0U/IoM=
+cloud.google.com/go/iam v1.1.7/go.mod h1:J4PMPg8TtyurAUvSmPj8FF3EDgY1SPRZxcUGrn7WXGA=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
@@ -38,8 +36,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8=
-cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8=
+cloud.google.com/go/storage v1.40.0 h1:VEpDQV5CJxFmJ6ueWNsKxcr1QAYOXEgxDa+sBbJahPw=
+cloud.google.com/go/storage v1.40.0/go.mod h1:Rrj7/hKlG87BLqDJYtwR0fbPld8uJPbQ2ucUMY7Ir0g=
connectrpc.com/connect v1.16.2 h1:ybd6y+ls7GOlb7Bh5C8+ghA6SvCBajHwxssO2CGFjqE=
connectrpc.com/connect v1.16.2/go.mod h1:n2kgwskMHXC+lVqb18wngEpF95ldBHXjZYJussz5FRc=
connectrpc.com/grpchealth v1.3.0 h1:FA3OIwAvuMokQIXQrY5LbIy8IenftksTP/lG4PbYN+E=
@@ -55,8 +53,10 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.5
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.5.0/go.mod h1:uYt4CfhkJA9o0FN7jfE5minm/i4nUE4MjGUJkzB6Zs8=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0 h1:bXwSugBiSbgtz7rOtbfGf+woewp4f06orW9OP5BjHLA=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0/go.mod h1:Y/HgrePTmGy9HjdSGTqZNa+apUpTVIEVKXJyARP2lrk=
-github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 h1:u/LLAOFgsMv7HmNL4Qufg58y+qElGOt5qv0z1mURkRY=
-github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0/go.mod h1:2e8rMJtl2+2j+HXbTBwnyGpm5Nou7KhvSfxOq8JpTag=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.5.0 h1:AifHbc4mg0x9zW52WOpKbsHaDKuRhlI7TVl47thgQ70=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.5.0/go.mod h1:T5RfihdXtBDxt1Ch2wobif3TvzTdumDy29kahv6AV9A=
+github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.0 h1:IfFdxTUDiV58iZqPKgyWiz4X4fCxZeQ1pTQPImLYXpY=
+github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.0/go.mod h1:SUZc9YRRHfx2+FAQKNDGrssXehqLpxmwRv2mC/5ntj4=
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
@@ -134,12 +134,14 @@ github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+Ce
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
+github.com/bluele/gcache v0.0.2 h1:WcbfdXICg7G/DGBh1PFfcirkWOQV+v077yF1pSy3DGw=
+github.com/bluele/gcache v0.0.2/go.mod h1:m15KV+ECjptwSPxKhOhQoAFQVtUFjTVkc3H8o0t/fp0=
github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A=
github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
-github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
+github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chainguard-dev/git-urls v1.0.2 h1:pSpT7ifrpc5X55n4aTTm7FFUE+ZQHKiqpiwNkJrVcKQ=
github.com/chainguard-dev/git-urls v1.0.2/go.mod h1:rbGgj10OS7UgZlbzdUQIQpT0k/D4+An04HJY7Ol+Y/o=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
@@ -218,6 +220,8 @@ github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/fullstorydev/emulators/storage v0.0.0-20240401123056-edc69752f474 h1:TufioMBjkJ6/Oqmlye/ReuxHFS35HyLmypj/BNy/8GY=
+github.com/fullstorydev/emulators/storage v0.0.0-20240401123056-edc69752f474/go.mod h1:PQwxF4UU8wuL+srGxr3BOhIW5zXqgucwVlO/nPZLsxw=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
@@ -261,6 +265,8 @@ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEe
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
github.com/go-zookeeper/zk v1.0.3 h1:7M2kwOsc//9VeeFiPtf+uSJlVpU66x9Ba5+8XK7/TDg=
github.com/go-zookeeper/zk v1.0.3/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw=
+github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
+github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
@@ -302,10 +308,8 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
-github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
@@ -362,8 +366,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfF
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
-github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA=
-github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc=
+github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA=
+github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4=
github.com/gophercloud/gophercloud v1.8.0 h1:TM3Jawprb2NrdOnvcHhWJalmKmAmOGgfZElM/3oBYCk=
github.com/gophercloud/gophercloud v1.8.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM=
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
@@ -380,8 +384,6 @@ github.com/grafana/jfr-parser/pprof v0.0.0-20240228024232-8abcb81c304c h1:tGu1DT
github.com/grafana/jfr-parser/pprof v0.0.0-20240228024232-8abcb81c304c/go.mod h1:P5406BrWxjahTzVF6aCSumNI1KPlZJc0zO0v+zKZ4gc=
github.com/grafana/memberlist v0.3.1-0.20220708130638-bd88e10a3d91 h1:/NipyHnOmvRsVzj81j2qE0VxsvsqhOB0f4vJIhk2qCQ=
github.com/grafana/memberlist v0.3.1-0.20220708130638-bd88e10a3d91/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
-github.com/grafana/objstore v0.0.0-20231121154247-84f91ea90e72 h1:o22hsDMQ3kv/0N9PkzHQSd5xMmmmdA5UJR7Jb4xISZQ=
-github.com/grafana/objstore v0.0.0-20231121154247-84f91ea90e72/go.mod h1:JauBAcJ61tRSv9widgISVmA6akQXDeUMXBrVmWW4xog=
github.com/grafana/pyroscope-go v1.0.3 h1:8WWmItzLfg4m8G+j//ElSjMeMr88Y6Lvblar6qeTyKk=
github.com/grafana/pyroscope-go v1.0.3/go.mod h1:0d7ftwSMBV/Awm7CCiYmHQEG8Y44Ma3YSjt+nWcWztY=
github.com/grafana/pyroscope-go/godeltaprof v0.1.7 h1:C11j63y7gymiW8VugJ9ZW0pWfxTZugdSJyC48olk5KY=
@@ -479,11 +481,11 @@ github.com/k0kubun/pp/v3 v3.2.0/go.mod h1:ODtJQbQcIRfAD3N+theGCV1m/CBxweERz2dapd
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
-github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg=
-github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
+github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
-github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg=
-github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
+github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00=
github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
@@ -529,10 +531,8 @@ github.com/miekg/dns v1.1.58 h1:ca2Hdkz+cDg/7eNF6V56jjzuZ4aCAE+DbVkILdQWG/4=
github.com/miekg/dns v1.1.58/go.mod h1:Ypv+3b/KadlvW9vJfXOTf300O4UqaHFzFCuHz+rPkBY=
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
-github.com/minio/minio-go/v7 v7.0.61 h1:87c+x8J3jxQ5VUGimV9oHdpjsAvy3fhneEBKuoKEVUI=
-github.com/minio/minio-go/v7 v7.0.61/go.mod h1:BTu8FcrEw+HidY0zd/0eny43QnVNkXRPXrLXFuQBHXg=
-github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
-github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=
+github.com/minio/minio-go/v7 v7.0.72 h1:ZSbxs2BfJensLyHdVOgHv+pfmvxYraaUy07ER04dWnA=
+github.com/minio/minio-go/v7 v7.0.72/go.mod h1:4yBA8v80xGA30cfM3fz0DKYMXunWl/AV/6tWEs9ryzo=
github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
@@ -612,21 +612,21 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
-github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU=
-github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k=
+github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
+github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
-github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
+github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
+github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
-github.com/prometheus/common v0.52.3 h1:5f8uj6ZwHSscOGNdIQg6OiZv/ybiK2CO2q2drVZAQSA=
-github.com/prometheus/common v0.52.3/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U=
+github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
+github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4=
github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI=
github.com/prometheus/exporter-toolkit v0.11.0 h1:yNTsuZ0aNCNFQ3aFTD2uhPOvr4iD7fdBvKPAEGkNf+g=
@@ -636,8 +636,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
-github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
-github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
+github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
+github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
github.com/prometheus/prometheus v0.51.2 h1:U0faf1nT4CB9DkBW87XLJCBi2s8nwWXdTbyzRUAkX0w=
github.com/prometheus/prometheus v0.51.2/go.mod h1:yv4MwOn3yHMQ6MZGHPg/U7Fcyqf+rxqiZfSur6myVtc=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
@@ -696,6 +696,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.194/go.mod
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.194/go.mod h1:yrBKWhChnDqNz1xuXdSbWXG56XawEq0G5j1lg4VwBD4=
github.com/tencentyun/cos-go-sdk-v5 v0.7.40 h1:W6vDGKCHe4wBACI1d2UgE6+50sJFhRWU4O8IB2ozzxM=
github.com/tencentyun/cos-go-sdk-v5 v0.7.40/go.mod h1:4dCEtLHGh8QPxHEkgq+nFaky7yZxQuYwgSJM87icDaw=
+github.com/thanos-io/objstore v0.0.0-20240722162417-19b0c0f0ffd8 h1:QAgAQPtOj3OTlNKrm7G/xPeuDa8xz7brfNHv3WTUq6I=
+github.com/thanos-io/objstore v0.0.0-20240722162417-19b0c0f0ffd8/go.mod h1:3ukSkG4rIRUGkKM4oIz+BSuUx2e3RlQVVv3Cc3W+Tv4=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o=
github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
@@ -851,8 +853,8 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
-golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
-golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
+golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
+golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -865,8 +867,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
-golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
+golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -924,8 +926,8 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
-golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM=
+golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
@@ -938,7 +940,6 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
@@ -1000,8 +1001,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
-golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
+golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
+golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0=
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
@@ -1022,16 +1023,14 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M
google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
-google.golang.org/api v0.168.0 h1:MBRe+Ki4mMN93jhDDbpuRLjRddooArz4FeSObvUMmjY=
-google.golang.org/api v0.168.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg=
+google.golang.org/api v0.172.0 h1:/1OcMZGPmW1rX2LCu2CmGUD1KXK1+pfzxotxyRUCCdk=
+google.golang.org/api v0.172.0/go.mod h1:+fJZq6QXWfa9pXhnIzsjx4yI22d4aI9ZpLb58gvXjis=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
-google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
-google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
@@ -1062,12 +1061,12 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20240205150955-31a09d347014 h1:g/4bk7P6TPMkAUbUhquq98xey1slwvuVJPosdBqYJlU=
-google.golang.org/genproto v0.0.0-20240205150955-31a09d347014/go.mod h1:xEgQu1e4stdSSsxPDK8Azkrk/ECl5HvdPf6nbZrTS5M=
-google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8 h1:8eadJkXbwDEMNwcB5O0s5Y5eCfyuCLdvaiOIaGTrWmQ=
-google.golang.org/genproto/googleapis/api v0.0.0-20240304212257-790db918fca8/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78 h1:Xs9lu+tLXxLIfuci70nG4cpwaRC+mRQPUL7LoIeDJC4=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs=
+google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9 h1:9+tzLLstTlPTRyJTh+ah5wIMsBW5c4tQwGTN3thOW9Y=
+google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s=
+google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c h1:kaI7oewGK5YnVwj+Y+EJBO/YN1ht8iTL9XkFHtVZLsc=
+google.golang.org/genproto/googleapis/api v0.0.0-20240314234333-6e1732d8331c/go.mod h1:VQW3tUculP/D4B+xVCo+VgSq8As6wA9ZjHl//pmk+6s=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY=
google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
@@ -1096,9 +1095,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=
-google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/go.work.sum b/go.work.sum
index b0c5ae268c..fca2569ad2 100644
--- a/go.work.sum
+++ b/go.work.sum
@@ -28,6 +28,8 @@ cloud.google.com/go/aiplatform v1.57.0 h1:WcZ6wDf/1qBWatmGM9Z+2BTiNjQQX54k2BekHU
cloud.google.com/go/aiplatform v1.57.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU=
cloud.google.com/go/aiplatform v1.58.2 h1:qu6n5nqCRntJOIjqs2/SztZp4KMuXTejyMRkPC0eGhM=
cloud.google.com/go/aiplatform v1.58.2/go.mod h1:c3kCiVmb6UC1dHAjZjcpDj6ZS0bHQ2slL88ZjC2LtlA=
+cloud.google.com/go/aiplatform v1.60.0 h1:0cSrii1ZeLr16MbBoocyy5KVnrSdiQ3KN/vtrTe7RqE=
+cloud.google.com/go/aiplatform v1.60.0/go.mod h1:eTlGuHOahHprZw3Hio5VKmtThIOak5/qy6pzdsqcQnM=
cloud.google.com/go/analytics v0.21.6 h1:fnV7B8lqyEYxCU0LKk+vUL7mTlqRAq4uFlIthIdr/iA=
cloud.google.com/go/analytics v0.21.6/go.mod h1:eiROFQKosh4hMaNhF85Oc9WO97Cpa7RggD40e/RBy8w=
cloud.google.com/go/analytics v0.23.0 h1:Q+y94XH84jM8SK8O7qiY/PJRexb6n7dRbQ6PiUa4YGM=
@@ -60,6 +62,8 @@ cloud.google.com/go/asset v1.15.3 h1:uI8Bdm81s0esVWbWrTHcjFDFKNOa9aB7rI1vud1hO84
cloud.google.com/go/asset v1.15.3/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU=
cloud.google.com/go/asset v1.17.1 h1:xra2nJlExLat2rcpimofBw+SmPwgS78Xxhg4Lh/BcyA=
cloud.google.com/go/asset v1.17.1/go.mod h1:byvDw36UME5AzGNK7o4JnOnINkwOZ1yRrGrKIahHrng=
+cloud.google.com/go/asset v1.17.2 h1:xgFnBP3luSbUcC9RWJvb3Zkt+y/wW6PKwPHr3ssnIP8=
+cloud.google.com/go/asset v1.17.2/go.mod h1:SVbzde67ehddSoKf5uebOD1sYw8Ab/jD/9EIeWg99q4=
cloud.google.com/go/assuredworkloads v1.11.4 h1:FsLSkmYYeNuzDm8L4YPfLWV+lQaUrJmH5OuD37t1k20=
cloud.google.com/go/assuredworkloads v1.11.4/go.mod h1:4pwwGNwy1RP0m+y12ef3Q/8PaiWrIDQ6nD2E8kvWI9U=
cloud.google.com/go/assuredworkloads v1.11.5 h1:gCrN3IyvqY3cP0wh2h43d99CgH3G+WYs9CeuFVKChR8=
@@ -84,6 +88,8 @@ cloud.google.com/go/bigquery v1.57.1 h1:FiULdbbzUxWD0Y4ZGPSVCDLvqRSyCIO6zKV7E2nf
cloud.google.com/go/bigquery v1.57.1/go.mod h1:iYzC0tGVWt1jqSzBHqCr3lrRn0u13E8e+AqowBsDgug=
cloud.google.com/go/bigquery v1.58.0 h1:drSd9RcPVLJP2iFMimvOB9SCSIrcl+9HD4II03Oy7A0=
cloud.google.com/go/bigquery v1.58.0/go.mod h1:0eh4mWNY0KrBTjUzLjoYImapGORq9gEPT7MWjCy9lik=
+cloud.google.com/go/bigquery v1.59.1 h1:CpT+/njKuKT3CEmswm6IbhNu9u35zt5dO4yPDLW+nG4=
+cloud.google.com/go/bigquery v1.59.1/go.mod h1:VP1UJYgevyTwsV7desjzNzDND5p6hZB+Z8gZJN1GQUc=
cloud.google.com/go/billing v1.18.0 h1:GvKy4xLy1zF1XPbwP5NJb2HjRxhnhxjjXxvyZ1S/IAo=
cloud.google.com/go/billing v1.18.0/go.mod h1:5DOYQStCxquGprqfuid/7haD7th74kyMBHkjO/OvDtk=
cloud.google.com/go/billing v1.18.2 h1:oWUEQvuC4JvtnqLZ35zgzdbuHt4Itbftvzbe6aEyFdE=
@@ -121,6 +127,8 @@ cloud.google.com/go/compute v1.20.0/go.mod h1:kn5BhC++qUWR/AM3Dn21myV7QbgqejW04c
cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM=
cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM=
cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78=
+cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg=
+cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40=
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
cloud.google.com/go/contactcenterinsights v1.12.1 h1:EiGBeejtDDtr3JXt9W7xlhXyZ+REB5k2tBgVPVtmNb0=
cloud.google.com/go/contactcenterinsights v1.12.1/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis=
@@ -130,6 +138,8 @@ cloud.google.com/go/container v1.29.0 h1:jIltU529R2zBFvP8rhiG1mgeTcnT27KhU0H/1d6
cloud.google.com/go/container v1.29.0/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4=
cloud.google.com/go/container v1.30.1 h1:DbEwg6d9FggyNeSb+AiW6142m2YVPTSENzGx2INDv58=
cloud.google.com/go/container v1.30.1/go.mod h1:vkbfX0EnAKL/vgVECs5BZn24e1cJROzgszJirRKQ4Bg=
+cloud.google.com/go/container v1.31.0 h1:MAaNH7VRNPWEhvqOypq2j+7ONJKrKzon4v9nS3nLZe0=
+cloud.google.com/go/container v1.31.0/go.mod h1:7yABn5s3Iv3lmw7oMmyGbeV6tQj86njcTijkkGuvdZA=
cloud.google.com/go/containeranalysis v0.11.3 h1:5rhYLX+3a01drpREqBZVXR9YmWH45RnML++8NsCtuD8=
cloud.google.com/go/containeranalysis v0.11.3/go.mod h1:kMeST7yWFQMGjiG9K7Eov+fPNQcGhb8mXj/UcTiWw9U=
cloud.google.com/go/containeranalysis v0.11.4 h1:doJ0M1ljS4hS0D2UbHywlHGwB7sQLNrt9vFk9Zyi7vY=
@@ -158,6 +168,8 @@ cloud.google.com/go/dataplex v1.13.0 h1:ACVOuxwe7gP0SqEso9SLyXbcZNk5l8hjcTX+XLnt
cloud.google.com/go/dataplex v1.13.0/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c=
cloud.google.com/go/dataplex v1.14.1 h1:7qrFI9Mz7wNpYjloi6BYVxV0deV09/RbajprVV+ni6Q=
cloud.google.com/go/dataplex v1.14.1/go.mod h1:bWxQAbg6Smg+sca2+Ex7s8D9a5qU6xfXtwmq4BVReps=
+cloud.google.com/go/dataplex v1.14.2 h1:fxIfdU8fxzR3clhOoNI7XFppvAmndxDu1AMH+qX9WKQ=
+cloud.google.com/go/dataplex v1.14.2/go.mod h1:0oGOSFlEKef1cQeAHXy4GZPB/Ife0fz/PxBf+ZymA2U=
cloud.google.com/go/dataproc v1.12.0 h1:W47qHL3W4BPkAIbk4SWmIERwsWBaNnWm0P2sdx3YgGU=
cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4=
cloud.google.com/go/dataproc/v2 v2.3.0 h1:tTVP9tTxmc8fixxOd/8s6Q6Pz/+yzn7r7XdZHretQH0=
@@ -182,6 +194,8 @@ cloud.google.com/go/dialogflow v1.47.0 h1:tLCWad8HZhlyUNfDzDP5m+oH6h/1Uvw/ei7B9A
cloud.google.com/go/dialogflow v1.47.0/go.mod h1:mHly4vU7cPXVweuB5R0zsYKPMzy240aQdAu06SqBbAQ=
cloud.google.com/go/dialogflow v1.48.2 h1:KK9beiSJIqdrjdVHJoUuDDNSnWReY2e+7Cm6adq7moA=
cloud.google.com/go/dialogflow v1.48.2/go.mod h1:7A2oDf6JJ1/+hdpnFRfb/RjJUOh2X3rhIa5P8wQSEX4=
+cloud.google.com/go/dialogflow v1.49.0 h1:KqG0oxGE71qo0lRVyAoeBozefCvsMfcDzDjoLYSY0F4=
+cloud.google.com/go/dialogflow v1.49.0/go.mod h1:dhVrXKETtdPlpPhE7+2/k4Z8FRNUp6kMV3EW3oz/fe0=
cloud.google.com/go/dlp v1.11.1 h1:OFlXedmPP/5//X1hBEeq3D9kUVm9fb6ywYANlpv/EsQ=
cloud.google.com/go/dlp v1.11.1/go.mod h1:/PA2EnioBeXTL/0hInwgj0rfsQb3lpE3R8XUJxqUNKI=
cloud.google.com/go/dlp v1.11.2 h1:lTipOuJaSjlYnnotPMbEhKURLC6GzCMDDzVbJAEbmYM=
@@ -190,6 +204,8 @@ cloud.google.com/go/documentai v1.23.6 h1:0/S3AhS23+0qaFe3tkgMmS3STxgDgmE1jg4Tva
cloud.google.com/go/documentai v1.23.6/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g=
cloud.google.com/go/documentai v1.23.8 h1:ZObcx0ia1XTj737+K9W8ngWFzghyf9c0/BvdJcADONk=
cloud.google.com/go/documentai v1.23.8/go.mod h1:Vd/y5PosxCpUHmwC+v9arZyeMfTqBR9VIwOwIqQYYfA=
+cloud.google.com/go/documentai v1.25.0 h1:lI62GMEEPO6vXJI9hj+G9WjOvnR0hEjvjokrnex4cxA=
+cloud.google.com/go/documentai v1.25.0/go.mod h1:ftLnzw5VcXkLItp6pw1mFic91tMRyfv6hHEY5br4KzY=
cloud.google.com/go/domains v0.9.4 h1:ua4GvsDztZ5F3xqjeLKVRDeOvJshf5QFgWGg1CKti3A=
cloud.google.com/go/domains v0.9.4/go.mod h1:27jmJGShuXYdUNjyDG0SodTfT5RwLi7xmH334Gvi3fY=
cloud.google.com/go/domains v0.9.5 h1:Mml/R6s3vQQvFPpi/9oX3O5dRirgjyJ8cksK8N19Y7g=
@@ -260,6 +276,8 @@ cloud.google.com/go/kms v1.15.5 h1:pj1sRfut2eRbD9pFRjNnPNg/CzJPuQAzUujMIM1vVeM=
cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI=
cloud.google.com/go/kms v1.15.6 h1:ktpEMQmsOAYj3VZwH020FcQlm23BVYg8T8O1woG2GcE=
cloud.google.com/go/kms v1.15.6/go.mod h1:yF75jttnIdHfGBoE51AKsD/Yqf+/jICzB9v1s1acsms=
+cloud.google.com/go/kms v1.15.7 h1:7caV9K3yIxvlQPAcaFffhlT7d1qpxjB1wHBtjWa13SM=
+cloud.google.com/go/kms v1.15.7/go.mod h1:ub54lbsa6tDkUwnu4W7Yt1aAIFLnspgh0kPGToDukeI=
cloud.google.com/go/language v1.12.2 h1:zg9uq2yS9PGIOdc0Kz/l+zMtOlxKWonZjjo5w5YPG2A=
cloud.google.com/go/language v1.12.2/go.mod h1:9idWapzr/JKXBBQ4lWqVX/hcadxB194ry20m/bTrhWc=
cloud.google.com/go/language v1.12.3 h1:iaJZg6K4j/2PvZZVcjeO/btcWWIllVRBhuTFjGO4LXs=
@@ -301,6 +319,8 @@ cloud.google.com/go/monitoring v1.16.3 h1:mf2SN9qSoBtIgiMA4R/y4VADPWZA7VCNJA079q
cloud.google.com/go/monitoring v1.16.3/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw=
cloud.google.com/go/monitoring v1.17.1 h1:xqcNr+JXmFMCPXnent/i1r0De6zrcqzgcMy5X1xa5vg=
cloud.google.com/go/monitoring v1.17.1/go.mod h1:SJzPMakCF0GHOuKEH/r4hxVKF04zl+cRPQyc3d/fqII=
+cloud.google.com/go/monitoring v1.18.0 h1:NfkDLQDG2UR3WYZVQE8kwSbUIEyIqJUPl+aOQdFH1T4=
+cloud.google.com/go/monitoring v1.18.0/go.mod h1:c92vVBCeq/OB4Ioyo+NbN2U7tlg5ZH41PZcdvfc+Lcg=
cloud.google.com/go/networkconnectivity v1.14.3 h1:e9lUkCe2BexsqsUc2bjV8+gFBpQa54J+/F3qKVtW+wA=
cloud.google.com/go/networkconnectivity v1.14.3/go.mod h1:4aoeFdrJpYEXNvrnfyD5kIzs8YtHg945Og4koAjHQek=
cloud.google.com/go/networkconnectivity v1.14.4 h1:GBfXFhLyPspnaBE3nI/BRjdhW8vcbpT9QjE/4kDCDdc=
@@ -383,6 +403,8 @@ cloud.google.com/go/retail v1.14.4 h1:geqdX1FNqqL2p0ADXjPpw8lq986iv5GrVcieTYafuJ
cloud.google.com/go/retail v1.14.4/go.mod h1:l/N7cMtY78yRnJqp5JW8emy7MB1nz8E4t2yfOmklYfg=
cloud.google.com/go/retail v1.15.1 h1:woH0EWW1IngTeyPqE95uVeMadJIB3N5VDYsRM4dJuzQ=
cloud.google.com/go/retail v1.15.1/go.mod h1:In9nSBOYhLbDGa87QvWlnE1XA14xBN2FpQRiRsUs9wU=
+cloud.google.com/go/retail v1.16.0 h1:Fn1GuAua1c6crCGqfJ1qMxG1Xh10Tg/x5EUODEHMqkw=
+cloud.google.com/go/retail v1.16.0/go.mod h1:LW7tllVveZo4ReWt68VnldZFWJRzsh9np+01J9dYWzE=
cloud.google.com/go/run v1.3.3 h1:qdfZteAm+vgzN1iXzILo3nJFQbzziudkJrvd9wCf3FQ=
cloud.google.com/go/run v1.3.3/go.mod h1:WSM5pGyJ7cfYyYbONVQBN4buz42zFqwG67Q3ch07iK4=
cloud.google.com/go/run v1.3.4 h1:m9WDA7DzTpczhZggwYlZcBWgCRb+kgSIisWn1sbw2rQ=
@@ -457,6 +479,8 @@ cloud.google.com/go/vision/v2 v2.7.5 h1:T/ujUghvEaTb+YnFY/jiYwVAkMbIC8EieK0CJo6B
cloud.google.com/go/vision/v2 v2.7.5/go.mod h1:GcviprJLFfK9OLf0z8Gm6lQb6ZFUulvpZws+mm6yPLM=
cloud.google.com/go/vision/v2 v2.7.6 h1:xunpR5DR3vaIvoaVSXBWpYc9uGrMxEdhhfYL+NKv84c=
cloud.google.com/go/vision/v2 v2.7.6/go.mod h1:ZkvWTVNPBU3YZYzgF9Y1jwEbD1NBOCyJn0KFdQfE6Bw=
+cloud.google.com/go/vision/v2 v2.8.0 h1:W52z1b6LdGI66MVhE70g/NFty9zCYYcjdKuycqmlhtg=
+cloud.google.com/go/vision/v2 v2.8.0/go.mod h1:ocqDiA2j97pvgogdyhoxiQp2ZkDCyr0HWpicywGGRhU=
cloud.google.com/go/vmmigration v1.7.4 h1:qPNdab4aGgtaRX+51jCOtJxlJp6P26qua4o1xxUDjpc=
cloud.google.com/go/vmmigration v1.7.4/go.mod h1:yBXCmiLaB99hEl/G9ZooNx2GyzgsjKnw5fWcINRgD70=
cloud.google.com/go/vmmigration v1.7.5 h1:5v9RT2vWyuw3pK2ox0HQpkoftO7Q7/8591dTxxQc79g=
@@ -491,6 +515,8 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v1.1.0/
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v2 v2.2.1/go.mod h1:Bzf34hhAE9NSxailk8xVeLEZbUjOXcC+GnU1mMKdhLw=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0 h1:ECsQtyERDVz3NP3kvDOTLvbQhqWp/x9EsGKtb4ogUr8=
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0/go.mod h1:s1tW/At+xHqjNFvWU4G0c0Qv33KOhvbGNj0RCTQDV8s=
+github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/testdata/perf v0.0.0-20240208231215-981108a6de20 h1:45Ajiuhu6AeJTFdwxn2OWXZTQOHdXT1U/aezrVu6HIM=
+github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/testdata/perf v0.0.0-20240208231215-981108a6de20/go.mod h1:KMKhmwqL1TqoNRkQG2KGmDaVwT5Dte9d3PoADB38/UY=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Bose/minisentinel v0.0.0-20200130220412-917c5a9223bb h1:ZVN4Iat3runWOFLaBCDVU5a9X/XikSRBosye++6gojw=
@@ -613,6 +639,8 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cu
github.com/digitalocean/godo v1.104.1/go.mod h1:VAI/L5YDzMuPRU01lEEUSQ/sp5Z//1HnnFv/RBTEdbg=
github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c=
github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko=
+github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=
+github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker v24.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
@@ -846,6 +874,8 @@ github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8D
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g=
github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
+github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g=
+github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM=
github.com/mitchellh/cli v1.1.0 h1:tEElEatulEHDeedTxwckzyYMA5c86fbmNIUL1hBIiTg=
github.com/mitchellh/cli v1.1.5 h1:OxRIeJXpAMztws/XHlN2vu6imG5Dpq+j61AzAX5fLng=
github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4=
@@ -936,6 +966,7 @@ github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt
github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA=
github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
+github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
github.com/prometheus/common v0.46.0/go.mod h1:Tp0qkxpb9Jsg54QMe+EAmqXkSV7Evdy1BTn+g2pa/hQ=
github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
@@ -1004,6 +1035,8 @@ github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8
github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.194 h1:Oho9ykiKXwOHkeq5jSAvlkBAcRwNqnrUca/5WacvH2E=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.194 h1:YB6qJyCPuwtHFr54/GAfYj1VfwhiDHnwtOKu40OaG2M=
+github.com/thanos-io/objstore v0.0.0-20230727115635-d0c43443ecda h1:DtxaU/a7QRPiUhwtPrZFlS81y+9Mgny4KoLq65cu04U=
+github.com/thanos-io/objstore v0.0.0-20230727115635-d0c43443ecda/go.mod h1:IS7Z25+0KaknyU2P5PTP/5hwY6Yr/FzbInF88Yd5auU=
github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926 h1:G3dpKMzFDjgEh2q1Z7zUUtKa8ViPtH+ocF0bE0g00O8=
github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU=
@@ -1163,6 +1196,7 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
@@ -1184,8 +1218,6 @@ golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg
golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps=
golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
-golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
-golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
gonum.org/v1/gonum v0.8.2 h1:CCXrcPKiGGotvnN6jfUsKk4rRqm7q09/YbKb5xCEvtM=
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0 h1:OE9mWmgKkjJyEmDAAtGMPjXu+YNeGvK9VTSHY6+Qihc=
gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b h1:Qh4dB5D/WpoUUp3lSod7qgoyEHbDGPUWjIbnqdqqe1k=
@@ -1219,6 +1251,8 @@ google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7I
google.golang.org/api v0.160.0/go.mod h1:0mu0TpK33qnydLvWqbImq2b1eQ5FHRSDCBzAxX9ZHyw=
google.golang.org/api v0.164.0/go.mod h1:2OatzO7ZDQsoS7IFf3rvsE17/TldiU3F/zxFHeqUB5o=
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
+google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
@@ -1285,6 +1319,8 @@ google.golang.org/genproto/googleapis/bytestream v0.0.0-20231120223509-83a465c02
google.golang.org/genproto/googleapis/bytestream v0.0.0-20231120223509-83a465c0220f/go.mod h1:iIgEblxoG4klcXsG0d9cpoxJ4xndv6+1FkDROCHhPRI=
google.golang.org/genproto/googleapis/bytestream v0.0.0-20240304161311-37d4d3c04a78 h1:YqFWYZXim8bG9v68xU8WjTZmYKb5M5dMeSOWIp6jogI=
google.golang.org/genproto/googleapis/bytestream v0.0.0-20240304161311-37d4d3c04a78/go.mod h1:vh/N7795ftP0AkN1w8XKqN4w1OdUKXW5Eummda+ofv8=
+google.golang.org/genproto/googleapis/bytestream v0.0.0-20240318140521-94a12d6c2237 h1:BGtl5+MtFriTFllRl3QPEPWZrD8nVhSTONzTkSin3+c=
+google.golang.org/genproto/googleapis/bytestream v0.0.0-20240318140521-94a12d6c2237/go.mod h1:IN9OQUXZ0xT+26MDwZL8fJcYw+y99b0eYPA2U15Jt8o=
google.golang.org/genproto/googleapis/rpc v0.0.0-20231009173412-8bfb1ae86b6c/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0=
google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc=
google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE=
@@ -1297,6 +1333,7 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.
google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240205150955-31a09d347014/go.mod h1:SaPjaZGWb0lPqs6Ittu0spdfrOArqji4ZdeP5IC/9N4=
google.golang.org/genproto/googleapis/rpc v0.0.0-20240228224816-df926f6c8641/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240311132316-a219d84964c2/go.mod h1:UCOku4NytXMJuLQE5VuqA5lX3PcHCBo8pxNyvkf4xBs=
google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
diff --git a/pkg/frontend/frontendpb/frontend.pb.go b/pkg/frontend/frontendpb/frontend.pb.go
index 5741acb828..d9aa7cfb82 100644
--- a/pkg/frontend/frontendpb/frontend.pb.go
+++ b/pkg/frontend/frontendpb/frontend.pb.go
@@ -5,7 +5,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: frontend/frontendpb/frontend.proto
@@ -181,7 +181,7 @@ func file_frontend_frontendpb_frontend_proto_rawDescGZIP() []byte {
}
var file_frontend_frontendpb_frontend_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_frontend_frontendpb_frontend_proto_goTypes = []interface{}{
+var file_frontend_frontendpb_frontend_proto_goTypes = []any{
(*QueryResultRequest)(nil), // 0: frontendpb.QueryResultRequest
(*QueryResultResponse)(nil), // 1: frontendpb.QueryResultResponse
(*httpgrpc.HTTPResponse)(nil), // 2: httpgrpc.HTTPResponse
@@ -205,7 +205,7 @@ func file_frontend_frontendpb_frontend_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_frontend_frontendpb_frontend_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_frontend_frontendpb_frontend_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*QueryResultRequest); i {
case 0:
return &v.state
@@ -217,7 +217,7 @@ func file_frontend_frontendpb_frontend_proto_init() {
return nil
}
}
- file_frontend_frontendpb_frontend_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_frontend_frontendpb_frontend_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*QueryResultResponse); i {
case 0:
return &v.state
diff --git a/pkg/objstore/providers/filesystem/bucket_client.go b/pkg/objstore/providers/filesystem/bucket_client.go
index 0ae39e73f4..e30565c1e5 100644
--- a/pkg/objstore/providers/filesystem/bucket_client.go
+++ b/pkg/objstore/providers/filesystem/bucket_client.go
@@ -2,13 +2,9 @@ package filesystem
import (
"context"
- "io"
"os"
"path/filepath"
- "strings"
- "github.com/grafana/dskit/runutil"
- "github.com/pkg/errors"
"github.com/thanos-io/objstore"
"github.com/thanos-io/objstore/providers/filesystem"
@@ -48,95 +44,6 @@ func (b *Bucket) ReaderAt(ctx context.Context, filename string) (phlareobjstore.
return &FileReaderAt{File: f}, nil
}
-func (b *Bucket) Iter(ctx context.Context, dir string, f func(string) error, options ...objstore.IterOption) error {
- params := objstore.ApplyIterOptions(options...)
- if !params.WithoutAppendDirDelim || strings.HasSuffix(dir, objstore.DirDelim) {
- if dir != "" {
- dir = strings.TrimSuffix(dir, objstore.DirDelim) + objstore.DirDelim
- }
- return b.Bucket.Iter(ctx, dir, f, options...)
- }
- relDir := filepath.Dir(dir)
- prefix := dir
- return b.iterPrefix(ctx, filepath.Join(b.rootDir, relDir), relDir, prefix, f, options...)
-}
-
-// iterPrefix calls f for each entry in the given directory matching the prefix.
-func (b *Bucket) iterPrefix(ctx context.Context, absDir string, relDir string, prefix string, f func(string) error, options ...objstore.IterOption) error {
- if ctx.Err() != nil {
- return ctx.Err()
- }
-
- params := objstore.ApplyIterOptions(options...)
- info, err := os.Stat(absDir)
- if err != nil {
- if os.IsNotExist(err) {
- return nil
- }
- return errors.Wrapf(err, "stat %s", absDir)
- }
- if !info.IsDir() {
- return nil
- }
-
- files, err := os.ReadDir(absDir)
- if err != nil {
- return err
- }
- for _, file := range files {
- name := filepath.Join(relDir, file.Name())
- if prefix != "" && !strings.HasPrefix(name, prefix) {
- continue
- }
-
- if file.IsDir() {
- empty, err := isDirEmpty(filepath.Join(absDir, file.Name()))
- if err != nil {
- return err
- }
-
- if empty {
- // Skip empty directories.
- continue
- }
-
- name += objstore.DirDelim
-
- if params.Recursive {
- // Recursively list files in the subdirectory.
- if err := b.iterPrefix(ctx, filepath.Join(absDir, file.Name()), name, prefix, f, options...); err != nil {
- return err
- }
-
- // The callback f() has already been called for the subdirectory
- // files so we should skip to next filesystem entry.
- continue
- }
- }
- if err := f(name); err != nil {
- return err
- }
- }
- return nil
-}
-
-func isDirEmpty(name string) (ok bool, err error) {
- f, err := os.Open(filepath.Clean(name))
- if os.IsNotExist(err) {
- // The directory doesn't exist. We don't consider it an error and we treat it like empty.
- return true, nil
- }
- if err != nil {
- return false, err
- }
- defer runutil.CloseWithErrCapture(&err, f, "isDirEmpty")
-
- if _, err = f.Readdir(1); err == io.EOF || os.IsNotExist(err) {
- return true, nil
- }
- return false, err
-}
-
// ReaderWithExpectedErrs implements objstore.Bucket.
func (b *Bucket) ReaderWithExpectedErrs(fn phlareobjstore.IsOpFailureExpectedFunc) phlareobjstore.BucketReader {
return b.WithExpectedErrs(fn)
diff --git a/pkg/objstore/providers/filesystem/bucket_client_test.go b/pkg/objstore/providers/filesystem/bucket_client_test.go
index f24d0a24da..7dfe748e9d 100644
--- a/pkg/objstore/providers/filesystem/bucket_client_test.go
+++ b/pkg/objstore/providers/filesystem/bucket_client_test.go
@@ -79,31 +79,6 @@ func TestIter(t *testing.T) {
expected: []string{"foo/ba/buzz3", "foo/bar/buz1", "foo/bar/buz2", "foo/buzz4", "foo/buzz5", "foo6"},
options: []objstore.IterOption{objstore.WithRecursiveIter},
},
- {
- prefix: "foo",
- expected: []string{"foo/", "foo6"},
- options: []objstore.IterOption{objstore.WithoutApendingDirDelim},
- },
- {
- prefix: "f",
- expected: []string{"foo/", "foo6"},
- options: []objstore.IterOption{objstore.WithoutApendingDirDelim},
- },
- {
- prefix: "foo/ba",
- expected: []string{"foo/ba/", "foo/bar/"},
- options: []objstore.IterOption{objstore.WithoutApendingDirDelim},
- },
- {
- prefix: "foo/ba",
- expected: []string{"foo/ba/buzz3", "foo/bar/buz1", "foo/bar/buz2"},
- options: []objstore.IterOption{objstore.WithoutApendingDirDelim, objstore.WithRecursiveIter},
- },
- {
- prefix: "fo",
- expected: []string{"foo/ba/buzz3", "foo/bar/buz1", "foo/bar/buz2", "foo/buzz4", "foo/buzz5", "foo6"},
- options: []objstore.IterOption{objstore.WithoutApendingDirDelim, objstore.WithRecursiveIter},
- },
} {
tc := tc
t.Run(tc.prefix, func(t *testing.T) {
diff --git a/pkg/og/storage/tree/profile.pb.go b/pkg/og/storage/tree/profile.pb.go
index fdf226a6f0..14d4e5728b 100644
--- a/pkg/og/storage/tree/profile.pb.go
+++ b/pkg/og/storage/tree/profile.pb.go
@@ -38,7 +38,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: og/storage/tree/profile.proto
@@ -966,7 +966,7 @@ func file_og_storage_tree_profile_proto_rawDescGZIP() []byte {
}
var file_og_storage_tree_profile_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
-var file_og_storage_tree_profile_proto_goTypes = []interface{}{
+var file_og_storage_tree_profile_proto_goTypes = []any{
(*Profile)(nil), // 0: perftools.profiles.tree.Profile
(*ValueType)(nil), // 1: perftools.profiles.tree.ValueType
(*Sample)(nil), // 2: perftools.profiles.tree.Sample
@@ -998,7 +998,7 @@ func file_og_storage_tree_profile_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_og_storage_tree_profile_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_og_storage_tree_profile_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*Profile); i {
case 0:
return &v.state
@@ -1010,7 +1010,7 @@ func file_og_storage_tree_profile_proto_init() {
return nil
}
}
- file_og_storage_tree_profile_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_og_storage_tree_profile_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*ValueType); i {
case 0:
return &v.state
@@ -1022,7 +1022,7 @@ func file_og_storage_tree_profile_proto_init() {
return nil
}
}
- file_og_storage_tree_profile_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ file_og_storage_tree_profile_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*Sample); i {
case 0:
return &v.state
@@ -1034,7 +1034,7 @@ func file_og_storage_tree_profile_proto_init() {
return nil
}
}
- file_og_storage_tree_profile_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ file_og_storage_tree_profile_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*Label); i {
case 0:
return &v.state
@@ -1046,7 +1046,7 @@ func file_og_storage_tree_profile_proto_init() {
return nil
}
}
- file_og_storage_tree_profile_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ file_og_storage_tree_profile_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*Mapping); i {
case 0:
return &v.state
@@ -1058,7 +1058,7 @@ func file_og_storage_tree_profile_proto_init() {
return nil
}
}
- file_og_storage_tree_profile_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ file_og_storage_tree_profile_proto_msgTypes[5].Exporter = func(v any, i int) any {
switch v := v.(*Location); i {
case 0:
return &v.state
@@ -1070,7 +1070,7 @@ func file_og_storage_tree_profile_proto_init() {
return nil
}
}
- file_og_storage_tree_profile_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
+ file_og_storage_tree_profile_proto_msgTypes[6].Exporter = func(v any, i int) any {
switch v := v.(*Line); i {
case 0:
return &v.state
@@ -1082,7 +1082,7 @@ func file_og_storage_tree_profile_proto_init() {
return nil
}
}
- file_og_storage_tree_profile_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
+ file_og_storage_tree_profile_proto_msgTypes[7].Exporter = func(v any, i int) any {
switch v := v.(*Function); i {
case 0:
return &v.state
diff --git a/pkg/phlaredb/block/list.go b/pkg/phlaredb/block/list.go
index 1312926c74..76327caae8 100644
--- a/pkg/phlaredb/block/list.go
+++ b/pkg/phlaredb/block/list.go
@@ -1,21 +1,12 @@
package block
import (
- "context"
- "fmt"
"os"
- "path"
"path/filepath"
"sort"
"time"
- "github.com/go-kit/log/level"
"github.com/oklog/ulid"
- "github.com/thanos-io/objstore"
- "golang.org/x/sync/errgroup"
-
- phlareobj "github.com/grafana/pyroscope/pkg/objstore"
- "github.com/grafana/pyroscope/pkg/util"
)
func ListBlocks(path string, ulidMinTime time.Time) (map[ulid.ULID]*Meta, error) {
@@ -45,112 +36,6 @@ func ListBlocks(path string, ulidMinTime time.Time) (map[ulid.ULID]*Meta, error)
return result, nil
}
-// IterBlockMetas iterates over all block metas in the given time range.
-// It calls the given function for each block meta.
-// It returns the first error returned by the function.
-// It returns nil if all calls succeed.
-// The function is called concurrently.
-func IterBlockMetas(ctx context.Context, bkt phlareobj.Bucket, from, to time.Time, fn func(*Meta)) error {
- allIDs, err := listAllBlockByPrefixes(ctx, bkt, from, to)
- if err != nil {
- return err
- }
- g, ctx := errgroup.WithContext(ctx)
- g.SetLimit(128)
-
- // fetch all meta.json
- for _, ids := range allIDs {
- for _, id := range ids {
- id := id
- g.Go(func() error {
- r, err := bkt.Get(ctx, path.Join(id, MetaFilename))
- if err != nil {
- if bkt.IsObjNotFoundErr(err) {
- level.Info(util.Logger).Log("msg", "skipping block as meta.json not found", "id", id)
- return nil
- }
- return err
- }
-
- m, err := Read(r)
- if err != nil {
- return err
- }
- fn(m)
- return nil
- })
- }
- }
- return g.Wait()
-}
-
-func listAllBlockByPrefixes(ctx context.Context, bkt phlareobj.Bucket, from, to time.Time) ([][]string, error) {
- // todo: We should cache prefixes listing per tenants.
- blockPrefixes, err := blockPrefixesFromTo(from, to, 4)
- if err != nil {
- return nil, err
- }
- ids := make([][]string, len(blockPrefixes))
- g, ctx := errgroup.WithContext(ctx)
- g.SetLimit(64)
-
- for i, prefix := range blockPrefixes {
- prefix := prefix
- i := i
- g.Go(func() error {
- level.Debug(util.Logger).Log("msg", "listing blocks", "prefix", prefix, "i", i)
- prefixIds := []string{}
- err := bkt.Iter(ctx, prefix, func(name string) error {
- if _, ok := IsBlockDir(name); ok {
- prefixIds = append(prefixIds, name)
- }
- return nil
- }, objstore.WithoutApendingDirDelim)
- if err != nil {
- return err
- }
- ids[i] = prefixIds
- return nil
- })
- }
- if err := g.Wait(); err != nil {
- return nil, err
- }
- return ids, nil
-}
-
-// orderOfSplit is the number of bytes of the ulid id used for the split. The duration of the split is:
-// 0: 1114y
-// 1: 34.8y
-// 2: 1y
-// 3: 12.4d
-// 4: 9h19m
-// TODO: To needs to be adapted based on the MaxBlockDuration.
-func blockPrefixesFromTo(from, to time.Time, orderOfSplit uint8) (prefixes []string, err error) {
- var id ulid.ULID
-
- if orderOfSplit > 9 {
- return nil, fmt.Errorf("order of split must be between 0 and 9")
- }
-
- byteShift := (9 - orderOfSplit) * 5
-
- ms := uint64(from.UnixMilli()) >> byteShift
- ms = ms << byteShift
- for ms <= uint64(to.UnixMilli()) {
- if err := id.SetTime(ms); err != nil {
- return nil, err
- }
- prefixes = append(prefixes, id.String()[:orderOfSplit+1])
-
- ms = ms >> byteShift
- ms += 1
- ms = ms << byteShift
- }
-
- return prefixes, nil
-}
-
func SortBlocks(metas map[ulid.ULID]*Meta) []*Meta {
var blocks []*Meta
diff --git a/pkg/phlaredb/block/list_test.go b/pkg/phlaredb/block/list_test.go
deleted file mode 100644
index 8f93da44d3..0000000000
--- a/pkg/phlaredb/block/list_test.go
+++ /dev/null
@@ -1,41 +0,0 @@
-package block
-
-import (
- "bytes"
- "context"
- "crypto/rand"
- "path"
- "testing"
- "time"
-
- "github.com/oklog/ulid"
- "github.com/prometheus/common/model"
- "github.com/stretchr/testify/require"
-
- objstore_testutil "github.com/grafana/pyroscope/pkg/objstore/testutil"
-)
-
-func TestIterBlockMetas(t *testing.T) {
- bucketClient, _ := objstore_testutil.NewFilesystemBucket(t, context.Background(), t.TempDir())
-
- u := ulid.MustNew(uint64(model.Now()), rand.Reader).String()
- err := bucketClient.Upload(context.Background(), path.Join(u, "index"), bytes.NewBufferString("foo"))
- require.NoError(t, err)
- meta := Meta{
- Version: MetaVersion3,
- ULID: ulid.MustNew(ulid.Now(), rand.Reader),
- }
- buf := bytes.NewBuffer(nil)
- _, err = meta.WriteTo(buf)
- require.NoError(t, err)
-
- err = bucketClient.Upload(context.Background(), path.Join(meta.ULID.String(), MetaFilename), buf)
- require.NoError(t, err)
- found := false
- err = IterBlockMetas(context.Background(), bucketClient, time.Now().Add(-24*time.Hour), time.Now().Add(24*time.Hour), func(m *Meta) {
- found = true
- require.Equal(t, meta.ULID, m.ULID)
- })
- require.NoError(t, err)
- require.True(t, found, "expected to find block meta")
-}
diff --git a/pkg/querier/stats/stats.pb.go b/pkg/querier/stats/stats.pb.go
index 8919f1e9fa..2865e4d86e 100644
--- a/pkg/querier/stats/stats.pb.go
+++ b/pkg/querier/stats/stats.pb.go
@@ -5,7 +5,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: querier/stats/stats.proto
@@ -175,7 +175,7 @@ func file_querier_stats_stats_proto_rawDescGZIP() []byte {
}
var file_querier_stats_stats_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_querier_stats_stats_proto_goTypes = []interface{}{
+var file_querier_stats_stats_proto_goTypes = []any{
(*Stats)(nil), // 0: stats.Stats
}
var file_querier_stats_stats_proto_depIdxs = []int32{
@@ -192,7 +192,7 @@ func file_querier_stats_stats_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_querier_stats_stats_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_querier_stats_stats_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*Stats); i {
case 0:
return &v.state
diff --git a/pkg/scheduler/schedulerpb/scheduler.pb.go b/pkg/scheduler/schedulerpb/scheduler.pb.go
index e717d927cf..a52a439c98 100644
--- a/pkg/scheduler/schedulerpb/scheduler.pb.go
+++ b/pkg/scheduler/schedulerpb/scheduler.pb.go
@@ -5,7 +5,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: scheduler/schedulerpb/scheduler.proto
@@ -605,7 +605,7 @@ func file_scheduler_schedulerpb_scheduler_proto_rawDescGZIP() []byte {
var file_scheduler_schedulerpb_scheduler_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_scheduler_schedulerpb_scheduler_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
-var file_scheduler_schedulerpb_scheduler_proto_goTypes = []interface{}{
+var file_scheduler_schedulerpb_scheduler_proto_goTypes = []any{
(FrontendToSchedulerType)(0), // 0: schedulerpb.FrontendToSchedulerType
(SchedulerToFrontendStatus)(0), // 1: schedulerpb.SchedulerToFrontendStatus
(*QuerierToScheduler)(nil), // 2: schedulerpb.QuerierToScheduler
@@ -640,7 +640,7 @@ func file_scheduler_schedulerpb_scheduler_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_scheduler_schedulerpb_scheduler_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_scheduler_schedulerpb_scheduler_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*QuerierToScheduler); i {
case 0:
return &v.state
@@ -652,7 +652,7 @@ func file_scheduler_schedulerpb_scheduler_proto_init() {
return nil
}
}
- file_scheduler_schedulerpb_scheduler_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_scheduler_schedulerpb_scheduler_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*SchedulerToQuerier); i {
case 0:
return &v.state
@@ -664,7 +664,7 @@ func file_scheduler_schedulerpb_scheduler_proto_init() {
return nil
}
}
- file_scheduler_schedulerpb_scheduler_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ file_scheduler_schedulerpb_scheduler_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*FrontendToScheduler); i {
case 0:
return &v.state
@@ -676,7 +676,7 @@ func file_scheduler_schedulerpb_scheduler_proto_init() {
return nil
}
}
- file_scheduler_schedulerpb_scheduler_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
+ file_scheduler_schedulerpb_scheduler_proto_msgTypes[3].Exporter = func(v any, i int) any {
switch v := v.(*SchedulerToFrontend); i {
case 0:
return &v.state
@@ -688,7 +688,7 @@ func file_scheduler_schedulerpb_scheduler_proto_init() {
return nil
}
}
- file_scheduler_schedulerpb_scheduler_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
+ file_scheduler_schedulerpb_scheduler_proto_msgTypes[4].Exporter = func(v any, i int) any {
switch v := v.(*NotifyQuerierShutdownRequest); i {
case 0:
return &v.state
@@ -700,7 +700,7 @@ func file_scheduler_schedulerpb_scheduler_proto_init() {
return nil
}
}
- file_scheduler_schedulerpb_scheduler_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
+ file_scheduler_schedulerpb_scheduler_proto_msgTypes[5].Exporter = func(v any, i int) any {
switch v := v.(*NotifyQuerierShutdownResponse); i {
case 0:
return &v.state
diff --git a/pkg/util/httpgrpc/httpgrpc.pb.go b/pkg/util/httpgrpc/httpgrpc.pb.go
index 41d98cb476..9c4c343748 100644
--- a/pkg/util/httpgrpc/httpgrpc.pb.go
+++ b/pkg/util/httpgrpc/httpgrpc.pb.go
@@ -1,6 +1,6 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
-// protoc-gen-go v1.34.1
+// protoc-gen-go v1.34.2
// protoc (unknown)
// source: util/httpgrpc/httpgrpc.proto
@@ -261,7 +261,7 @@ func file_util_httpgrpc_httpgrpc_proto_rawDescGZIP() []byte {
}
var file_util_httpgrpc_httpgrpc_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_util_httpgrpc_httpgrpc_proto_goTypes = []interface{}{
+var file_util_httpgrpc_httpgrpc_proto_goTypes = []any{
(*HTTPRequest)(nil), // 0: httpgrpc.HTTPRequest
(*HTTPResponse)(nil), // 1: httpgrpc.HTTPResponse
(*Header)(nil), // 2: httpgrpc.Header
@@ -284,7 +284,7 @@ func file_util_httpgrpc_httpgrpc_proto_init() {
return
}
if !protoimpl.UnsafeEnabled {
- file_util_httpgrpc_httpgrpc_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ file_util_httpgrpc_httpgrpc_proto_msgTypes[0].Exporter = func(v any, i int) any {
switch v := v.(*HTTPRequest); i {
case 0:
return &v.state
@@ -296,7 +296,7 @@ func file_util_httpgrpc_httpgrpc_proto_init() {
return nil
}
}
- file_util_httpgrpc_httpgrpc_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ file_util_httpgrpc_httpgrpc_proto_msgTypes[1].Exporter = func(v any, i int) any {
switch v := v.(*HTTPResponse); i {
case 0:
return &v.state
@@ -308,7 +308,7 @@ func file_util_httpgrpc_httpgrpc_proto_init() {
return nil
}
}
- file_util_httpgrpc_httpgrpc_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ file_util_httpgrpc_httpgrpc_proto_msgTypes[2].Exporter = func(v any, i int) any {
switch v := v.(*Header); i {
case 0:
return &v.state
From 854639b2d2c2945a9d8caed191ec537f1927da33 Mon Sep 17 00:00:00 2001
From: Christian Simon
Date: Thu, 8 Aug 2024 12:46:14 +0100
Subject: [PATCH 40/43] adhocprofile: Validate IDs and santize names properly
(#3470)
We currently allow any character to be user specified at upload. This
limits that character set. It also makes sure only IDs are listend and
retrieve with get, when they are fulfilling the character limit.
This validation will ensure that the generated identifiers are withing
the allowed set use for object store.
---
pkg/adhocprofiles/adhocprofiles.go | 43 ++++++++++++++++++++++++-
pkg/adhocprofiles/adhocprofiles_test.go | 37 ++++++++++++++++++---
2 files changed, 74 insertions(+), 6 deletions(-)
diff --git a/pkg/adhocprofiles/adhocprofiles.go b/pkg/adhocprofiles/adhocprofiles.go
index d947940f36..a9d49263c5 100644
--- a/pkg/adhocprofiles/adhocprofiles.go
+++ b/pkg/adhocprofiles/adhocprofiles.go
@@ -6,6 +6,7 @@ import (
"crypto/rand"
"encoding/base64"
"encoding/json"
+ "fmt"
"io"
"slices"
"strings"
@@ -41,6 +42,33 @@ type AdHocProfile struct {
UploadedAt time.Time `json:"uploadedAt"`
}
+func validRunes(r rune) bool {
+ if r >= 'a' && r <= 'z' || r >= 'A' && r <= 'Z' || r >= '0' && r <= '9' || r == '.' || r == '-' || r == '_' {
+ return true
+ }
+ return false
+}
+
+// check if the id is valid
+func validID(id string) bool {
+ for _, r := range id {
+ if !validRunes(r) {
+ return false
+ }
+ }
+ return true
+}
+
+// replaces invalid runes in the id with underscores
+func replaceInvalidRunes(id string) string {
+ return strings.Map(func(r rune) rune {
+ if validRunes(r) {
+ return r
+ }
+ return '_'
+ }, id)
+}
+
func NewAdHocProfiles(bucket objstore.Bucket, logger log.Logger, limits frontend.Limits) *AdHocProfiles {
a := &AdHocProfiles{
logger: logger,
@@ -68,6 +96,9 @@ func (a *AdHocProfiles) Upload(ctx context.Context, c *connect.Request[v1.AdHocP
UploadedAt: time.Now().UTC(),
}
+ // replace runes outside of [a-zA-Z0-9_-.] with underscores
+ adHocProfile.Name = replaceInvalidRunes(adHocProfile.Name)
+
// TODO: Add per-tenant upload limits (number of files, total size, etc.)
maxNodes, err := validation.ValidateMaxNodes(a.limits, []string{tenantID}, c.Msg.GetMaxNodes())
@@ -118,7 +149,12 @@ func (a *AdHocProfiles) Get(ctx context.Context, c *connect.Request[v1.AdHocProf
bucket := a.getBucket(tenantID)
- reader, err := bucket.Get(ctx, c.Msg.GetId())
+ id := c.Msg.GetId()
+ if !validID(id) {
+ return nil, connect.NewError(connect.CodeInvalidArgument, fmt.Errorf("id '%s' is invalid: can only contain [a-zA-Z0-9_-.]", id))
+ }
+
+ reader, err := bucket.Get(ctx, id)
if err != nil {
return nil, errors.Wrapf(err, "failed to get profile")
}
@@ -167,6 +203,11 @@ func (a *AdHocProfiles) List(ctx context.Context, c *connect.Request[v1.AdHocPro
profiles := make([]*v1.AdHocProfilesProfileMetadata, 0)
err = bucket.Iter(ctx, "", func(s string) error {
+ // do not list elements with invalid ids
+ if !validID(s) {
+ return nil
+ }
+
separatorIndex := strings.IndexRune(s, '-')
id, err := ulid.Parse(s[0:separatorIndex])
if err != nil {
diff --git a/pkg/adhocprofiles/adhocprofiles_test.go b/pkg/adhocprofiles/adhocprofiles_test.go
index d8f47a8559..3180331d9b 100644
--- a/pkg/adhocprofiles/adhocprofiles_test.go
+++ b/pkg/adhocprofiles/adhocprofiles_test.go
@@ -6,6 +6,7 @@ import (
"encoding/base64"
"encoding/json"
"os"
+ "strings"
"testing"
"connectrpc.com/connect"
@@ -125,9 +126,10 @@ func TestAdHocProfiles_Upload(t *testing.T) {
c *connect.Request[v1.AdHocProfilesUploadRequest]
}
tests := []struct {
- name string
- args args
- wantErr bool
+ name string
+ args args
+ wantErr bool
+ expectedSuffix string
}{
{
name: "reject requests with missing tenant id",
@@ -153,11 +155,24 @@ func TestAdHocProfiles_Upload(t *testing.T) {
args: args{
ctx: tenant.InjectTenantID(context.Background(), "tenant"),
c: connect.NewRequest(&v1.AdHocProfilesUploadRequest{
- Name: "test",
+ Name: "test.cpu.pb.gz",
Profile: encodedProfile,
}),
},
- wantErr: false,
+ wantErr: false,
+ expectedSuffix: "-test.cpu.pb.gz",
+ },
+ {
+ name: "should limit profile names to particular character set",
+ args: args{
+ ctx: tenant.InjectTenantID(context.Background(), "tenant"),
+ c: connect.NewRequest(&v1.AdHocProfilesUploadRequest{
+ Name: "test/../../../etc/passwd",
+ Profile: encodedProfile,
+ }),
+ },
+ wantErr: false,
+ expectedSuffix: "-test_.._.._.._etc_passwd",
},
}
for _, tt := range tests {
@@ -172,6 +187,18 @@ func TestAdHocProfiles_Upload(t *testing.T) {
t.Errorf("Upload() error = %v, wantErr %v", err, tt.wantErr)
return
}
+
+ if tt.expectedSuffix != "" {
+ found := false
+ err := bucket.Iter(tt.args.ctx, "tenant/adhoc", func(name string) error {
+ if strings.HasSuffix(name, tt.expectedSuffix) {
+ found = true
+ }
+ return nil
+ })
+ require.NoError(t, err)
+ require.True(t, found)
+ }
})
}
}
From d876d37c322788b5e187de7d9deadf489928edd4 Mon Sep 17 00:00:00 2001
From: Christian Simon
Date: Fri, 9 Aug 2024 15:52:17 +0100
Subject: [PATCH 41/43] feat: Add Pyrobench (#3472)
Pyrobench is a hackathon 2024-08 project, which provides a github
actiont that can run go microbenchmarks on default it will:
- Double check the code for the package with the Benchmarks in has
changed (comparing base..head of PR)
- Will run the benchmarks multiple times for base and head and then
compare it using benstat (WIP).
- Each benchmark run will also collect profiles and upload them to
flamegraph.com
---
.github/workflows/pyrobench.yaml | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
create mode 100644 .github/workflows/pyrobench.yaml
diff --git a/.github/workflows/pyrobench.yaml b/.github/workflows/pyrobench.yaml
new file mode 100644
index 0000000000..034a87f496
--- /dev/null
+++ b/.github/workflows/pyrobench.yaml
@@ -0,0 +1,16 @@
+on: issue_comment
+
+jobs:
+ pyrobench:
+ name: Run Pyrobench on demand by PR comment
+ if: ${{ github.event.issue.pull_request }}
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/setup-go@v5
+ with:
+ go-version: '1.22'
+ - name: Pyrobench
+ uses: grafana/pyrobench@main
+ with:
+ github_context: ${{ toJson(github) }}
+ github_token: ${{ secrets.GITHUB_TOKEN }}
From 24e11e6832f776b2016a6f6158f2410d72e1f349 Mon Sep 17 00:00:00 2001
From: Christian Simon
Date: Fri, 9 Aug 2024 16:29:21 +0100
Subject: [PATCH 42/43] Check if @pyrobench is in comment body before firing
action (#3474)
---
.github/workflows/pyrobench.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/pyrobench.yaml b/.github/workflows/pyrobench.yaml
index 034a87f496..43c48a2100 100644
--- a/.github/workflows/pyrobench.yaml
+++ b/.github/workflows/pyrobench.yaml
@@ -3,7 +3,7 @@ on: issue_comment
jobs:
pyrobench:
name: Run Pyrobench on demand by PR comment
- if: ${{ github.event.issue.pull_request }}
+ if: ${{ (github.event.issue.pull_request) && contains('@pyrobench', github.event.comment.body) }}
runs-on: ubuntu-latest
steps:
- uses: actions/setup-go@v5
From 1fafaea6241baa2439b8bb164a7dffd379eb739b Mon Sep 17 00:00:00 2001
From: Christian Simon
Date: Fri, 9 Aug 2024 17:22:17 +0100
Subject: [PATCH 43/43] Now with correct filter term (#3476)
---
.github/workflows/pyrobench.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/pyrobench.yaml b/.github/workflows/pyrobench.yaml
index 43c48a2100..838327b487 100644
--- a/.github/workflows/pyrobench.yaml
+++ b/.github/workflows/pyrobench.yaml
@@ -3,7 +3,7 @@ on: issue_comment
jobs:
pyrobench:
name: Run Pyrobench on demand by PR comment
- if: ${{ (github.event.issue.pull_request) && contains('@pyrobench', github.event.comment.body) }}
+ if: ${{ (github.event.issue.pull_request) && contains(github.event.comment.body, '@pyrobench') }}
runs-on: ubuntu-latest
steps:
- uses: actions/setup-go@v5