diff --git a/.gitfiles b/.gitfiles
index 2dd023e7da..57a22cb2e3 100644
--- a/.gitfiles
+++ b/.gitfiles
@@ -73,7 +73,7 @@
.github/workflows/chatops-help.yaml
.github/workflows/chatops.yaml
.github/workflows/check-conflict.yaml
-.github/workflows/codeql-analysis.yaml
+.github/workflows/codeql-analysis.yml
.github/workflows/coverage.yaml
.github/workflows/detect-internal-config-changes.yaml
.github/workflows/dockers-agent-faiss-image.yaml
@@ -167,6 +167,8 @@ apis/grpc/v1/filter/egress/egress_filter.pb.go
apis/grpc/v1/filter/egress/egress_filter_vtproto.pb.go
apis/grpc/v1/filter/ingress/ingress_filter.pb.go
apis/grpc/v1/filter/ingress/ingress_filter_vtproto.pb.go
+apis/grpc/v1/meta/meta.pb.go
+apis/grpc/v1/meta/meta_vtproto.pb.go
apis/grpc/v1/mirror/mirror.go
apis/grpc/v1/mirror/mirror.pb.go
apis/grpc/v1/mirror/mirror_vtproto.pb.go
@@ -203,6 +205,7 @@ apis/proto/v1/agent/sidecar/sidecar.proto
apis/proto/v1/discoverer/discoverer.proto
apis/proto/v1/filter/egress/egress_filter.proto
apis/proto/v1/filter/ingress/ingress_filter.proto
+apis/proto/v1/meta/meta.proto
apis/proto/v1/mirror/mirror.proto
apis/proto/v1/payload/payload.proto
apis/proto/v1/rpc/errdetails/error_details.proto
@@ -220,6 +223,7 @@ apis/swagger/v1/agent/sidecar/sidecar.swagger.json
apis/swagger/v1/discoverer/discoverer.swagger.json
apis/swagger/v1/filter/egress/egress_filter.swagger.json
apis/swagger/v1/filter/ingress/ingress_filter.swagger.json
+apis/swagger/v1/meta/meta.swagger.json
apis/swagger/v1/mirror/mirror.swagger.json
apis/swagger/v1/payload/payload.swagger.json
apis/swagger/v1/rpc/errdetails/error_details.swagger.json
@@ -882,6 +886,9 @@ internal/core/algorithm/ngt/ngt_bench_test.go
internal/core/algorithm/ngt/ngt_test.go
internal/core/algorithm/ngt/option.go
internal/core/algorithm/ngt/option_test.go
+internal/core/algorithm/usearch/option.go
+internal/core/algorithm/usearch/usearch.go
+internal/core/algorithm/usearch/usearch_test.go
internal/db/kvs/bbolt/bbolt.go
internal/db/kvs/bbolt/bbolt_test.go
internal/db/kvs/bbolt/option.go
@@ -1024,6 +1031,7 @@ internal/errors/storage.go
internal/errors/tls.go
internal/errors/unit.go
internal/errors/unit_test.go
+internal/errors/usearch.go
internal/errors/vald.go
internal/errors/vald_test.go
internal/errors/vqueue.go
@@ -1911,6 +1919,10 @@ rust/bin/agent/src/handler/search.rs
rust/bin/agent/src/handler/update.rs
rust/bin/agent/src/handler/upsert.rs
rust/bin/agent/src/main.rs
+rust/bin/meta/Cargo.toml
+rust/bin/meta/src/handler.rs
+rust/bin/meta/src/handler/meta.rs
+rust/bin/meta/src/main.rs
rust/libs/algorithm/Cargo.toml
rust/libs/algorithm/src/lib.rs
rust/libs/algorithms/faiss/Cargo.toml
@@ -1931,6 +1943,7 @@ rust/libs/proto/src/discoverer.v1.tonic.rs
rust/libs/proto/src/filter.egress.v1.tonic.rs
rust/libs/proto/src/filter.ingress.v1.tonic.rs
rust/libs/proto/src/lib.rs
+rust/libs/proto/src/meta.v1.tonic.rs
rust/libs/proto/src/mirror.v1.tonic.rs
rust/libs/proto/src/payload.v1.rs
rust/libs/proto/src/rpc.v1.rs
@@ -1986,6 +1999,7 @@ versions/PROTOBUF_VERSION
versions/REVIEWDOG_VERSION
versions/RUST_VERSION
versions/TELEPRESENCE_VERSION
+versions/USEARCH_VERSION
versions/VALD_VERSION
versions/YQ_VERSION
versions/ZLIB_VERSION
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 58d750ba12..55143b8fda 100755
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -25,8 +25,8 @@ assignees: ""
- Vald Version: v1.7.13
- Go Version: v1.23.1
- Rust Version: v1.81.0
-- Docker Version: v27.2.1
-- Kubernetes Version: v1.31.0
-- Helm Version: v3.16.0
+- Docker Version: v27.3.1
+- Kubernetes Version: v1.31.1
+- Helm Version: v3.16.1
- NGT Version: v2.2.4
- Faiss Version: v1.8.0
diff --git a/.github/ISSUE_TEMPLATE/security_issue_report.md b/.github/ISSUE_TEMPLATE/security_issue_report.md
index 94536a7445..8e7fc2d081 100644
--- a/.github/ISSUE_TEMPLATE/security_issue_report.md
+++ b/.github/ISSUE_TEMPLATE/security_issue_report.md
@@ -19,8 +19,8 @@ assignees: ""
- Vald Version: v1.7.13
- Go Version: v1.23.1
- Rust Version: v1.81.0
-- Docker Version: v27.2.1
-- Kubernetes Version: v1.31.0
-- Helm Version: v3.16.0
+- Docker Version: v27.3.1
+- Kubernetes Version: v1.31.1
+- Helm Version: v3.16.1
- NGT Version: v2.2.4
- Faiss Version: v1.8.0
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index cc053c521a..a534bf495f 100755
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -3,7 +3,7 @@
### Description
-
+
### Related Issue
@@ -18,9 +18,9 @@
- Vald Version: v1.7.13
- Go Version: v1.23.1
- Rust Version: v1.81.0
-- Docker Version: v27.2.1
-- Kubernetes Version: v1.31.0
-- Helm Version: v3.16.0
+- Docker Version: v27.3.1
+- Kubernetes Version: v1.31.1
+- Helm Version: v3.16.1
- NGT Version: v2.2.4
- Faiss Version: v1.8.0
@@ -34,4 +34,4 @@
### Special notes for your reviewer
-
+
diff --git a/.github/workflows/codeql-analysis.yaml b/.github/workflows/codeql-analysis.yml
similarity index 100%
rename from .github/workflows/codeql-analysis.yaml
rename to .github/workflows/codeql-analysis.yml
diff --git a/.github/workflows/e2e-profiling.yaml b/.github/workflows/e2e-profiling.yaml
index 30a034d76b..41a310b5d4 100644
--- a/.github/workflows/e2e-profiling.yaml
+++ b/.github/workflows/e2e-profiling.yaml
@@ -59,12 +59,14 @@ jobs:
values: .github/helm/values/values-profile.yaml
wait_for_selector: app=vald-lb-gateway
- name: Deploy profefe
+ shell: bash
run: |
make k8s/metrics/profefe/deploy
kubectl patch cronjob kprofefe -p '{"spec": {"schedule": "*/1 * * * *"}}'
kubectl wait --for=condition=ready pod -l app=profefe --timeout=300s
- name: Run E2E CRUD
continue-on-error: true
+ shell: bash
run: |
make hack/benchmark/assets/dataset/${{ env.DATASET }}
make E2E_BIND_PORT=8081 \
@@ -83,6 +85,7 @@ jobs:
env:
POD_NAME: ${{ steps.deploy_vald.outputs.POD_NAME }}
- name: Get profiles
+ shell: bash
run: |
mkdir -p profiles
kubectl port-forward deployment/profefe 10100:10100 &
@@ -151,6 +154,7 @@ jobs:
path: graphs/*
- name: Upload to vald-ci-images repository
if: github.event.action == 'labeled' && github.event.label.name == 'actions/e2e-profiling'
+ shell: bash
run: |
CLONE_DIR=$(mktemp -d)
git clone --depth 1 https://${GITHUB_USER}:${GITHUB_TOKEN}@github.com/vdaas-ci/vald-ci-images.git $CLONE_DIR
@@ -166,6 +170,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.DISPATCH_TOKEN }}
- name: Comment
if: github.event.action == 'labeled' && github.event.label.name == 'actions/e2e-profiling'
+ shell: bash
run: |
base="https://raw.githubusercontent.com/vdaas-ci/vald-ci-images/main/${GITHUB_SHA::6}"
body="
type | "
diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml
index a808894923..774161c298 100644
--- a/.github/workflows/e2e.yaml
+++ b/.github/workflows/e2e.yaml
@@ -220,7 +220,7 @@ jobs:
E2E_UPDATE_COUNT=10 \
E2E_UPSERT_COUNT=10 \
E2E_REMOVE_COUNT=10 \
- E2E_WAIT_FOR_CREATE_INDEX_DURATION=3m \
+ E2E_WAIT_FOR_CREATE_INDEX_DURATION=5m \
E2E_TARGET_POD_NAME=${POD_NAME} \
E2E_TARGET_NAMESPACE=default \
e2e/skip
diff --git a/Makefile b/Makefile
index e55f5e975e..e7f3c2a26b 100644
--- a/Makefile
+++ b/Makefile
@@ -665,7 +665,7 @@ $(LIB_PATH)/libfaiss.a:
-DBUILD_STATIC_EXECS=ON \
-DBUILD_TESTING=OFF \
-DFAISS_ENABLE_PYTHON=OFF \
- -DFAISS_ENABLE_GPU=OFF \
+ -DFAISS_ENABLE_GPU=OFF \
-DBLA_VENDOR=OpenBLAS \
-DCMAKE_C_FLAGS="$(LDFLAGS)" \
-DCMAKE_EXE_LINKER_FLAGS="$(FAISS_LDFLAGS)" \
@@ -679,19 +679,32 @@ $(LIB_PATH)/libfaiss.a:
.PHONY: usearch/install
## install usearch
-usearch/install:
-ifeq ($(OS),linux)
- curl -sSL https://github.com/unum-cloud/usearch/releases/download/v$(USEARCH_VERSION)/usearch_$(OS)_$(GOARCH)_$(USEARCH_VERSION).deb -o usearch_$(OS)_$(USEARCH_VERSION).deb
- dpkg -i usearch_$(OS)_$(USEARCH_VERSION).deb
- rm usearch_$(OS)_$(USEARCH_VERSION).deb
- ldconfig
-else ifeq ($(OS),macos)
- curl -sSL https://github.com/unum-cloud/usearch/releases/download/v$(USEARCH_VERSION)/usearch_macos_$(GOARCH)_$(USEARCH_VERSION).zip -o usearch_macos_$(OS)_$(USEARCH_VERSION).zip
- unzip usearch_macos_$(OS)_$(USEARCH_VERSION).zip
- sudo mv libusearch_c.dylib /usr/local/lib && sudo mv usearch.h /usr/local/include
- rm -rf usearch_macos_$(OS)_$(USEARCH_VERSION).zip
+usearch/install: $(USR_LOCAL)/include/usearch.h
+$(USR_LOCAL)/include/usearch.h:
+ git clone --depth 1 --recursive --branch v$(USEARCH_VERSION) https://github.com/unum-cloud/usearch $(TEMP_DIR)/usearch-$(USEARCH_VERSION)
+ cd $(TEMP_DIR)/usearch-$(USEARCH_VERSION) && \
+ cmake -DCMAKE_BUILD_TYPE=Release \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DBUILD_TESTING=OFF \
+ -DUSEARCH_BUILD_LIB_C=ON \
+ -DUSEARCH_USE_FP16LIB=ON \
+ -DUSEARCH_USE_OPENMP=ON \
+ -DUSEARCH_USE_SIMSIMD=ON \
+ -DUSEARCH_USE_JEMALLOC=ON \
+ -DCMAKE_C_FLAGS="$(CFLAGS)" \
+ -DCMAKE_CXX_FLAGS="$(CXXFLAGS)" \
+ -DCMAKE_INSTALL_PREFIX=$(USR_LOCAL) \
+ -DCMAKE_INSTALL_LIBDIR=$(LIB_PATH) \
+ -B $(TEMP_DIR)/usearch-$(USEARCH_VERSION)/build $(TEMP_DIR)/usearch-$(USEARCH_VERSION)
+ cmake --build $(TEMP_DIR)/usearch-$(USEARCH_VERSION)/build -j$(CORES)
+ cmake --install $(TEMP_DIR)/usearch-$(USEARCH_VERSION)/build --prefix=$(USR_LOCAL)
+ cd $(ROOTDIR)
+ cp $(TEMP_DIR)/usearch-$(USEARCH_VERSION)/build/libusearch_static_c.a $(LIB_PATH)/libusearch_c.a
+ cp $(TEMP_DIR)/usearch-$(USEARCH_VERSION)/build/libusearch_static_c.a $(LIB_PATH)/libusearch_static_c.a
+ cp $(TEMP_DIR)/usearch-$(USEARCH_VERSION)/build/libusearch_c.so $(LIB_PATH)/libusearch_c.so
+ cp $(TEMP_DIR)/usearch-$(USEARCH_VERSION)/c/usearch.h $(USR_LOCAL)/include/usearch.h
+ rm -rf $(TEMP_DIR)/usearch-$(USEARCH_VERSION)
ldconfig
-endif
.PHONY: cmake/install
## install CMAKE
@@ -710,7 +723,6 @@ cmake/install:
cd $(ROOTDIR)
rm -rf $(TEMP_DIR)/CMAKE-$(CMAKE_VERSION)
ldconfig
- # -DCMAKE_USE_OPENSSL=OFF
.PHONY: lint
## run lints
diff --git a/apis/grpc/v1/agent/sidecar/sidecar_vtproto.pb.go b/apis/grpc/v1/agent/sidecar/sidecar_vtproto.pb.go
index f60d8f002f..3e7fb5da06 100644
--- a/apis/grpc/v1/agent/sidecar/sidecar_vtproto.pb.go
+++ b/apis/grpc/v1/agent/sidecar/sidecar_vtproto.pb.go
@@ -36,7 +36,7 @@ const _ = grpc.SupportPackageIsVersion7
// SidecarClient is the client API for Sidecar service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
-type SidecarClient interface{}
+type SidecarClient any
type sidecarClient struct {
cc grpc.ClientConnInterface
diff --git a/charts/vald/README.md b/charts/vald/README.md
index 3f574e605a..377f895457 100644
--- a/charts/vald/README.md
+++ b/charts/vald/README.md
@@ -696,7 +696,7 @@ Run the following command to install the chart,
| gateway.filter.ingress.host | string | `"filter.gateway.vald.vdaas.org"` | ingress hostname |
| gateway.filter.ingress.pathType | string | `"ImplementationSpecific"` | gateway ingress pathType |
| gateway.filter.ingress.servicePort | string | `"grpc"` | service port to be exposed by ingress |
-| gateway.filter.initContainers | list | `[{"image":"busybox:stable","name":"wait-for-gateway-lb","sleepDuration":2,"target":"gateway-lb","type":"wait-for"}]` | init containers |
+| gateway.filter.initContainers | list | `[{"image":"busybox:stable","imagePullPolicy":"Always","name":"wait-for-gateway-lb","sleepDuration":2,"target":"gateway-lb","type":"wait-for"}]` | init containers |
| gateway.filter.internalTrafficPolicy | string | `""` | internal traffic policy (can be specified when service type is LoadBalancer or NodePort) : Cluster or Local |
| gateway.filter.kind | string | `"Deployment"` | deployment kind: Deployment or DaemonSet |
| gateway.filter.logging | object | `{}` | logging config (overrides defaults.logging) |
@@ -758,7 +758,7 @@ Run the following command to install the chart,
| gateway.lb.ingress.host | string | `"lb.gateway.vald.vdaas.org"` | ingress hostname |
| gateway.lb.ingress.pathType | string | `"ImplementationSpecific"` | gateway ingress pathType |
| gateway.lb.ingress.servicePort | string | `"grpc"` | service port to be exposed by ingress |
-| gateway.lb.initContainers | list | `[{"image":"busybox:stable","name":"wait-for-discoverer","sleepDuration":2,"target":"discoverer","type":"wait-for"},{"image":"busybox:stable","name":"wait-for-agent","sleepDuration":2,"target":"agent","type":"wait-for"}]` | init containers |
+| gateway.lb.initContainers | list | `[{"image":"busybox:stable","imagePullPolicy":"Always","name":"wait-for-discoverer","sleepDuration":2,"target":"discoverer","type":"wait-for"},{"image":"busybox:stable","imagePullPolicy":"Always","name":"wait-for-agent","sleepDuration":2,"target":"agent","type":"wait-for"}]` | init containers |
| gateway.lb.internalTrafficPolicy | string | `""` | internal traffic policy (can be specified when service type is LoadBalancer or NodePort) : Cluster or Local |
| gateway.lb.kind | string | `"Deployment"` | deployment kind: Deployment or DaemonSet |
| gateway.lb.logging | object | `{}` | logging config (overrides defaults.logging) |
@@ -845,7 +845,7 @@ Run the following command to install the chart,
| gateway.mirror.ingress.host | string | `"mirror.gateway.vald.vdaas.org"` | ingress hostname |
| gateway.mirror.ingress.pathType | string | `"ImplementationSpecific"` | gateway ingress pathType |
| gateway.mirror.ingress.servicePort | string | `"grpc"` | service port to be exposed by ingress |
-| gateway.mirror.initContainers | list | `[{"image":"busybox:stable","name":"wait-for-gateway-lb","sleepDuration":2,"target":"gateway-lb","type":"wait-for"}]` | init containers |
+| gateway.mirror.initContainers | list | `[{"image":"busybox:stable","imagePullPolicy":"Always","name":"wait-for-gateway-lb","sleepDuration":2,"target":"gateway-lb","type":"wait-for"}]` | init containers |
| gateway.mirror.internalTrafficPolicy | string | `""` | internal traffic policy (can be specified when service type is LoadBalancer or NodePort) : Cluster or Local |
| gateway.mirror.kind | string | `"Deployment"` | deployment kind: Deployment or DaemonSet |
| gateway.mirror.logging | object | `{}` | logging config (overrides defaults.logging) |
@@ -896,7 +896,7 @@ Run the following command to install the chart,
| manager.index.corrector.image.pullPolicy | string | `"Always"` | |
| manager.index.corrector.image.repository | string | `"vdaas/vald-index-correction"` | image repository |
| manager.index.corrector.image.tag | string | `""` | image tag (overrides defaults.image.tag) |
-| manager.index.corrector.initContainers | list | `[{"image":"busybox:stable","name":"wait-for-agent","sleepDuration":2,"target":"agent","type":"wait-for"},{"image":"busybox:stable","name":"wait-for-discoverer","sleepDuration":2,"target":"discoverer","type":"wait-for"}]` | init containers |
+| manager.index.corrector.initContainers | list | `[{"image":"busybox:stable","imagePullPolicy":"Always","name":"wait-for-agent","sleepDuration":2,"target":"agent","type":"wait-for"},{"image":"busybox:stable","imagePullPolicy":"Always","name":"wait-for-discoverer","sleepDuration":2,"target":"discoverer","type":"wait-for"}]` | init containers |
| manager.index.corrector.kvs_background_compaction_interval | string | `"5s"` | interval of checked id list kvs compaction |
| manager.index.corrector.kvs_background_sync_interval | string | `"5s"` | interval of checked id list kvs sync |
| manager.index.corrector.name | string | `"vald-index-correction"` | name of index correction job |
@@ -920,7 +920,7 @@ Run the following command to install the chart,
| manager.index.creator.image.pullPolicy | string | `"Always"` | |
| manager.index.creator.image.repository | string | `"vdaas/vald-index-creation"` | image repository |
| manager.index.creator.image.tag | string | `""` | image tag (overrides defaults.image.tag) |
-| manager.index.creator.initContainers | list | `[{"image":"busybox:stable","name":"wait-for-agent","sleepDuration":2,"target":"agent","type":"wait-for"},{"image":"busybox:stable","name":"wait-for-discoverer","sleepDuration":2,"target":"discoverer","type":"wait-for"}]` | init containers |
+| manager.index.creator.initContainers | list | `[{"image":"busybox:stable","imagePullPolicy":"Always","name":"wait-for-agent","sleepDuration":2,"target":"agent","type":"wait-for"},{"image":"busybox:stable","imagePullPolicy":"Always","name":"wait-for-discoverer","sleepDuration":2,"target":"discoverer","type":"wait-for"}]` | init containers |
| manager.index.creator.name | string | `"vald-index-creation"` | name of index creation job |
| manager.index.creator.node_name | string | `""` | node name |
| manager.index.creator.observability | object | `{"otlp":{"attribute":{"service_name":"vald-index-creation"}}}` | observability config (overrides defaults.observability) |
@@ -949,7 +949,7 @@ Run the following command to install the chart,
| manager.index.indexer.discoverer.client | object | `{}` | gRPC client for discoverer (overrides defaults.grpc.client) |
| manager.index.indexer.discoverer.duration | string | `"500ms"` | refresh duration to discover |
| manager.index.indexer.node_name | string | `""` | node name |
-| manager.index.initContainers | list | `[{"image":"busybox:stable","name":"wait-for-agent","sleepDuration":2,"target":"agent","type":"wait-for"},{"image":"busybox:stable","name":"wait-for-discoverer","sleepDuration":2,"target":"discoverer","type":"wait-for"}]` | init containers |
+| manager.index.initContainers | list | `[{"image":"busybox:stable","imagePullPolicy":"Always","name":"wait-for-agent","sleepDuration":2,"target":"agent","type":"wait-for"},{"image":"busybox:stable","imagePullPolicy":"Always","name":"wait-for-discoverer","sleepDuration":2,"target":"discoverer","type":"wait-for"}]` | init containers |
| manager.index.kind | string | `"Deployment"` | deployment kind: Deployment or DaemonSet |
| manager.index.logging | object | `{}` | logging config (overrides defaults.logging) |
| manager.index.maxUnavailable | string | `"50%"` | maximum number of unavailable replicas |
@@ -1038,7 +1038,7 @@ Run the following command to install the chart,
| manager.index.saver.image.pullPolicy | string | `"Always"` | |
| manager.index.saver.image.repository | string | `"vdaas/vald-index-save"` | image repository |
| manager.index.saver.image.tag | string | `""` | image tag (overrides defaults.image.tag) |
-| manager.index.saver.initContainers | list | `[{"image":"busybox:stable","name":"wait-for-agent","sleepDuration":2,"target":"agent","type":"wait-for"},{"image":"busybox:stable","name":"wait-for-discoverer","sleepDuration":2,"target":"discoverer","type":"wait-for"}]` | init containers |
+| manager.index.saver.initContainers | list | `[{"image":"busybox:stable","imagePullPolicy":"Always","name":"wait-for-agent","sleepDuration":2,"target":"agent","type":"wait-for"},{"image":"busybox:stable","imagePullPolicy":"Always","name":"wait-for-discoverer","sleepDuration":2,"target":"discoverer","type":"wait-for"}]` | init containers |
| manager.index.saver.name | string | `"vald-index-save"` | name of index save job |
| manager.index.saver.node_name | string | `""` | node name |
| manager.index.saver.observability | object | `{"otlp":{"attribute":{"service_name":"vald-index-save"}}}` | observability config (overrides defaults.observability) |
diff --git a/charts/vald/templates/_helpers.tpl b/charts/vald/templates/_helpers.tpl
index 2edc19e03c..6de2c34bb5 100755
--- a/charts/vald/templates/_helpers.tpl
+++ b/charts/vald/templates/_helpers.tpl
@@ -699,6 +699,7 @@ initContainers
{{- if .type }}
- name: {{ .name }}
image: {{ .image }}
+ imagePullPolicy: {{ .imagePullPolicy }}
{{- if eq .type "wait-for" }}
command:
- /bin/sh
diff --git a/charts/vald/values.yaml b/charts/vald/values.yaml
index 02f2bb634a..8df795ee67 100644
--- a/charts/vald/values.yaml
+++ b/charts/vald/values.yaml
@@ -1075,11 +1075,13 @@ gateway:
name: wait-for-discoverer
target: discoverer
image: busybox:stable
+ imagePullPolicy: Always
sleepDuration: 2
- type: wait-for
name: wait-for-agent
target: agent
image: busybox:stable
+ imagePullPolicy: Always
sleepDuration: 2
# @schema {"name": "gateway.lb.env", "type": "array", "items": {"type": "object"}, "anchor": "env"}
# gateway.lb.env -- environment variables
@@ -1357,6 +1359,7 @@ gateway:
name: wait-for-gateway-lb
target: gateway-lb
image: busybox:stable
+ imagePullPolicy: Always
sleepDuration: 2
# @schema {"name": "gateway.filter.env", "type": "array", "items": {"type": "object"}, "anchor": "env"}
# gateway.filter.env -- environment variables
@@ -1644,6 +1647,7 @@ gateway:
name: wait-for-gateway-lb
target: gateway-lb
image: busybox:stable
+ imagePullPolicy: Always
sleepDuration: 2
# @schema {"name": "gateway.mirror.env", "type": "array", "items": {"type": "object"}, "anchor": "env"}
# gateway.mirror.env -- environment variables
@@ -3133,11 +3137,13 @@ manager:
name: wait-for-agent
target: agent
image: busybox:stable
+ imagePullPolicy: Always
sleepDuration: 2
- type: wait-for
name: wait-for-discoverer
target: discoverer
image: busybox:stable
+ imagePullPolicy: Always
sleepDuration: 2
# @schema {"name": "manager.index.env", "alias": "env"}
# manager.index.env -- environment variables
@@ -3293,11 +3299,13 @@ manager:
name: wait-for-agent
target: agent
image: busybox:stable
+ imagePullPolicy: Always
sleepDuration: 2
- type: wait-for
name: wait-for-discoverer
target: discoverer
image: busybox:stable
+ imagePullPolicy: Always
sleepDuration: 2
# @schema {"name": "manager.index.corrector.env", "alias": "env"}
# manager.index.corrector.env -- environment variables
@@ -3403,11 +3411,13 @@ manager:
name: wait-for-agent
target: agent
image: busybox:stable
+ imagePullPolicy: Always
sleepDuration: 2
- type: wait-for
name: wait-for-discoverer
target: discoverer
image: busybox:stable
+ imagePullPolicy: Always
sleepDuration: 2
# @schema {"name": "manager.index.creator.env", "alias": "env"}
# manager.index.creator.env -- environment variables
@@ -3510,11 +3520,13 @@ manager:
name: wait-for-agent
target: agent
image: busybox:stable
+ imagePullPolicy: Always
sleepDuration: 2
- type: wait-for
name: wait-for-discoverer
target: discoverer
image: busybox:stable
+ imagePullPolicy: Always
sleepDuration: 2
# @schema {"name": "manager.index.saver.env", "alias": "env"}
# manager.index.saver.env -- environment variables
diff --git a/dockers/agent/core/agent/Dockerfile b/dockers/agent/core/agent/Dockerfile
index f0e82341f3..9f8e80f25f 100644
--- a/dockers/agent/core/agent/Dockerfile
+++ b/dockers/agent/core/agent/Dockerfile
@@ -39,8 +39,8 @@ ENV REPO=vald
ENV RUST_HOME=/usr/local/lib/rust
ENV TZ=Etc/UTC
ENV USER=root
-ENV CARGO_HOME=${RUST_HOME}/cargo
ENV RUSTUP_HOME=${RUST_HOME}/rustup
+ENV CARGO_HOME=${RUST_HOME}/cargo
ENV PATH=${CARGO_HOME}/bin:${RUSTUP_HOME}/bin:/usr/local/bin:${PATH}
WORKDIR ${HOME}/rust/src/github.com/${ORG}/${REPO}
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
diff --git a/dockers/ci/base/Dockerfile b/dockers/ci/base/Dockerfile
index a05d3e2593..ecbdeceeec 100644
--- a/dockers/ci/base/Dockerfile
+++ b/dockers/ci/base/Dockerfile
@@ -44,8 +44,8 @@ ENV REPO=vald
ENV RUST_HOME=/usr/local/lib/rust
ENV TZ=Etc/UTC
ENV USER=root
-ENV RUSTUP_HOME=${RUST_HOME}/rustup
ENV CARGO_HOME=${RUST_HOME}/cargo
+ENV RUSTUP_HOME=${RUST_HOME}/rustup
ENV PATH=${CARGO_HOME}/bin:${GOPATH}/bin:${GOROOT}/bin:${RUSTUP_HOME}/bin:/usr/local/bin:${PATH}
WORKDIR ${GOPATH}/src/github.com/${ORG}/${REPO}
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
diff --git a/dockers/dev/Dockerfile b/dockers/dev/Dockerfile
index 8ac6845f43..a084f9b51c 100644
--- a/dockers/dev/Dockerfile
+++ b/dockers/dev/Dockerfile
@@ -44,8 +44,8 @@ ENV REPO=vald
ENV RUST_HOME=/usr/local/lib/rust
ENV TZ=Etc/UTC
ENV USER=root
-ENV RUSTUP_HOME=${RUST_HOME}/rustup
ENV CARGO_HOME=${RUST_HOME}/cargo
+ENV RUSTUP_HOME=${RUST_HOME}/rustup
ENV PATH=${CARGO_HOME}/bin:${GOPATH}/bin:${GOROOT}/bin:${RUSTUP_HOME}/bin:/usr/local/bin:${PATH}
WORKDIR ${GOPATH}/src/github.com/${ORG}/${REPO}
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
@@ -142,7 +142,6 @@ RUN --mount=type=bind,target=.,rw \
&& make telepresence/install \
&& make ngt/install \
&& make faiss/install \
- && make usearch/install \
&& rm -rf ${GOPATH}/src/github.com/${ORG}/${REPO}/*
# skipcq: DOK-DL3002
USER root:root
diff --git a/docs/tutorial/get-started-with-faiss-agent.md b/docs/tutorial/get-started-with-faiss-agent.md
index 2abad816da..e47e3b1659 100644
--- a/docs/tutorial/get-started-with-faiss-agent.md
+++ b/docs/tutorial/get-started-with-faiss-agent.md
@@ -278,7 +278,7 @@ If you are interested, please refer to [SDKs](../user-guides/sdks.md).
```go
ctx := context.Background()
- conn, err := grpc.DialContext(ctx, grpcServerAddr, grpc.WithInsecure())
+ conn, err := grpc.NewClient(grpcServerAddr, grpc.WithInsecure())
if err != nil {
glg.Fatal(err)
}
diff --git a/docs/tutorial/get-started.md b/docs/tutorial/get-started.md
index 5f14077cff..203379f444 100644
--- a/docs/tutorial/get-started.md
+++ b/docs/tutorial/get-started.md
@@ -333,7 +333,7 @@ If you are interested, please refer to [SDKs](../user-guides/sdks.md).
```go
ctx := context.Background()
- conn, err := grpc.DialContext(ctx, grpcServerAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
+ conn, err := grpc.NewClient(grpcServerAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
glg.Fatal(err)
}
diff --git a/docs/tutorial/vald-agent-standalone-on-k8s.md b/docs/tutorial/vald-agent-standalone-on-k8s.md
index 669e03f285..13238002f4 100644
--- a/docs/tutorial/vald-agent-standalone-on-k8s.md
+++ b/docs/tutorial/vald-agent-standalone-on-k8s.md
@@ -236,7 +236,7 @@ This chapter uses [NGT](https://github.com/yahoojapan/ngt) as Vald Agent to perf
```go
ctx := context.Background()
- conn, err := grpc.DialContext(ctx, grpcServerAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
+ conn, err := grpc.NewClient(grpcServerAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
glg.Fatal(err)
}
diff --git a/docs/user-guides/client-api-config.md b/docs/user-guides/client-api-config.md
index 578910b77f..3abac4d34d 100644
--- a/docs/user-guides/client-api-config.md
+++ b/docs/user-guides/client-api-config.md
@@ -46,7 +46,7 @@ func main() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
target := "localhost:8080"
- conn, err := grpc.DialContext(ctx, target)
+ conn, err := grpc.NewClient(target)
if err != nil {
panic(err)
}
@@ -162,7 +162,7 @@ func example() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
target := "localhost:8080"
- conn, err := grpc.DialContext(ctx, target)
+ conn, err := grpc.NewClient(target)
if err != nil {
panic(err)
}
@@ -286,7 +286,7 @@ func example() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
target := "localhost:8080"
- conn, err := grpc.DialContext(ctx, target)
+ conn, err := grpc.NewClient(target)
if err != nil {
panic(err)
}
@@ -470,7 +470,7 @@ func main() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
target := "localhost:8080"
- conn, err := grpc.DialContext(ctx, target)
+ conn, err := grpc.NewClient(target)
if err != nil {
panic(err)
}
@@ -653,7 +653,7 @@ func example() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
target := "localhost:8080"
- conn, err := grpc.DialContext(ctx, target)
+ conn, err := grpc.NewClient(target)
if err != nil {
panic(err)
}
diff --git a/docs/user-guides/filtering-configuration.md b/docs/user-guides/filtering-configuration.md
index b2d864b093..05f7673bfc 100644
--- a/docs/user-guides/filtering-configuration.md
+++ b/docs/user-guides/filtering-configuration.md
@@ -153,7 +153,7 @@ func main() {
// connect to the Vald cluster
ctx := context.Background()
- conn, err := grpc.DialContext(ctx, grpcServerAddr, grpc.WithInsecure())
+ conn, err := grpc.NewClient(grpcServerAddr, grpc.WithInsecure())
if err != nil {
log.Error(err)
return
diff --git a/example/client/agent/main.go b/example/client/agent/main.go
index 77cf7eee48..d3eaa9d9bc 100644
--- a/example/client/agent/main.go
+++ b/example/client/agent/main.go
@@ -67,7 +67,7 @@ func main() {
ctx := context.Background()
// Create a Vald Agent client for connecting to the Vald cluster.
- conn, err := grpc.DialContext(ctx, grpcServerAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
+ conn, err := grpc.NewClient(grpcServerAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
glg.Fatal(err)
}
diff --git a/example/client/go.mod b/example/client/go.mod
index 198e984084..1b680ca571 100644
--- a/example/client/go.mod
+++ b/example/client/go.mod
@@ -11,10 +11,10 @@ replace (
golang.org/x/crypto => golang.org/x/crypto v0.27.0
golang.org/x/net => golang.org/x/net v0.29.0
golang.org/x/text => golang.org/x/text v0.18.0
- google.golang.org/genproto => google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1
- google.golang.org/genproto/googleapis/api => google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1
- google.golang.org/genproto/googleapis/rpc => google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1
- google.golang.org/grpc => google.golang.org/grpc v1.66.2
+ google.golang.org/genproto => google.golang.org/genproto v0.0.0-20240924160255-9d4c2d233b61
+ google.golang.org/genproto/googleapis/api => google.golang.org/genproto/googleapis/api v0.0.0-20240924160255-9d4c2d233b61
+ google.golang.org/genproto/googleapis/rpc => google.golang.org/genproto/googleapis/rpc v0.0.0-20240924160255-9d4c2d233b61
+ google.golang.org/grpc => google.golang.org/grpc v1.67.0
google.golang.org/protobuf => google.golang.org/protobuf v1.34.2
gopkg.in/yaml.v2 => gopkg.in/yaml.v2 v2.4.0
gopkg.in/yaml.v3 => gopkg.in/yaml.v3 v3.0.1
@@ -25,7 +25,7 @@ require (
github.com/kpango/glg v1.6.14
github.com/vdaas/vald-client-go v1.7.13
gonum.org/v1/hdf5 v0.0.0-20210714002203-8c5d23bc6946
- google.golang.org/grpc v1.66.0
+ google.golang.org/grpc v1.67.0
)
require (
@@ -33,10 +33,10 @@ require (
github.com/goccy/go-json v0.10.2 // indirect
github.com/kpango/fastime v1.1.9 // indirect
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
- golang.org/x/net v0.26.0 // indirect
+ golang.org/x/net v0.28.0 // indirect
golang.org/x/sys v0.25.0 // indirect
golang.org/x/text v0.18.0 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
google.golang.org/protobuf v1.34.2 // indirect
)
diff --git a/example/client/go.sum b/example/client/go.sum
index 8fd1e3660a..215ea70b56 100644
--- a/example/client/go.sum
+++ b/example/client/go.sum
@@ -30,11 +30,11 @@ golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
gonum.org/v1/hdf5 v0.0.0-20210714002203-8c5d23bc6946 h1:vJpL69PeUullhJyKtTjHjENEmZU3BkO4e+fod7nKzgM=
gonum.org/v1/hdf5 v0.0.0-20210714002203-8c5d23bc6946/go.mod h1:BQUWDHIAygjdt1HnUPQ0eWqLN2n5FwJycrpYUVUOx2I=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
-google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo=
-google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
+google.golang.org/genproto/googleapis/api v0.0.0-20240924160255-9d4c2d233b61 h1:pAjq8XSSzXoP9ya73v/w+9QEAAJNluLrpmMq5qFJQNY=
+google.golang.org/genproto/googleapis/api v0.0.0-20240924160255-9d4c2d233b61/go.mod h1:O6rP0uBq4k0mdi/b4ZEMAZjkhYWhS815kCvaMha4VN8=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240924160255-9d4c2d233b61 h1:N9BgCIAUvn/M+p4NJccWPWb3BWh88+zyL0ll9HgbEeM=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240924160255-9d4c2d233b61/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
+google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw=
+google.golang.org/grpc v1.67.0/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
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/example/client/main.go b/example/client/main.go
index c323a1e3ba..f8a051d86e 100644
--- a/example/client/main.go
+++ b/example/client/main.go
@@ -66,7 +66,7 @@ func main() {
ctx := context.Background()
// Create a Vald client for connecting to the Vald cluster.
- conn, err := grpc.DialContext(ctx, grpcServerAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
+ conn, err := grpc.NewClient(grpcServerAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
glg.Fatal(err)
}
diff --git a/example/client/mirror/main.go b/example/client/mirror/main.go
index 8e8f4b074e..3bd0318166 100644
--- a/example/client/mirror/main.go
+++ b/example/client/mirror/main.go
@@ -68,7 +68,7 @@ func main() {
// Creates Vald clients for connecting to Vald clusters.
clients := make([]vald.Client, 0, len(grpcServerAddrs))
for _, addr := range grpcServerAddrs {
- conn, err := grpc.DialContext(ctx, addr, grpc.WithInsecure())
+ conn, err := grpc.NewClient(addr, grpc.WithInsecure())
if err != nil {
glg.Fatal(err)
}
diff --git a/go.mod b/go.mod
index 1821334bac..9dd20907f9 100644
--- a/go.mod
+++ b/go.mod
@@ -4,17 +4,17 @@ go 1.23.1
replace (
cloud.google.com/go => cloud.google.com/go v0.115.1
- cloud.google.com/go/bigquery => cloud.google.com/go/bigquery v1.62.0
- cloud.google.com/go/compute => cloud.google.com/go/compute v1.28.0
+ cloud.google.com/go/bigquery => cloud.google.com/go/bigquery v1.63.0
+ cloud.google.com/go/compute => cloud.google.com/go/compute v1.28.1
cloud.google.com/go/datastore => cloud.google.com/go/datastore v1.19.0
cloud.google.com/go/firestore => cloud.google.com/go/firestore v1.17.0
- cloud.google.com/go/iam => cloud.google.com/go/iam v1.2.0
- cloud.google.com/go/kms => cloud.google.com/go/kms v1.19.0
- cloud.google.com/go/monitoring => cloud.google.com/go/monitoring v1.21.0
+ cloud.google.com/go/iam => cloud.google.com/go/iam v1.2.1
+ cloud.google.com/go/kms => cloud.google.com/go/kms v1.20.0
+ cloud.google.com/go/monitoring => cloud.google.com/go/monitoring v1.21.1
cloud.google.com/go/pubsub => cloud.google.com/go/pubsub v1.43.0
- cloud.google.com/go/secretmanager => cloud.google.com/go/secretmanager v1.14.0
+ cloud.google.com/go/secretmanager => cloud.google.com/go/secretmanager v1.14.1
cloud.google.com/go/storage => cloud.google.com/go/storage v1.43.0
- cloud.google.com/go/trace => cloud.google.com/go/trace v1.11.0
+ cloud.google.com/go/trace => cloud.google.com/go/trace v1.11.1
code.cloudfoundry.org/bytefmt => code.cloudfoundry.org/bytefmt v0.10.0
contrib.go.opencensus.io/exporter/aws => contrib.go.opencensus.io/exporter/aws v0.0.0-20230502192102-15967c811cec
contrib.go.opencensus.io/exporter/prometheus => contrib.go.opencensus.io/exporter/prometheus v0.4.2
@@ -38,35 +38,35 @@ replace (
github.com/DATA-DOG/go-sqlmock => github.com/DATA-DOG/go-sqlmock v1.5.2
github.com/GoogleCloudPlatform/cloudsql-proxy => github.com/GoogleCloudPlatform/cloudsql-proxy v1.37.0
github.com/Masterminds/semver/v3 => github.com/Masterminds/semver/v3 v3.3.0
- github.com/ajstarks/deck => github.com/ajstarks/deck v0.0.0-20240828115917-88fc45aa28b1
- github.com/ajstarks/deck/generate => github.com/ajstarks/deck/generate v0.0.0-20240828115917-88fc45aa28b1
+ github.com/ajstarks/deck => github.com/ajstarks/deck v0.0.0-20240918141114-8d365813662d
+ github.com/ajstarks/deck/generate => github.com/ajstarks/deck/generate v0.0.0-20240918141114-8d365813662d
github.com/ajstarks/svgo => github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b
github.com/akrylysov/pogreb => github.com/akrylysov/pogreb v0.10.2
github.com/antihax/optional => github.com/antihax/optional v1.0.0
github.com/armon/go-socks5 => github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5
github.com/aws/aws-sdk-go => github.com/aws/aws-sdk-go v1.55.5
- github.com/aws/aws-sdk-go-v2 => github.com/aws/aws-sdk-go-v2 v1.30.5
- github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream => github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.4
- github.com/aws/aws-sdk-go-v2/config => github.com/aws/aws-sdk-go-v2/config v1.27.33
- github.com/aws/aws-sdk-go-v2/credentials => github.com/aws/aws-sdk-go-v2/credentials v1.17.32
- github.com/aws/aws-sdk-go-v2/feature/ec2/imds => github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13
- github.com/aws/aws-sdk-go-v2/feature/s3/manager => github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.18
- github.com/aws/aws-sdk-go-v2/internal/configsources => github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17
- github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 => github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17
+ github.com/aws/aws-sdk-go-v2 => github.com/aws/aws-sdk-go-v2 v1.31.0
+ github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream => github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.5
+ github.com/aws/aws-sdk-go-v2/config => github.com/aws/aws-sdk-go-v2/config v1.27.38
+ github.com/aws/aws-sdk-go-v2/credentials => github.com/aws/aws-sdk-go-v2/credentials v1.17.36
+ github.com/aws/aws-sdk-go-v2/feature/ec2/imds => github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14
+ github.com/aws/aws-sdk-go-v2/feature/s3/manager => github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.24
+ github.com/aws/aws-sdk-go-v2/internal/configsources => github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18
+ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 => github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18
github.com/aws/aws-sdk-go-v2/internal/ini => github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1
- github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding => github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4
- github.com/aws/aws-sdk-go-v2/service/internal/checksum => github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.19
- github.com/aws/aws-sdk-go-v2/service/internal/presigned-url => github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19
- github.com/aws/aws-sdk-go-v2/service/internal/s3shared => github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.17
- github.com/aws/aws-sdk-go-v2/service/kms => github.com/aws/aws-sdk-go-v2/service/kms v1.35.7
- github.com/aws/aws-sdk-go-v2/service/s3 => github.com/aws/aws-sdk-go-v2/service/s3 v1.61.2
- github.com/aws/aws-sdk-go-v2/service/secretsmanager => github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.8
- github.com/aws/aws-sdk-go-v2/service/sns => github.com/aws/aws-sdk-go-v2/service/sns v1.31.7
- github.com/aws/aws-sdk-go-v2/service/sqs => github.com/aws/aws-sdk-go-v2/service/sqs v1.34.8
- github.com/aws/aws-sdk-go-v2/service/ssm => github.com/aws/aws-sdk-go-v2/service/ssm v1.52.8
- github.com/aws/aws-sdk-go-v2/service/sso => github.com/aws/aws-sdk-go-v2/service/sso v1.22.7
- github.com/aws/aws-sdk-go-v2/service/sts => github.com/aws/aws-sdk-go-v2/service/sts v1.30.7
- github.com/aws/smithy-go => github.com/aws/smithy-go v1.20.4
+ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding => github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5
+ github.com/aws/aws-sdk-go-v2/service/internal/checksum => github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.20
+ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url => github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20
+ github.com/aws/aws-sdk-go-v2/service/internal/s3shared => github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.18
+ github.com/aws/aws-sdk-go-v2/service/kms => github.com/aws/aws-sdk-go-v2/service/kms v1.36.2
+ github.com/aws/aws-sdk-go-v2/service/s3 => github.com/aws/aws-sdk-go-v2/service/s3 v1.63.2
+ github.com/aws/aws-sdk-go-v2/service/secretsmanager => github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.33.2
+ github.com/aws/aws-sdk-go-v2/service/sns => github.com/aws/aws-sdk-go-v2/service/sns v1.32.2
+ github.com/aws/aws-sdk-go-v2/service/sqs => github.com/aws/aws-sdk-go-v2/service/sqs v1.35.2
+ github.com/aws/aws-sdk-go-v2/service/ssm => github.com/aws/aws-sdk-go-v2/service/ssm v1.54.2
+ github.com/aws/aws-sdk-go-v2/service/sso => github.com/aws/aws-sdk-go-v2/service/sso v1.23.2
+ github.com/aws/aws-sdk-go-v2/service/sts => github.com/aws/aws-sdk-go-v2/service/sts v1.31.2
+ github.com/aws/smithy-go => github.com/aws/smithy-go v1.21.0
github.com/benbjohnson/clock => github.com/benbjohnson/clock v1.3.5
github.com/beorn7/perks => github.com/beorn7/perks v1.0.1
github.com/bmizerany/assert => github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869
@@ -82,7 +82,7 @@ replace (
github.com/cncf/xds/go => github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78
github.com/cockroachdb/apd => github.com/cockroachdb/apd v1.1.0
github.com/coreos/go-systemd/v22 => github.com/coreos/go-systemd/v22 v22.5.0
- github.com/cpuguy83/go-md2man/v2 => github.com/cpuguy83/go-md2man/v2 v2.0.4
+ github.com/cpuguy83/go-md2man/v2 => github.com/cpuguy83/go-md2man/v2 v2.0.5
github.com/creack/pty => github.com/creack/pty v1.1.23
github.com/davecgh/go-spew => github.com/davecgh/go-spew v1.1.1
github.com/denisenkom/go-mssqldb => github.com/denisenkom/go-mssqldb v0.12.3
@@ -154,7 +154,7 @@ replace (
github.com/google/gofuzz => github.com/google/gofuzz v1.2.0
github.com/google/martian => github.com/google/martian v2.1.0+incompatible
github.com/google/martian/v3 => github.com/google/martian/v3 v3.3.3
- github.com/google/pprof => github.com/google/pprof v0.0.0-20240910150728-a0b0bb1d4134
+ github.com/google/pprof => github.com/google/pprof v0.0.0-20240925223930-fa3061bff0bc
github.com/google/shlex => github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
github.com/google/subcommands => github.com/google/subcommands v1.2.0
github.com/google/uuid => github.com/google/uuid v1.6.0
@@ -170,7 +170,7 @@ replace (
github.com/hashicorp/go-uuid => github.com/hashicorp/go-uuid v1.0.3
github.com/hashicorp/go-version => github.com/hashicorp/go-version v1.7.0
github.com/iancoleman/strcase => github.com/iancoleman/strcase v0.3.0
- github.com/ianlancetaylor/demangle => github.com/ianlancetaylor/demangle v0.0.0-20240805132620-81f5be970eca
+ github.com/ianlancetaylor/demangle => github.com/ianlancetaylor/demangle v0.0.0-20240912202439-0a2b6291aafd
github.com/inconshreveable/mousetrap => github.com/inconshreveable/mousetrap v1.1.0
github.com/jackc/chunkreader/v2 => github.com/jackc/chunkreader/v2 v2.0.1
github.com/jackc/pgconn => github.com/jackc/pgconn v1.14.3
@@ -192,11 +192,11 @@ replace (
github.com/jstemmer/go-junit-report => github.com/jstemmer/go-junit-report v1.0.0
github.com/kisielk/errcheck => github.com/kisielk/errcheck v1.7.0
github.com/kisielk/gotool => github.com/kisielk/gotool v1.0.0
- github.com/klauspost/compress => github.com/klauspost/compress v1.17.10-0.20240911134657-51aa0ecb46a9
+ github.com/klauspost/compress => github.com/klauspost/compress v1.17.11-0.20240923131516-13a1ce6df1e0
github.com/klauspost/cpuid/v2 => github.com/klauspost/cpuid/v2 v2.2.8
github.com/kpango/fastime => github.com/kpango/fastime v1.1.9
github.com/kpango/fuid => github.com/kpango/fuid v0.0.0-20221203053508-503b5ad89aa1
- github.com/kpango/gache/v2 => github.com/kpango/gache/v2 v2.0.10
+ github.com/kpango/gache/v2 => github.com/kpango/gache/v2 v2.0.11
github.com/kpango/glg => github.com/kpango/glg v1.6.15
github.com/kr/fs => github.com/kr/fs v0.1.0
github.com/kr/pretty => github.com/kr/pretty v0.3.1
@@ -237,7 +237,7 @@ replace (
github.com/pkg/sftp => github.com/pkg/sftp v1.13.6
github.com/pmezard/go-difflib => github.com/pmezard/go-difflib v1.0.0
github.com/prashantv/gostub => github.com/prashantv/gostub v1.1.0
- github.com/prometheus/client_golang => github.com/prometheus/client_golang v1.20.3
+ github.com/prometheus/client_golang => github.com/prometheus/client_golang v1.20.4
github.com/prometheus/client_model => github.com/prometheus/client_model v0.6.1
github.com/prometheus/common => github.com/prometheus/common v0.59.1
github.com/prometheus/procfs => github.com/prometheus/procfs v0.15.1
@@ -247,7 +247,7 @@ replace (
github.com/quasilyte/gogrep => github.com/quasilyte/gogrep v0.5.0
github.com/quasilyte/stdinfo => github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567
github.com/rogpeppe/fastuuid => github.com/rogpeppe/fastuuid v1.2.0
- github.com/rogpeppe/go-internal => github.com/rogpeppe/go-internal v1.12.0
+ github.com/rogpeppe/go-internal => github.com/rogpeppe/go-internal v1.13.1
github.com/rs/xid => github.com/rs/xid v1.6.0
github.com/rs/zerolog => github.com/rs/zerolog v1.33.0
github.com/russross/blackfriday/v2 => github.com/russross/blackfriday/v2 v2.1.0
@@ -287,9 +287,9 @@ replace (
go.opentelemetry.io/otel/sdk/metric => go.opentelemetry.io/otel/sdk/metric v1.30.0
go.opentelemetry.io/otel/trace => go.opentelemetry.io/otel/trace v1.30.0
go.opentelemetry.io/proto/otlp => go.opentelemetry.io/proto/otlp v1.3.1
- go.starlark.net => go.starlark.net v0.0.0-20240725214946-42030a7cedce
+ go.starlark.net => go.starlark.net v0.0.0-20240925182052-1207426daebd
go.uber.org/atomic => go.uber.org/atomic v1.11.0
- go.uber.org/automaxprocs => go.uber.org/automaxprocs v1.5.3
+ go.uber.org/automaxprocs => go.uber.org/automaxprocs v1.6.0
go.uber.org/goleak => go.uber.org/goleak v1.3.0
go.uber.org/multierr => go.uber.org/multierr v1.11.0
go.uber.org/zap => go.uber.org/zap v1.27.0
@@ -314,12 +314,12 @@ replace (
gonum.org/v1/gonum => gonum.org/v1/gonum v0.15.1
gonum.org/v1/hdf5 => gonum.org/v1/hdf5 v0.0.0-20210714002203-8c5d23bc6946
gonum.org/v1/plot => gonum.org/v1/plot v0.14.0
- google.golang.org/api => google.golang.org/api v0.197.0
+ google.golang.org/api => google.golang.org/api v0.199.0
google.golang.org/appengine => google.golang.org/appengine v1.6.8
- google.golang.org/genproto => google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1
- google.golang.org/genproto/googleapis/api => google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1
- google.golang.org/genproto/googleapis/rpc => google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1
- google.golang.org/grpc => google.golang.org/grpc v1.66.2
+ google.golang.org/genproto => google.golang.org/genproto v0.0.0-20240924160255-9d4c2d233b61
+ google.golang.org/genproto/googleapis/api => google.golang.org/genproto/googleapis/api v0.0.0-20240924160255-9d4c2d233b61
+ google.golang.org/genproto/googleapis/rpc => google.golang.org/genproto/googleapis/rpc v0.0.0-20240924160255-9d4c2d233b61
+ google.golang.org/grpc => google.golang.org/grpc v1.67.0
google.golang.org/grpc/cmd/protoc-gen-go-grpc => google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1
google.golang.org/protobuf => google.golang.org/protobuf v1.34.2
gopkg.in/check.v1 => gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
@@ -349,7 +349,7 @@ replace (
)
require (
- buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2
+ buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240920164238-5a7b106cbb87.2
cloud.google.com/go/storage v1.43.0
code.cloudfoundry.org/bytefmt v0.0.0-20190710193110-1eb035ffe2b6
github.com/akrylysov/pogreb v0.0.0-00010101000000-000000000000
@@ -408,7 +408,7 @@ require (
gonum.org/v1/plot v0.14.0
google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1
- google.golang.org/grpc v1.66.1
+ google.golang.org/grpc v1.67.0
google.golang.org/protobuf v1.34.2
gopkg.in/yaml.v2 v2.4.0
k8s.io/api v0.30.3
@@ -416,17 +416,17 @@ require (
k8s.io/cli-runtime v0.0.0-00010101000000-000000000000
k8s.io/client-go v0.30.3
k8s.io/metrics v0.0.0-00010101000000-000000000000
- k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3
+ k8s.io/utils v0.0.0-20240921022957-49e7df575cb6
sigs.k8s.io/controller-runtime v0.0.0-00010101000000-000000000000
sigs.k8s.io/yaml v1.4.0
)
require (
cloud.google.com/go v0.115.1 // indirect
- cloud.google.com/go/auth v0.9.3 // indirect
+ cloud.google.com/go/auth v0.9.5 // indirect
cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
- cloud.google.com/go/compute/metadata v0.5.0 // indirect
- cloud.google.com/go/iam v1.2.0 // indirect
+ cloud.google.com/go/compute/metadata v0.5.2 // indirect
+ cloud.google.com/go/iam v1.2.1 // indirect
filippo.io/edwards25519 v1.1.0 // indirect
git.sr.ht/~sbinet/gg v0.5.0 // indirect
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
@@ -512,9 +512,9 @@ require (
golang.org/x/image v0.20.0 // indirect
golang.org/x/mod v0.21.0 // indirect
golang.org/x/term v0.24.0 // indirect
- golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9 // indirect
+ golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
- google.golang.org/api v0.196.0 // indirect
+ google.golang.org/api v0.197.0 // indirect
google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
diff --git a/go.sum b/go.sum
index 85b80572f0..5d8173de0d 100644
--- a/go.sum
+++ b/go.sum
@@ -1,102 +1,101 @@
-buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2 h1:SZRVx928rbYZ6hEKUIN+vtGDkl7uotABRWGY4OAg5gM=
-buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2/go.mod h1:ylS4c28ACSI59oJrOdW4pHS4n0Hw4TgSPHn8rpHl4Yw=
+buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240920164238-5a7b106cbb87.2 h1:hl0FrmGlNpQZIGvU1/jDz0lsPDd0BhCE0QDRwPfLZcA=
+buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240920164238-5a7b106cbb87.2/go.mod h1:ylS4c28ACSI59oJrOdW4pHS4n0Hw4TgSPHn8rpHl4Yw=
cel.dev/expr v0.15.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg=
cel.dev/expr v0.16.0 h1:yloc84fytn4zmJX2GU3TkXGsaieaV7dQ057Qs4sIG2Y=
cel.dev/expr v0.16.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg=
cloud.google.com/go v0.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ=
cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc=
-cloud.google.com/go/accessapproval v1.8.0/go.mod h1:ycc7qSIXOrH6gGOGQsuBwpRZw3QhZLi0OWeej3rA5Mg=
-cloud.google.com/go/accesscontextmanager v1.8.12/go.mod h1:EmaVYmffq+2jA2waP0/XHECDkaOKVztxVsdzl65t8hw=
-cloud.google.com/go/accesscontextmanager v1.9.0/go.mod h1:EmdQRGq5FHLrjGjGTp2X2tlRBvU3LDCUqfnysFYooxQ=
+cloud.google.com/go/accessapproval v1.8.1/go.mod h1:3HAtm2ertsWdwgjSGObyas6fj3ZC/3zwV2WVZXO53sU=
+cloud.google.com/go/accesscontextmanager v1.9.1/go.mod h1:wUVSoz8HmG7m9miQTh6smbyYuNOJrvZukK5g6WxSOp0=
cloud.google.com/go/aiplatform v1.68.0/go.mod h1:105MFA3svHjC3Oazl7yjXAmIR89LKhRAeNdnDKJczME=
-cloud.google.com/go/analytics v0.25.0/go.mod h1:LZMfjJnKU1GDkvJV16dKnXm7KJJaMZfvUXx58ujgVLg=
-cloud.google.com/go/apigateway v1.7.0/go.mod h1:miZGNhmrC+SFhxjA7ayjKHk1cA+7vsSINp9K+JxKwZI=
-cloud.google.com/go/apigeeconnect v1.7.0/go.mod h1:fd8NFqzu5aXGEUpxiyeCyb4LBLU7B/xIPztfBQi+1zg=
-cloud.google.com/go/apigeeregistry v0.9.0/go.mod h1:4S/btGnijdt9LSIZwBDHgtYfYkFGekzNyWkyYTP8Qzs=
-cloud.google.com/go/appengine v1.9.0/go.mod h1:y5oI+JT3/6s77QmxbTnLHyiMKz3NPHYOjuhmVi+FyYU=
-cloud.google.com/go/area120 v0.9.0/go.mod h1:ujIhRz2gJXutmFYGAUgz3KZ5IRJ6vOwL4CYlNy/jDo4=
-cloud.google.com/go/artifactregistry v1.15.0/go.mod h1:4xrfigx32/3N7Pp7YSPOZZGs4VPhyYeRyJ67ZfVdOX4=
-cloud.google.com/go/asset v1.20.0/go.mod h1:CT3ME6xNZKsPSvi0lMBPgW3azvRhiurJTFSnNl6ahw8=
-cloud.google.com/go/assuredworkloads v1.12.0/go.mod h1:jX84R+0iANggmSbzvVgrGWaqdhRsQihAv4fF7IQ4r7Q=
+cloud.google.com/go/analytics v0.25.1/go.mod h1:hrAWcN/7tqyYwF/f60Nph1yz5UE3/PxOPzzFsJgtU+Y=
+cloud.google.com/go/apigateway v1.7.1/go.mod h1:5JBcLrl7GHSGRzuDaISd5u0RKV05DNFiq4dRdfrhCP0=
+cloud.google.com/go/apigeeconnect v1.7.1/go.mod h1:olkn1lOhIA/aorreenFzfEcEXmFN2pyAwkaUFbug9ZY=
+cloud.google.com/go/apigeeregistry v0.9.1/go.mod h1:XCwK9CS65ehi26z7E8/Vl4PEX5c/JJxpfxlB1QEyrZw=
+cloud.google.com/go/appengine v1.9.1/go.mod h1:jtguveqRWFfjrk3k/7SlJz1FpDBZhu5CWSRu+HBgClk=
+cloud.google.com/go/area120 v0.9.1/go.mod h1:foV1BSrnjVL/KydBnAlUQFSy85kWrMwGSmRfIraC+JU=
+cloud.google.com/go/artifactregistry v1.15.1/go.mod h1:ExJb4VN+IMTQWO5iY+mjcY19Rz9jUxCVGZ1YuyAgPBw=
+cloud.google.com/go/asset v1.20.2/go.mod h1:IM1Kpzzo3wq7R/GEiktitzZyXx2zVpWqs9/5EGYs0GY=
+cloud.google.com/go/assuredworkloads v1.12.1/go.mod h1:nBnkK2GZNSdtjU3ER75oC5fikub5/+QchbolKgnMI/I=
cloud.google.com/go/auth v0.2.1/go.mod h1:khQRBNrvNoHiHhV1iu2x8fSnlNbCaVHilznW5MAI5GY=
cloud.google.com/go/auth v0.3.0/go.mod h1:lBv6NKTWp8E3LPzmO1TbiiRKc4drLOfHsgmlH9ogv5w=
cloud.google.com/go/auth v0.4.2/go.mod h1:Kqvlz1cf1sNA0D+sYJnkPQOP+JMHkuHeIgVmCRtZOLc=
cloud.google.com/go/auth v0.5.1/go.mod h1:vbZT8GjzDf3AVqCcQmqeeM32U9HBFc32vVVAbwDsa6s=
cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g=
cloud.google.com/go/auth v0.6.1/go.mod h1:eFHG7zDzbXHKmjJddFG/rBlcGp6t25SwRUiEQSlO4x4=
-cloud.google.com/go/auth v0.7.0/go.mod h1:D+WqdrpcjmiCgWrXmLLxOVq1GACoE36chW6KXoEvuIw=
cloud.google.com/go/auth v0.7.2/go.mod h1:VEc4p5NNxycWQTMQEDQF0bd6aTMb6VgYDXEwiJJQAbs=
cloud.google.com/go/auth v0.8.0/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc=
cloud.google.com/go/auth v0.9.0/go.mod h1:2HsApZBr9zGZhC9QAXsYVYaWk8kNUt37uny+XVKi7wM=
-cloud.google.com/go/auth v0.9.1/go.mod h1:Sw8ocT5mhhXxFklyhT12Eiy0ed6tTrPMCJjSI8KhYLk=
-cloud.google.com/go/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U=
cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk=
+cloud.google.com/go/auth v0.9.5 h1:4CTn43Eynw40aFVr3GpPqsQponx2jv0BQpjvajsbbzw=
+cloud.google.com/go/auth v0.9.5/go.mod h1:Xo0n7n66eHyOWWCnitop6870Ilwo3PiZyodVkkH1xWM=
cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I=
cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
-cloud.google.com/go/automl v1.14.0/go.mod h1:Kr7rN9ANSjlHyBLGvwhrnt35/vVZy3n/CP4Xmyj0shM=
-cloud.google.com/go/baremetalsolution v1.3.0/go.mod h1:E+n44UaDVO5EeSa4SUsDFxQLt6dD1CoE2h+mtxxaJKo=
-cloud.google.com/go/batch v1.10.0/go.mod h1:JlktZqyKbcUJWdHOV8juvAiQNH8xXHXTqLp6bD9qreE=
-cloud.google.com/go/beyondcorp v1.1.0/go.mod h1:F6Rl20QbayaloWIsMhuz+DICcJxckdFKc7R2HCe6iNA=
-cloud.google.com/go/bigquery v1.62.0/go.mod h1:5ee+ZkF1x/ntgCsFQJAQTM3QkAZOecfCmvxhkJsWRSA=
+cloud.google.com/go/automl v1.14.1/go.mod h1:BocG5mhT32cjmf5CXxVsdSM04VXzJW7chVT7CpSL2kk=
+cloud.google.com/go/baremetalsolution v1.3.1/go.mod h1:D1djGGmBl4M6VlyjOMc1SEzDYlO4EeEG1TCUv5mCPi0=
+cloud.google.com/go/batch v1.11.0/go.mod h1:dS/ceyT1eUmQUPtRGvSaXsb8Aa4M3nCc8LIn0qUYiL4=
+cloud.google.com/go/beyondcorp v1.1.1/go.mod h1:L09o0gLkgXMxCZs4qojrgpI2/dhWtasMc71zPPiHMn4=
+cloud.google.com/go/bigquery v1.63.0/go.mod h1:TQto6OR4kw27bqjNTGkVk1Vo5PJlTgxvDJn6YEIZL/E=
cloud.google.com/go/bigtable v1.18.1/go.mod h1:NAVyfJot9jlo+KmgWLUJ5DJGwNDoChzAcrecLpmuAmY=
cloud.google.com/go/bigtable v1.20.0/go.mod h1:upJDn8frsjzpRMfybiWkD1PG6WCCL7CRl26MgVeoXY4=
-cloud.google.com/go/bigtable v1.31.0/go.mod h1:N/mwZO+4TSHOeyiE1JxO+sRPnW4bnR7WLn9AEaiJqew=
-cloud.google.com/go/billing v1.19.0/go.mod h1:bGvChbZguyaWRGmu5pQHfFN1VxTDPFmabnCVA/dNdRM=
-cloud.google.com/go/binaryauthorization v1.9.0/go.mod h1:fssQuxfI9D6dPPqfvDmObof+ZBKsxA9iSigd8aSA1ik=
-cloud.google.com/go/certificatemanager v1.9.0/go.mod h1:hQBpwtKNjUq+er6Rdg675N7lSsNGqMgt7Bt7Dbcm7d0=
-cloud.google.com/go/channel v1.18.0/go.mod h1:gQr50HxC/FGvufmqXD631ldL1Ee7CNMU5F4pDyJWlt0=
-cloud.google.com/go/cloudbuild v1.17.0/go.mod h1:/RbwgDlbQEwIKoWLIYnW72W3cWs+e83z7nU45xRKnj8=
-cloud.google.com/go/clouddms v1.8.0/go.mod h1:JUgTgqd1M9iPa7p3jodjLTuecdkGTcikrg7nz++XB5E=
-cloud.google.com/go/cloudtasks v1.13.0/go.mod h1:O1jFRGb1Vm3sN2u/tBdPiVGVTWIsrsbEs3K3N3nNlEU=
-cloud.google.com/go/compute v1.28.0/go.mod h1:DEqZBtYrDnD5PvjsKwb3onnhX+qjdCVM7eshj1XdjV4=
+cloud.google.com/go/bigtable v1.33.0/go.mod h1:HtpnH4g25VT1pejHRtInlFPnN5sjTxbQlsYBjh9t5l0=
+cloud.google.com/go/billing v1.19.1/go.mod h1:c5l7ORJjOLH/aASJqUqNsEmwrhfjWZYHX+z0fIhuVpo=
+cloud.google.com/go/binaryauthorization v1.9.1/go.mod h1:jqBzP68bfzjoiMFT6Q1EdZtKJG39zW9ywwzHuv7V8ms=
+cloud.google.com/go/certificatemanager v1.9.1/go.mod h1:a6bXZULtd6iQTRuSVs1fopcHLMJ/T3zSpIB7aJaq/js=
+cloud.google.com/go/channel v1.18.1/go.mod h1:aitAlN/pIlbtjVWsNjbJT5FZRpvwjZtcnYp5ALsb7rA=
+cloud.google.com/go/cloudbuild v1.17.1/go.mod h1:L3Y9HrIRFRg92SyCM3aThSgHnWdNSHm6gDUFRb+iQ9A=
+cloud.google.com/go/clouddms v1.8.1/go.mod h1:bmW2eDFH1LjuwkHcKKeeppcmuBGS0r6Qz6TXanehKP0=
+cloud.google.com/go/cloudtasks v1.13.1/go.mod h1:dyRD7tEEkLMbHLagb7UugkDa77UVJp9d/6O9lm3ModI=
+cloud.google.com/go/compute v1.28.1/go.mod h1:b72iXMY4FucVry3NR3Li4kVyyTvbMDE7x5WsqvxjsYk=
cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM=
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
-cloud.google.com/go/compute/metadata v0.4.0/go.mod h1:SIQh1Kkb4ZJ8zJ874fqVkslA29PRXuleyj6vOzlbK7M=
-cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY=
cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
-cloud.google.com/go/contactcenterinsights v1.14.0/go.mod h1:APmWYHDN4sASnUBnXs4o68t1EUfnqadA53//CzXZ1xE=
-cloud.google.com/go/container v1.39.0/go.mod h1:gNgnvs1cRHXjYxrotVm+0nxDfZkqzBbXCffh5WtqieI=
-cloud.google.com/go/containeranalysis v0.13.0/go.mod h1:OpufGxsNzMOZb6w5yqwUgHr5GHivsAD18KEI06yGkQs=
-cloud.google.com/go/datacatalog v1.20.3/go.mod h1:AKC6vAy5urnMg5eJK3oUjy8oa5zMbiY33h125l8lmlo=
+cloud.google.com/go/compute/metadata v0.5.1/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k=
+cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo=
+cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k=
+cloud.google.com/go/contactcenterinsights v1.14.1/go.mod h1:OxSWVQxosMh18KCQ3D5UZWYxVrOcK9xrJCV5waxD2dY=
+cloud.google.com/go/container v1.40.0/go.mod h1:wNI1mOUivm+ZkpHMbouutgbD4sQxyphMwK31X5cThY4=
+cloud.google.com/go/containeranalysis v0.13.1/go.mod h1:bmd9H880BNR4Hc8JspEg8ge9WccSQfO+/N+CYvU3sEA=
cloud.google.com/go/datacatalog v1.22.0/go.mod h1:4Wff6GphTY6guF5WphrD76jOdfBiflDiRGFAxq7t//I=
-cloud.google.com/go/dataflow v0.10.0/go.mod h1:zAv3YUNe/2pXWKDSPvbf31mCIUuJa+IHtKmhfzaeGww=
-cloud.google.com/go/dataform v0.10.0/go.mod h1:0NKefI6v1ppBEDnwrp6gOMEA3s/RH3ypLUM0+YWqh6A=
-cloud.google.com/go/datafusion v1.8.0/go.mod h1:zHZ5dJYHhMP1P8SZDZm+6yRY9BCCcfm7Xg7YmP+iA6E=
-cloud.google.com/go/datalabeling v0.9.0/go.mod h1:GVX4sW4cY5OPKu/9v6dv20AU9xmGr4DXR6K26qN0mzw=
-cloud.google.com/go/dataplex v1.19.0/go.mod h1:5H9ftGuZWMtoEIUpTdGUtGgje36YGmtRXoC8wx6QSUc=
-cloud.google.com/go/dataproc/v2 v2.6.0/go.mod h1:amsKInI+TU4GcXnz+gmmApYbiYM4Fw051SIMDoWCWeE=
-cloud.google.com/go/dataqna v0.9.0/go.mod h1:WlRhvLLZv7TfpONlb/rEQx5Qrr7b5sxgSuz5NP6amrw=
+cloud.google.com/go/datacatalog v1.22.1/go.mod h1:MscnJl9B2lpYlFoxRjicw19kFTwEke8ReKL5Y/6TWg8=
+cloud.google.com/go/dataflow v0.10.1/go.mod h1:zP4/tNjONFRcS4NcI9R94YDQEkPalimdbPkijVNJt/g=
+cloud.google.com/go/dataform v0.10.1/go.mod h1:c5y0hIOBCfszmBcLJyxnELF30gC1qC/NeHdmkzA7TNQ=
+cloud.google.com/go/datafusion v1.8.1/go.mod h1:I5+nRt6Lob4g1eCbcxP4ayRNx8hyOZ8kA3PB/vGd9Lo=
+cloud.google.com/go/datalabeling v0.9.1/go.mod h1:umplHuZX+x5DItNPV5BFBXau5TDsljLNzEj5AB5uRUM=
+cloud.google.com/go/dataplex v1.19.1/go.mod h1:WzoQ+vcxrAyM0cjJWmluEDVsg7W88IXXCfuy01BslKE=
+cloud.google.com/go/dataproc/v2 v2.8.0/go.mod h1:i4365hSwNP6Bx0SAUnzCC6VloeNxChDjJWH6BfVPcbs=
+cloud.google.com/go/dataqna v0.9.1/go.mod h1:86DNLE33yEfNDp5F2nrITsmTYubMbsF7zQRzC3CcZrY=
cloud.google.com/go/datastore v1.19.0/go.mod h1:KGzkszuj87VT8tJe67GuB+qLolfsOt6bZq/KFuWaahc=
-cloud.google.com/go/datastream v1.11.0/go.mod h1:vio/5TQ0qNtGcIj7sFb0gucFoqZW19gZ7HztYtkzq9g=
-cloud.google.com/go/deploy v1.22.0/go.mod h1:qXJgBcnyetoOe+w/79sCC99c5PpHJsgUXCNhwMjG0e4=
-cloud.google.com/go/dialogflow v1.57.0/go.mod h1:wegtnocuYEfue6IGlX96n5mHu3JGZUaZxv1L5HzJUJY=
-cloud.google.com/go/dlp v1.18.0/go.mod h1:RVO9zkh+xXgUa7+YOf9IFNHL/2FXt9Vnv/GKNYmc1fE=
-cloud.google.com/go/documentai v1.33.0/go.mod h1:lI9Mti9COZ5qVjdpfDZxNjOrTVf6tJ//vaqbtt81214=
-cloud.google.com/go/domains v0.10.0/go.mod h1:VpPXnkCNRsxkieDFDfjBIrLv3p1kRjJ03wLoPeL30To=
-cloud.google.com/go/edgecontainer v1.3.0/go.mod h1:dV1qTl2KAnQOYG+7plYr53KSq/37aga5/xPgOlYXh3A=
+cloud.google.com/go/datastream v1.11.1/go.mod h1:a4j5tnptIxdZ132XboR6uQM/ZHcuv/hLqA6hH3NJWgk=
+cloud.google.com/go/deploy v1.22.1/go.mod h1:OEV1lWIaXrAnOEayZekdR5YwHW03EA6BFNr09D8R+lY=
+cloud.google.com/go/dialogflow v1.57.1/go.mod h1:ARkUX3FWRg1wl0hq/VP/heydctZ6nj/WqiXrrXtjxCE=
+cloud.google.com/go/dlp v1.19.0/go.mod h1:cr8dKBq8un5LALiyGkz4ozcwzt3FyTlOwA4/fFzJ64c=
+cloud.google.com/go/documentai v1.34.0/go.mod h1:onJlbHi4ZjQTsANSZJvW7fi2M8LZJrrupXkWDcy4gLY=
+cloud.google.com/go/domains v0.10.1/go.mod h1:RjDl3K8iq/ZZHMVqfZzRuBUr5t85gqA6LEXQBeBL5F4=
+cloud.google.com/go/edgecontainer v1.3.1/go.mod h1:qyz5+Nk/UAs6kXp6wiux9I2U4A2R624K15QhHYovKKM=
cloud.google.com/go/errorreporting v0.3.1/go.mod h1:6xVQXU1UuntfAf+bVkFk6nld41+CPyF2NSPCyXE3Ztk=
-cloud.google.com/go/essentialcontacts v1.7.0/go.mod h1:0JEcNuyjyg43H/RJynZzv2eo6MkmnvRPUouBpOh6akY=
-cloud.google.com/go/eventarc v1.14.0/go.mod h1:60ZzZfOekvsc/keHc7uGHcoEOMVa+p+ZgRmTjpdamnA=
-cloud.google.com/go/filestore v1.9.0/go.mod h1:GlQK+VBaAGb19HqprnOMqYYpn7Gev5ZA9SSHpxFKD7Q=
+cloud.google.com/go/essentialcontacts v1.7.1/go.mod h1:F/MMWNLRW7b42WwWklOsnx4zrMOWDYWqWykBf1jXKPY=
+cloud.google.com/go/eventarc v1.14.1/go.mod h1:NG0YicE+z9MDcmh2u4tlzLDVLRjq5UHZlibyQlPhcxY=
+cloud.google.com/go/filestore v1.9.1/go.mod h1:g/FNHBABpxjL1M9nNo0nW6vLYIMVlyOKhBKtYGgcKUI=
cloud.google.com/go/firestore v1.17.0/go.mod h1:69uPx1papBsY8ZETooc71fOhoKkD70Q1DwMrtKuOT/Y=
-cloud.google.com/go/functions v1.19.0/go.mod h1:WDreEDZoUVoOkXKDejFWGnprrGYn2cY2KHx73UQERC0=
-cloud.google.com/go/gkebackup v1.6.0/go.mod h1:1rskt7NgawoMDHTdLASX8caXXYG3MvDsoZ7qF4RMamQ=
-cloud.google.com/go/gkeconnect v0.11.0/go.mod h1:l3iPZl1OfT+DUQ+QkmH1PC5RTLqxKQSVnboLiQGAcCA=
-cloud.google.com/go/gkehub v0.15.0/go.mod h1:obpeROly2mjxZJbRkFfHEflcH54XhJI+g2QgfHphL0I=
-cloud.google.com/go/gkemulticloud v1.3.0/go.mod h1:XmcOUQ+hJI62fi/klCjEGs6lhQ56Zjs14sGPXsGP0mE=
+cloud.google.com/go/functions v1.19.1/go.mod h1:18RszySpwRg6aH5UTTVsRfdCwDooSf/5mvSnU7NAk4A=
+cloud.google.com/go/gkebackup v1.6.1/go.mod h1:CEnHQCsNBn+cyxcxci0qbAPYe8CkivNEitG/VAZ08ms=
+cloud.google.com/go/gkeconnect v0.11.1/go.mod h1:Vu3UoOI2c0amGyv4dT/EmltzscPH41pzS4AXPqQLej0=
+cloud.google.com/go/gkehub v0.15.1/go.mod h1:cyUwa9iFQYd/pI7IQYl6A+OF6M8uIbhmJr090v9Z4UU=
+cloud.google.com/go/gkemulticloud v1.4.0/go.mod h1:rg8YOQdRKEtMimsiNCzZUP74bOwImhLRv9wQ0FwBUP4=
cloud.google.com/go/grafeas v0.3.10/go.mod h1:Mz/AoXmxNhj74VW0fz5Idc3kMN2VZMi4UT5+UPx5Pq0=
-cloud.google.com/go/gsuiteaddons v1.7.0/go.mod h1:/B1L8ANPbiSvxCgdSwqH9CqHIJBzTt6v50fPr3vJCtg=
-cloud.google.com/go/iam v1.2.0 h1:kZKMKVNk/IsSSc/udOb83K0hL/Yh/Gcqpz+oAkoIFN8=
-cloud.google.com/go/iam v1.2.0/go.mod h1:zITGuWgsLZxd8OwAlX+eMFgZDXzBm7icj1PVTYG766Q=
-cloud.google.com/go/iap v1.10.0/go.mod h1:gDT6LZnKnWNCaov/iQbj7NMUpknFDOkhhlH8PwIrpzU=
-cloud.google.com/go/ids v1.5.0/go.mod h1:4NOlC1m9hAJL50j2cRV4PS/J6x/f4BBM0Xg54JQLCWw=
-cloud.google.com/go/iot v1.8.0/go.mod h1:/NMFENPnQ2t1UByUC1qFvA80fo1KFB920BlyUPn1m3s=
-cloud.google.com/go/kms v1.19.0/go.mod h1:e4imokuPJUc17Trz2s6lEXFDt8bgDmvpVynH39bdrHM=
-cloud.google.com/go/language v1.14.0/go.mod h1:ldEdlZOFwZREnn/1yWtXdNzfD7hHi9rf87YDkOY9at4=
-cloud.google.com/go/lifesciences v0.10.0/go.mod h1:1zMhgXQ7LbMbA5n4AYguFgbulbounfUoYvkV8dtsLcA=
+cloud.google.com/go/gsuiteaddons v1.7.1/go.mod h1:SxM63xEPFf0p/plgh4dP82mBSKtp2RWskz5DpVo9jh8=
+cloud.google.com/go/iam v1.2.1 h1:QFct02HRb7H12J/3utj0qf5tobFh9V4vR6h9eX5EBRU=
+cloud.google.com/go/iam v1.2.1/go.mod h1:3VUIJDPpwT6p/amXRC5GY8fCCh70lxPygguVtI0Z4/g=
+cloud.google.com/go/iap v1.10.1/go.mod h1:UKetCEzOZ4Zj7l9TSN/wzRNwbgIYzm4VM4bStaQ/tFc=
+cloud.google.com/go/ids v1.5.1/go.mod h1:d/9jTtY506mTxw/nHH3UN4TFo80jhAX+tESwzj42yFo=
+cloud.google.com/go/iot v1.8.1/go.mod h1:FNceQ9/EGvbE2az7RGoGPY0aqrsyJO3/LqAL0h83fZw=
+cloud.google.com/go/kms v1.20.0/go.mod h1:/dMbFF1tLLFnQV44AoI2GlotbjowyUfgVwezxW291fM=
+cloud.google.com/go/language v1.14.1/go.mod h1:WaAL5ZdLLBjiorXl/8vqgb6/Fyt2qijl96c1ZP/vdc8=
+cloud.google.com/go/lifesciences v0.10.1/go.mod h1:5D6va5/Gq3gtJPKSsE6vXayAigfOXK2eWLTdFUOTCDs=
cloud.google.com/go/logging v1.11.0/go.mod h1:5LDiJC/RxTt+fHc1LAt20R9TKiUTReDg6RuuFOZ67+A=
cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE=
cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo=
@@ -107,64 +106,64 @@ cloud.google.com/go/longrunning v0.5.7/go.mod h1:8GClkudohy1Fxm3owmBGid8W0pSgodE
cloud.google.com/go/longrunning v0.5.9/go.mod h1:HD+0l9/OOW0za6UWdKJtXoFAX/BGg/3Wj8p10NeWF7c=
cloud.google.com/go/longrunning v0.5.11/go.mod h1:rDn7//lmlfWV1Dx6IB4RatCPenTwwmqXuiP0/RgoEO4=
cloud.google.com/go/longrunning v0.5.12/go.mod h1:S5hMV8CDJ6r50t2ubVJSKQVv5u0rmik5//KgLO3k4lU=
-cloud.google.com/go/longrunning v0.6.0 h1:mM1ZmaNsQsnb+5n1DNPeL0KwQd9jQRqSqSDEkBZr+aI=
cloud.google.com/go/longrunning v0.6.0/go.mod h1:uHzSZqW89h7/pasCWNYdUpwGz3PcVWhrWupreVPYLts=
-cloud.google.com/go/managedidentities v1.7.0/go.mod h1:o4LqQkQvJ9Pt7Q8CyZV39HrzCfzyX8zBzm8KIhRw91E=
-cloud.google.com/go/maps v1.12.0/go.mod h1:qjErDNStn3BaGx06vHner5d75MRMgGflbgCuWTuslMc=
-cloud.google.com/go/mediatranslation v0.9.0/go.mod h1:udnxo0i4YJ5mZfkwvvQQrQ6ra47vcX8jeGV+6I5x+iU=
-cloud.google.com/go/memcache v1.11.0/go.mod h1:99MVF02m5TByT1NKxsoKDnw5kYmMrjbGSeikdyfCYZk=
-cloud.google.com/go/metastore v1.14.0/go.mod h1:vtPt5oVF/+ocXO4rv4GUzC8Si5s8gfmo5OIt6bACDuE=
-cloud.google.com/go/monitoring v1.21.0/go.mod h1:tuJ+KNDdJbetSsbSGTqnaBvbauS5kr3Q/koy3Up6r+4=
-cloud.google.com/go/networkconnectivity v1.15.0/go.mod h1:uBQqx/YHI6gzqfV5J/7fkKwTGlXvQhHevUuzMpos9WY=
-cloud.google.com/go/networkmanagement v1.14.0/go.mod h1:4myfd4A0uULCOCGHL1npZN0U+kr1Z2ENlbHdCCX4cE8=
-cloud.google.com/go/networksecurity v0.10.0/go.mod h1:IcpI5pyzlZyYG8cNRCJmY1AYKajsd9Uz575HoeyYoII=
-cloud.google.com/go/notebooks v1.12.0/go.mod h1:euIZBbGY6G0J+UHzQ0XflysP0YoAUnDPZU7Fq0KXNw8=
-cloud.google.com/go/optimization v1.7.0/go.mod h1:6KvAB1HtlsMMblT/lsQRIlLjUhKjmMWNqV1AJUctbWs=
-cloud.google.com/go/orchestration v1.10.0/go.mod h1:pGiFgTTU6c/nXHTPpfsGT8N4Dax8awccCe6kjhVdWjI=
-cloud.google.com/go/orgpolicy v1.12.8/go.mod h1:WHkLGqHILPnMgJ4UTdag6YgztVIgWS+T5T6tywH3cSM=
-cloud.google.com/go/orgpolicy v1.13.0/go.mod h1:oKtT56zEFSsYORUunkN2mWVQBc9WGP7yBAPOZW1XCXc=
-cloud.google.com/go/osconfig v1.13.3/go.mod h1:gIFyyriC1ANob8SnpwrQ6jjNroRwItoBOYfqiG3LkUU=
-cloud.google.com/go/osconfig v1.14.0/go.mod h1:GhZzWYVrnQ42r+K5pA/hJCsnWVW2lB6bmVg+GnZ6JkM=
-cloud.google.com/go/oslogin v1.14.0/go.mod h1:VtMzdQPRP3T+w5OSFiYhaT/xOm7H1wo1HZUD2NAoVK4=
-cloud.google.com/go/phishingprotection v0.9.0/go.mod h1:CzttceTk9UskH9a8BycYmHL64zakEt3EXaM53r4i0Iw=
-cloud.google.com/go/policytroubleshooter v1.11.0/go.mod h1:yTqY8n60lPLdU5bRbImn9IazrmF1o5b0VBshVxPzblQ=
-cloud.google.com/go/privatecatalog v0.10.0/go.mod h1:/Lci3oPTxJpixjiTBoiVv3PmUZg/IdhPvKHcLEgObuc=
+cloud.google.com/go/longrunning v0.6.1 h1:lOLTFxYpr8hcRtcwWir5ITh1PAKUD/sG2lKrTSYjyMc=
+cloud.google.com/go/longrunning v0.6.1/go.mod h1:nHISoOZpBcmlwbJmiVk5oDRz0qG/ZxPynEGs1iZ79s0=
+cloud.google.com/go/managedidentities v1.7.1/go.mod h1:iK4qqIBOOfePt5cJR/Uo3+uol6oAVIbbG7MGy917cYM=
+cloud.google.com/go/maps v1.13.0/go.mod h1:UepOes9un0UP7i8JBiaqgh8jqUaZAHVRXCYjrVlhSC8=
+cloud.google.com/go/mediatranslation v0.9.1/go.mod h1:vQH1amULNhSGryBjbjLb37g54rxrOwVxywS8WvUCsIU=
+cloud.google.com/go/memcache v1.11.1/go.mod h1:3zF+dEqmEmElHuO4NtHiShekQY5okQtssjPBv7jpmZ8=
+cloud.google.com/go/metastore v1.14.1/go.mod h1:WDvsAcbQLl9M4xL+eIpbKogH7aEaPWMhO9aRBcFOnJE=
+cloud.google.com/go/monitoring v1.21.1/go.mod h1:Rj++LKrlht9uBi8+Eb530dIrzG/cU/lB8mt+lbeFK1c=
+cloud.google.com/go/networkconnectivity v1.15.1/go.mod h1:tYAcT4Ahvq+BiePXL/slYipf/8FF0oNJw3MqFhBnSPI=
+cloud.google.com/go/networkmanagement v1.14.1/go.mod h1:3Ds8FZ3ZHjTVEedsBoZi9ef9haTE14iS6swTSqM39SI=
+cloud.google.com/go/networksecurity v0.10.1/go.mod h1:tatO1hYJ9nNChLHOFdsjex5FeqZBlPQgKdKOex7REpU=
+cloud.google.com/go/notebooks v1.12.1/go.mod h1:RJCyRkLjj8UnvLEKaDl9S6//xUCa+r+d/AsxZnYBl50=
+cloud.google.com/go/optimization v1.7.1/go.mod h1:s2AjwwQEv6uExFmgS4Bf1gidI07w7jCzvvs8exqR1yk=
+cloud.google.com/go/orchestration v1.11.0/go.mod h1:s3L89jinQaUHclqgWYw8JhBbzGSidVt5rVBxGrXeheI=
+cloud.google.com/go/orgpolicy v1.13.1/go.mod h1:32yy2Xw5tghXrhDuCIJKAoFGrTPSSRKQjH7kGHU34Rk=
+cloud.google.com/go/orgpolicy v1.14.0/go.mod h1:S6Pveh1JOxpSbs6+2ToJG7h3HwqC6Uf1YQ6JYG7wdM8=
+cloud.google.com/go/osconfig v1.14.1/go.mod h1:Rk62nyQscgy8x4bICaTn0iWiip5EpwEfG2UCBa2TP/s=
+cloud.google.com/go/oslogin v1.14.1/go.mod h1:mM/isJYnohyD3EfM12Fhy8uye46gxA1WjHRCwbkmlVw=
+cloud.google.com/go/phishingprotection v0.9.1/go.mod h1:LRiflQnCpYKCMhsmhNB3hDbW+AzQIojXYr6q5+5eRQk=
+cloud.google.com/go/policytroubleshooter v1.11.1/go.mod h1:9nJIpgQ2vloJbB8y1JkPL5vxtaSdJnJYPCUvt6PpfRs=
+cloud.google.com/go/privatecatalog v0.10.1/go.mod h1:mFmn5bjE9J8MEjQuu1fOc4AxOP2MoEwDLMJk04xqQCQ=
cloud.google.com/go/pubsub v1.43.0/go.mod h1:LNLfqItblovg7mHWgU5g84Vhza4J8kTxx0YqIeTzcXY=
cloud.google.com/go/pubsublite v1.8.2/go.mod h1:4r8GSa9NznExjuLPEJlF1VjOPOpgf3IT6k8x/YgaOPI=
-cloud.google.com/go/recaptchaenterprise/v2 v2.17.0/go.mod h1:SS4QDdlmJ3NvbOMCXQxaFhVGRjvNMfoKCoCdxqXadqs=
-cloud.google.com/go/recommendationengine v0.9.0/go.mod h1:59ydKXFyXO4Y8S0Bk224sKfj6YvIyzgcpG6w8kXIMm4=
-cloud.google.com/go/recommender v1.13.0/go.mod h1:+XkXkeB9k6zG222ZH70U6DBkmvEL0na+pSjZRmlWcrk=
-cloud.google.com/go/redis v1.17.0/go.mod h1:pzTdaIhriMLiXu8nn2CgiS52SYko0tO1Du4d3MPOG5I=
-cloud.google.com/go/resourcemanager v1.10.0/go.mod h1:kIx3TWDCjLnUQUdjQ/e8EXsS9GJEzvcY+YMOHpADxrk=
-cloud.google.com/go/resourcesettings v1.8.0/go.mod h1:/hleuSOq8E6mF1sRYZrSzib8BxFHprQXrPluWTuZ6Ys=
-cloud.google.com/go/retail v1.18.0/go.mod h1:vaCabihbSrq88mKGKcKc4/FDHvVcPP0sQDAt0INM+v8=
-cloud.google.com/go/run v1.5.0/go.mod h1:Z4Tv/XNC/veO6rEpF0waVhR7vEu5RN1uJQ8dD1PeMtI=
-cloud.google.com/go/scheduler v1.11.0/go.mod h1:RBSu5/rIsF5mDbQUiruvIE6FnfKpLd3HlTDu8aWk0jw=
-cloud.google.com/go/secretmanager v1.14.0/go.mod h1:q0hSFHzoW7eRgyYFH8trqEFavgrMeiJI4FETNN78vhM=
-cloud.google.com/go/security v1.18.0/go.mod h1:oS/kRVUNmkwEqzCgSmK2EaGd8SbDUvliEiADjSb/8Mo=
-cloud.google.com/go/securitycenter v1.35.0/go.mod h1:gotw8mBfCxX0CGrRK917CP/l+Z+QoDchJ9HDpSR8eDc=
-cloud.google.com/go/servicedirectory v1.12.0/go.mod h1:lKKBoVStJa+8S+iH7h/YRBMUkkqFjfPirkOTEyYAIUk=
-cloud.google.com/go/shell v1.8.0/go.mod h1:EoQR8uXuEWHUAMoB4+ijXqRVYatDCdKYOLAaay1R/yw=
+cloud.google.com/go/recaptchaenterprise/v2 v2.17.1/go.mod h1:dKfNfS/d5pWQU2FpGrxaRQX+4RIrq+il36B9dy66aYU=
+cloud.google.com/go/recommendationengine v0.9.1/go.mod h1:FfWa3OnsnDab4unvTZM2VJmvoeGn1tnntF3n+vmfyzU=
+cloud.google.com/go/recommender v1.13.1/go.mod h1:l+n8rNMC6jZacckzLvVG/2LzKawlwAJYNO8Vl2pBlxc=
+cloud.google.com/go/redis v1.17.1/go.mod h1:YJHeYfSoW/agIMeCvM5rszxu75mVh5DOhbu3AEZEIQM=
+cloud.google.com/go/resourcemanager v1.10.1/go.mod h1:A/ANV/Sv7y7fcjd4LSH7PJGTZcWRkO/69yN5UhYUmvE=
+cloud.google.com/go/resourcesettings v1.8.1/go.mod h1:6V87tIXUpvJMskim6YUa+TRDTm7v6OH8FxLOIRYosl4=
+cloud.google.com/go/retail v1.18.1/go.mod h1:4k4yXtfke5xCbitX6DAJdQssabxQ6/UcKL8yCY7+srU=
+cloud.google.com/go/run v1.5.1/go.mod h1:Irf/wH+dTXJvumcKfio07C+URTdKSNqnXz2Ivm5PWek=
+cloud.google.com/go/scheduler v1.11.1/go.mod h1:ptS76q0oOS8hCHOH4Fb/y8YunPEN8emaDdtw0D7W1VE=
+cloud.google.com/go/secretmanager v1.14.1/go.mod h1:L+gO+u2JA9CCyXpSR8gDH0o8EV7i/f0jdBOrUXcIV0U=
+cloud.google.com/go/security v1.18.1/go.mod h1:5P1q9rqwt0HuVeL9p61pTqQ6Lgio1c64jL2ZMWZV21Y=
+cloud.google.com/go/securitycenter v1.35.1/go.mod h1:UDeknPuHWi15TaxrJCIv3aN1VDTz9nqWVUmW2vGayTo=
+cloud.google.com/go/servicedirectory v1.12.1/go.mod h1:d2H6joDMjnTQ4cUUCZn6k9NgZFbXjLVJbHETjoJR9k0=
+cloud.google.com/go/shell v1.8.1/go.mod h1:jaU7OHeldDhTwgs3+clM0KYEDYnBAPevUI6wNLf7ycE=
cloud.google.com/go/spanner v1.67.0/go.mod h1:Um+TNmxfcCHqNCKid4rmAMvoe/Iu1vdz6UfxJ9GPxRQ=
-cloud.google.com/go/speech v1.25.0/go.mod h1:2IUTYClcJhqPgee5Ko+qJqq29/bglVizgIap0c5MvYs=
+cloud.google.com/go/speech v1.25.1/go.mod h1:WgQghvghkZ1htG6BhYn98mP7Tg0mti8dBFDLMVXH/vM=
cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs=
cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0=
-cloud.google.com/go/storagetransfer v1.11.0/go.mod h1:arcvgzVC4HPcSikqV8D4h4PwrvGQHfKtbL4OwKPirjs=
-cloud.google.com/go/talent v1.7.0/go.mod h1:8zfRPWWV4GNZuUmBwQub0gWAe2KaKhsthyGtV8fV1bY=
-cloud.google.com/go/texttospeech v1.8.0/go.mod h1:hAgeA01K5QNfLy2sPUAVETE0L4WdEpaCMfwKH1qjCQU=
-cloud.google.com/go/tpu v1.7.0/go.mod h1:/J6Co458YHMD60nM3cCjA0msvFU/miCGMfx/nYyxv/o=
-cloud.google.com/go/trace v1.11.0/go.mod h1:Aiemdi52635dBR7o3zuc9lLjXo3BwGaChEjCa3tJNmM=
+cloud.google.com/go/storagetransfer v1.11.1/go.mod h1:xnJo9pWysRIha8MgZxhrBEwLYbEdvdmEedhNsP5NINM=
+cloud.google.com/go/talent v1.7.1/go.mod h1:X8UKtTgcP+h51MtDO/b+y3X1GxTTc7gPJ2y0aX3X1hM=
+cloud.google.com/go/texttospeech v1.8.1/go.mod h1:WoTykB+4mfSDDYPuk7smrdXNRGoJJS6dXRR6l4XqD9g=
+cloud.google.com/go/tpu v1.7.1/go.mod h1:kgvyq1Z1yuBJSk5ihUaYxX58YMioCYg1UPuIHSxBX3M=
+cloud.google.com/go/trace v1.11.1/go.mod h1:IQKNQuBzH72EGaXEodKlNJrWykGZxet2zgjtS60OtjA=
cloud.google.com/go/translate v1.10.3/go.mod h1:GW0vC1qvPtd3pgtypCv4k4U8B7EdgK9/QEF2aJEUovs=
-cloud.google.com/go/translate v1.12.0/go.mod h1:4/C4shFIY5hSZ3b3g+xXWM5xhBLqcUqksSMrQ7tyFtc=
-cloud.google.com/go/video v1.23.0/go.mod h1:EGLQv3Ce/VNqcl/+Amq7jlrnpg+KMgQcr6YOOBfE9oc=
-cloud.google.com/go/videointelligence v1.12.0/go.mod h1:3rjmafNpCEqAb1CElGTA7dsg8dFDsx7RQNHS7o088D0=
-cloud.google.com/go/vision/v2 v2.9.0/go.mod h1:sejxShqNOEucObbGNV5Gk85hPCgiVPP4sWv0GrgKuNw=
-cloud.google.com/go/vmmigration v1.8.0/go.mod h1:+AQnGUabjpYKnkfdXJZ5nteUfzNDCmwbj/HSLGPFG5E=
-cloud.google.com/go/vmwareengine v1.3.0/go.mod h1:7W/C/YFpelGyZzRUfOYkbgUfbN1CK5ME3++doIkh1Vk=
-cloud.google.com/go/vpcaccess v1.8.0/go.mod h1:7fz79sxE9DbGm9dbbIdir3tsJhwCxiNAs8aFG8MEhR8=
-cloud.google.com/go/webrisk v1.10.0/go.mod h1:ztRr0MCLtksoeSOQCEERZXdzwJGoH+RGYQ2qodGOy2U=
-cloud.google.com/go/websecurityscanner v1.7.0/go.mod h1:d5OGdHnbky9MAZ8SGzdWIm3/c9p0r7t+5BerY5JYdZc=
-cloud.google.com/go/workflows v1.13.0/go.mod h1:StCuY3jhBj1HYMjCPqZs7J0deQLHPhF6hDtzWJaVF+Y=
+cloud.google.com/go/translate v1.12.1/go.mod h1:5f4RvC7/hh76qSl6LYuqOJaKbIzEpR1Sj+CMA6gSgIk=
+cloud.google.com/go/video v1.23.1/go.mod h1:ncFS3D2plMLhXkWkob/bH4bxQkubrpAlln5x7RWluXA=
+cloud.google.com/go/videointelligence v1.12.1/go.mod h1:C9bQom4KOeBl7IFPj+NiOS6WKEm1P6OOkF/ahFfE1Eg=
+cloud.google.com/go/vision/v2 v2.9.1/go.mod h1:keORalKMowhEZB5hEWi1XSVnGALMjLlRwZbDiCPFuQY=
+cloud.google.com/go/vmmigration v1.8.1/go.mod h1:MB7vpxl6Oz2w+CecyITUTDFkhWSMQmRTgREwkBZFyZk=
+cloud.google.com/go/vmwareengine v1.3.1/go.mod h1:mSYu3wnGKJqvvhIhs7VA47/A/kLoMiJz3gfQAh7cfaI=
+cloud.google.com/go/vpcaccess v1.8.1/go.mod h1:cWlLCpLOuMH8oaNmobaymgmLesasLd9w1isrKpiGwIc=
+cloud.google.com/go/webrisk v1.10.1/go.mod h1:VzmUIag5P6V71nVAuzc7Hu0VkIDKjDa543K7HOulH/k=
+cloud.google.com/go/websecurityscanner v1.7.1/go.mod h1:vAZ6hyqECDhgF+gyVRGzfXMrURQN5NH75Y9yW/7sSHU=
+cloud.google.com/go/workflows v1.13.1/go.mod h1:xNdYtD6Sjoug+khNCAtBMK/rdh8qkjyL6aBas2XlkNc=
code.cloudfoundry.org/bytefmt v0.10.0 h1:q/n3VEyTHSYIr+MTRIYxNMRutBilgv0gbFWZbXqWI60=
code.cloudfoundry.org/bytefmt v0.10.0/go.mod h1:FQhPpsF//guTvK6ZnAC2JkVRZjl6s5ee0H90K2r3zxI=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
@@ -197,8 +196,8 @@ github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ
github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.0/go.mod h1:dppbR7CwXD4pgtV9t3wD1812RaLDcBjtblcDF5f1vI0=
github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk=
github.com/Kodeworks/golang-image-ico v0.0.0-20141118225523-73f0f4cfade9/go.mod h1:7uhhqiBaR4CpN0k9rMjOtjpcfGd6DG2m04zQxKnWQ0I=
-github.com/ajstarks/deck v0.0.0-20240828115917-88fc45aa28b1/go.mod h1:5o5HzZ3nUiOivE0SPQepE7oNquDd+9yip0PtlFpq888=
-github.com/ajstarks/deck/generate v0.0.0-20240828115917-88fc45aa28b1/go.mod h1:al/X+Mdfx3esXeGnnIVn5aYB6SfwTu+9T0u4EXmKJuk=
+github.com/ajstarks/deck v0.0.0-20240918141114-8d365813662d/go.mod h1:5o5HzZ3nUiOivE0SPQepE7oNquDd+9yip0PtlFpq888=
+github.com/ajstarks/deck/generate v0.0.0-20240918141114-8d365813662d/go.mod h1:al/X+Mdfx3esXeGnnIVn5aYB6SfwTu+9T0u4EXmKJuk=
github.com/ajstarks/fc v0.0.0-20230606144319-ef5d5cb73a3d/go.mod h1:Qp3TfzbBiIjHwDxIpu+g9nYfNw+xXF2Yqp4WmMlTtwM=
github.com/ajstarks/openvg v0.0.0-20191008131700-c6885d824eb8/go.mod h1:jpZHIkd4sQEgrzshrUQrRfv5OUMMq0w/Q1yK6ZYhUlk=
github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b h1:slYM766cy2nI3BwyRiyQj/Ud48djTMtMebDqepE95rw=
@@ -221,44 +220,44 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/aws/aws-sdk-go v1.55.5 h1:KKUZBfBoyqy5d3swXyiC7Q76ic40rYcbqH7qjh59kzU=
github.com/aws/aws-sdk-go v1.55.5/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
-github.com/aws/aws-sdk-go-v2 v1.30.5 h1:mWSRTwQAb0aLE17dSzztCVJWI9+cRMgqebndjwDyK0g=
-github.com/aws/aws-sdk-go-v2 v1.30.5/go.mod h1:CT+ZPWXbYrci8chcARI3OmI/qgd+f6WtuLOoaIA8PR0=
-github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.4 h1:70PVAiL15/aBMh5LThwgXdSQorVr91L127ttckI9QQU=
-github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.4/go.mod h1:/MQxMqci8tlqDH+pjmoLu1i0tbWCUP1hhyMRuFxpQCw=
-github.com/aws/aws-sdk-go-v2/config v1.27.33 h1:Nof9o/MsmH4oa0s2q9a0k7tMz5x/Yj5k06lDODWz3BU=
-github.com/aws/aws-sdk-go-v2/config v1.27.33/go.mod h1:kEqdYzRb8dd8Sy2pOdEbExTTF5v7ozEXX0McgPE7xks=
-github.com/aws/aws-sdk-go-v2/credentials v1.17.32 h1:7Cxhp/BnT2RcGy4VisJ9miUPecY+lyE9I8JvcZofn9I=
-github.com/aws/aws-sdk-go-v2/credentials v1.17.32/go.mod h1:P5/QMF3/DCHbXGEGkdbilXHsyTBX5D3HSwcrSc9p20I=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13 h1:pfQ2sqNpMVK6xz2RbqLEL0GH87JOwSxPV2rzm8Zsb74=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.13/go.mod h1:NG7RXPUlqfsCLLFfi0+IpKN4sCB9D9fw/qTaSB+xRoU=
-github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.18 h1:9DIp7vhmOPmueCDwpXa45bEbLHHTt1kcxChdTJWWxvI=
-github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.18/go.mod h1:aJv/Fwz8r56ozwYFRC4bzoeL1L17GYQYemfblOBux1M=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17 h1:pI7Bzt0BJtYA0N/JEC6B8fJ4RBrEMi1LBrkMdFYNSnQ=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.17/go.mod h1:Dh5zzJYMtxfIjYW+/evjQ8uj2OyR/ve2KROHGHlSFqE=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17 h1:Mqr/V5gvrhA2gvgnF42Zh5iMiQNcOYthFYwCyrnuWlc=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.17/go.mod h1:aLJpZlCmjE+V+KtN1q1uyZkfnUWpQGpbsn89XPKyzfU=
+github.com/aws/aws-sdk-go-v2 v1.31.0 h1:3V05LbxTSItI5kUqNwhJrrrY1BAXxXt0sN0l72QmG5U=
+github.com/aws/aws-sdk-go-v2 v1.31.0/go.mod h1:ztolYtaEUtdpf9Wftr31CJfLVjOnD/CVRkKOOYgF8hA=
+github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.5 h1:xDAuZTn4IMm8o1LnBZvmrL8JA1io4o3YWNXgohbf20g=
+github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.5/go.mod h1:wYSv6iDS621sEFLfKvpPE2ugjTuGlAG7iROg0hLOkfc=
+github.com/aws/aws-sdk-go-v2/config v1.27.38 h1:mMVyJJuSUdbD4zKXoxDgWrgM60QwlFEg+JhihCq6wCw=
+github.com/aws/aws-sdk-go-v2/config v1.27.38/go.mod h1:6xOiNEn58bj/64MPKx89r6G/el9JZn8pvVbquSqTKK4=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.36 h1:zwI5WrT+oWWfzSKoTNmSyeBKQhsFRJRv+PGW/UZW+Yk=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.36/go.mod h1:3AG/sY1rc9NJrNWcN/3KPU4SIDPGTrd/qegKB0TnFdE=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 h1:C/d03NAmh8C4BZXhuRNboF/DqhBkBCeDiJDcaqIT5pA=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14/go.mod h1:7I0Ju7p9mCIdlrfS+JCgqcYD0VXz/N4yozsox+0o078=
+github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.24 h1:WEiv2o2tjSx9tv5jP7rCR1P8FE8c6DxkFpvHGy6SYZg=
+github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.24/go.mod h1:mhxj3DJiOXogLRZ/wlGmI9VHiCW2kzHjHTJLxexOtEk=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18 h1:kYQ3H1u0ANr9KEKlGs/jTLrBFPo8P8NaH/w7A01NeeM=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.18/go.mod h1:r506HmK5JDUh9+Mw4CfGJGSSoqIiLCndAuqXuhbv67Y=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18 h1:Z7IdFUONvTcvS7YuhtVxN99v2cCoHRXOS4mTr0B/pUc=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.18/go.mod h1:DkKMmksZVVyat+Y+r1dEOgJEfUeA7UngIHWeKsi0yNc=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.15 h1:Z5r7SycxmSllHYmaAZPpmN8GviDrSGhMS6bldqtXZPw=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.15/go.mod h1:CetW7bDE00QoGEmPUoZuRog07SGVAUVW6LFpNP0YfIg=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4 h1:KypMCbLPPHEmf9DgMGw51jMj77VfGPAN2Kv4cfhlfgI=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.4/go.mod h1:Vz1JQXliGcQktFTN/LN6uGppAIRoLBR2bMvIMP0gOjc=
-github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.19 h1:FLMkfEiRjhgeDTCjjLoc3URo/TBkgeQbocA78lfkzSI=
-github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.19/go.mod h1:Vx+GucNSsdhaxs3aZIKfSUjKVGsxN25nX2SRcdhuw08=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19 h1:rfprUlsdzgl7ZL2KlXiUAoJnI/VxfHCvDFr2QDFj6u4=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.19/go.mod h1:SCWkEdRq8/7EK60NcvvQ6NXKuTcchAD4ROAsC37VEZE=
-github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.17 h1:u+EfGmksnJc/x5tq3A+OD7LrMbSSR/5TrKLvkdy/fhY=
-github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.17/go.mod h1:VaMx6302JHax2vHJWgRo+5n9zvbacs3bLU/23DNQrTY=
-github.com/aws/aws-sdk-go-v2/service/s3 v1.61.2 h1:Kp6PWAlXwP1UvIflkIP6MFZYBNDCa4mFCGtxrpICVOg=
-github.com/aws/aws-sdk-go-v2/service/s3 v1.61.2/go.mod h1:5FmD/Dqq57gP+XwaUnd5WFPipAuzrf0HmupX27Gvjvc=
-github.com/aws/aws-sdk-go-v2/service/sso v1.22.7 h1:pIaGg+08llrP7Q5aiz9ICWbY8cqhTkyy+0SHvfzQpTc=
-github.com/aws/aws-sdk-go-v2/service/sso v1.22.7/go.mod h1:eEygMHnTKH/3kNp9Jr1n3PdejuSNcgwLe1dWgQtO0VQ=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 h1:QFASJGfT8wMXtuP3D5CRmMjARHv9ZmzFUMJznHDOY3w=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5/go.mod h1:QdZ3OmoIjSX+8D1OPAzPxDfjXASbBMDsz9qvtyIhtik=
+github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.20 h1:rTWjG6AvWekO2B1LHeM3ktU7MqyX9rzWQ7hgzneZW7E=
+github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.20/go.mod h1:RGW2DDpVc8hu6Y6yG8G5CHVmVOAn1oV8rNKOHRJyswg=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 h1:Xbwbmk44URTiHNx6PNo0ujDE6ERlsCKJD3u1zfnzAPg=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20/go.mod h1:oAfOFzUB14ltPZj1rWwRc3d/6OgD76R8KlvU3EqM9Fg=
+github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.18 h1:eb+tFOIl9ZsUe2259/BKPeniKuz4/02zZFH/i4Nf8Rg=
+github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.18/go.mod h1:GVCC2IJNJTmdlyEsSmofEy7EfJncP7DNnXDzRjJ5Keg=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.63.2 h1:1iXmXy8SJzQVMGvo40TSzBYS9ig6BSyXfRIMzLfmBfE=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.63.2/go.mod h1:NLTqRLe3pUNu3nTEHI6XlHLKYmc8fbHUdMxAB6+s41Q=
+github.com/aws/aws-sdk-go-v2/service/sso v1.23.2 h1:yzi/y/vKlLyzOfG7pSu5ONNGRxHIgLeDrV4w2AMRCo0=
+github.com/aws/aws-sdk-go-v2/service/sso v1.23.2/go.mod h1:XRlMvmad0ZNL+75C5FYdMvbbLkd6qiqz6foR1nA1PXY=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw=
-github.com/aws/aws-sdk-go-v2/service/sts v1.30.7 h1:NKTa1eqZYw8tiHSRGpP0VtTdub/8KNk8sDkNPFaOKDE=
-github.com/aws/aws-sdk-go-v2/service/sts v1.30.7/go.mod h1:NXi1dIAGteSaRLqYgarlhP/Ij0cFT+qmCwiJqWh/U5o=
-github.com/aws/smithy-go v1.20.4 h1:2HK1zBdPgRbjFOHlfeQZfpC4r72MOb9bZkiFwggKO+4=
-github.com/aws/smithy-go v1.20.4/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
+github.com/aws/aws-sdk-go-v2/service/sts v1.31.2 h1:O6tyji8mXmBGsHvTCB0VIhrDw19lGTUSbKIyjnw79s8=
+github.com/aws/aws-sdk-go-v2/service/sts v1.31.2/go.mod h1:yMWe0F+XG0DkRZK5ODZhG7BEFYhLXi2dqGsv6tX0cgI=
+github.com/aws/smithy-go v1.21.0 h1:H7L8dtDRk0P1Qm6y0ji7MCYMQObJ5R9CRpyPhRUkLYA=
+github.com/aws/smithy-go v1.21.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o=
github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
@@ -280,7 +279,7 @@ github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38
github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 h1:QVw89YDxXxEe+l8gU8ETbOasdwEV+avkR75ZzsVV9WI=
github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8=
-github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/creack/pty v1.1.23 h1:4M6+isWdcStXEf15G/RbrMPOQj1dZ7HPZCGwE4kOeP0=
github.com/creack/pty v1.1.23/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -417,8 +416,8 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
-github.com/google/pprof v0.0.0-20240910150728-a0b0bb1d4134 h1:c5FlPPgxOn7kJz3VoPLkQYQXGBS3EklQ4Zfi57uOuqQ=
-github.com/google/pprof v0.0.0-20240910150728-a0b0bb1d4134/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
+github.com/google/pprof v0.0.0-20240925223930-fa3061bff0bc h1:7bf8bGo4akhLJrmttkYLjxIz0yQmBi5umb+Nj1qRPpE=
+github.com/google/pprof v0.0.0-20240925223930-fa3061bff0bc/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A=
github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A=
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
@@ -464,7 +463,7 @@ github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKe
github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
-github.com/ianlancetaylor/demangle v0.0.0-20240805132620-81f5be970eca/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw=
+github.com/ianlancetaylor/demangle v0.0.0-20240912202439-0a2b6291aafd/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw=
github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=
github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
@@ -493,16 +492,16 @@ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:C
github.com/kisielk/errcheck v1.7.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE=
-github.com/klauspost/compress v1.17.10-0.20240911134657-51aa0ecb46a9 h1:LCVgxJhF5Dlzgea9oMdWiqNlRQV0srnLp6sKm1aj6sU=
-github.com/klauspost/compress v1.17.10-0.20240911134657-51aa0ecb46a9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.17.11-0.20240923131516-13a1ce6df1e0 h1:YNGbURX+AQoK0BmPSNoJrHLjfNQw8NvNOqLshq3hcpo=
+github.com/klauspost/compress v1.17.11-0.20240923131516-13a1ce6df1e0/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
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/kpango/fastime v1.1.9 h1:xVQHcqyPt5M69DyFH7g1EPRns1YQNap9d5eLhl/Jy84=
github.com/kpango/fastime v1.1.9/go.mod h1:vyD7FnUn08zxY4b/QFBZVG+9EWMYsNl+QF0uE46urD4=
github.com/kpango/fuid v0.0.0-20221203053508-503b5ad89aa1 h1:rxyM+7uaZQ35P9fbixdnld/h4AgEhODoubuy6A4nDdk=
github.com/kpango/fuid v0.0.0-20221203053508-503b5ad89aa1/go.mod h1:CAYeq6us9NfnRkSz67/xKVIR6/vaY5ZQZRe6IVcaIKg=
-github.com/kpango/gache/v2 v2.0.10 h1:GgbG57FFYljnPOcWIgquP4+Fsp9kccTZ/5tsu+zHMyU=
-github.com/kpango/gache/v2 v2.0.10/go.mod h1:0YTbg//JH4Zylm/8LNHRaSbiXphcFStdVhiftgVpPds=
+github.com/kpango/gache/v2 v2.0.11 h1:uyIXOyx47YhE/0cvP2vf/T+ZCauUD8kSKcsl0IhsAjk=
+github.com/kpango/gache/v2 v2.0.11/go.mod h1:0YTbg//JH4Zylm/8LNHRaSbiXphcFStdVhiftgVpPds=
github.com/kpango/glg v1.6.15 h1:nw0xSxpSyrDIWHeb3dvnE08PW+SCbK+aYFETT75IeLA=
github.com/kpango/glg v1.6.15/go.mod h1:cmsc7Yeu8AS3wHLmN7bhwENXOpxfq+QoqxCIk2FneRk=
github.com/kpango/go-hostpool v0.0.0-20210303030322-aab80263dcd0 h1:orIEVdc68woWO1ZyYWEVOl5Kl33eDjP+kbxgbdpMwi4=
@@ -583,8 +582,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
-github.com/prometheus/client_golang v1.20.3 h1:oPksm4K8B+Vt35tUhw6GbSNSgVlVSBH0qELP/7u83l4=
-github.com/prometheus/client_golang v1.20.3/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
+github.com/prometheus/client_golang v1.20.4 h1:Tgh3Yr67PaOv/uTqloMsCEdeuFTatm5zIq5+qNN23vI=
+github.com/prometheus/client_golang v1.20.4/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
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.59.1 h1:LXb1quJHWm1P6wq/U824uxYi4Sg0oGvNeUm1z5dJoX0=
@@ -602,8 +601,8 @@ github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
-github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
-github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
+github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
+github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk=
github.com/schollz/progressbar/v2 v2.15.0/go.mod h1:UdPq3prGkfQ7MOzZKlDRpYKcFqEMczbD7YmbPgpzKMI=
@@ -680,12 +679,12 @@ go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8d
go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o=
go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0=
go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8=
-go.starlark.net v0.0.0-20240725214946-42030a7cedce h1:YyGqCjZtGZJ+mRPaenEiB87afEO2MFRzLiJNZ0Z0bPw=
-go.starlark.net v0.0.0-20240725214946-42030a7cedce/go.mod h1:YKMCv9b1WrfWmeqdV5MAuEHWsu5iC+fe6kYl2sQjdI8=
+go.starlark.net v0.0.0-20240925182052-1207426daebd h1:S+EMisJOHklQxnS3kqsY8jl2y5aF0FDEdcLnOw3q22E=
+go.starlark.net v0.0.0-20240925182052-1207426daebd/go.mod h1:YKMCv9b1WrfWmeqdV5MAuEHWsu5iC+fe6kYl2sQjdI8=
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
-go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8=
-go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0=
+go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
+go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
@@ -739,18 +738,18 @@ gonum.org/v1/hdf5 v0.0.0-20210714002203-8c5d23bc6946 h1:vJpL69PeUullhJyKtTjHjENE
gonum.org/v1/hdf5 v0.0.0-20210714002203-8c5d23bc6946/go.mod h1:BQUWDHIAygjdt1HnUPQ0eWqLN2n5FwJycrpYUVUOx2I=
gonum.org/v1/plot v0.14.0 h1:+LBDVFYwFe4LHhdP8coW6296MBEY4nQ+Y4vuUpJopcE=
gonum.org/v1/plot v0.14.0/go.mod h1:MLdR9424SJed+5VqC6MsouEpig9pZX2VZ57H9ko2bXU=
-google.golang.org/api v0.197.0 h1:x6CwqQLsFiA5JKAiGyGBjc2bNtHtLddhJCE2IKuhhcQ=
-google.golang.org/api v0.197.0/go.mod h1:AuOuo20GoQ331nq7DquGHlU6d+2wN2fZ8O0ta60nRNw=
+google.golang.org/api v0.199.0 h1:aWUXClp+VFJmqE0JPvpZOK3LDQMyFKYIow4etYd9qxs=
+google.golang.org/api v0.199.0/go.mod h1:ohG4qSztDJmZdjK/Ar6MhbAmb/Rpi4JHOqagsh90K28=
google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
-google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU=
-google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc=
-google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I=
+google.golang.org/genproto v0.0.0-20240924160255-9d4c2d233b61 h1:KipVMxePgXPFBzXOvpKbny3RVdVmJOD64R/Ob7GPWEs=
+google.golang.org/genproto v0.0.0-20240924160255-9d4c2d233b61/go.mod h1:HiAZQz/G7n0EywFjmncAwsfnmFm2bjm7qPjwl8hyzjM=
+google.golang.org/genproto/googleapis/api v0.0.0-20240924160255-9d4c2d233b61 h1:pAjq8XSSzXoP9ya73v/w+9QEAAJNluLrpmMq5qFJQNY=
+google.golang.org/genproto/googleapis/api v0.0.0-20240924160255-9d4c2d233b61/go.mod h1:O6rP0uBq4k0mdi/b4ZEMAZjkhYWhS815kCvaMha4VN8=
google.golang.org/genproto/googleapis/bytestream v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:q0eWNnCW04EJlyrmLT+ZHsjuoUiZ36/eAEdCCezZoco=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
-google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo=
-google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240924160255-9d4c2d233b61 h1:N9BgCIAUvn/M+p4NJccWPWb3BWh88+zyL0ll9HgbEeM=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240924160255-9d4c2d233b61/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
+google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw=
+google.golang.org/grpc v1.67.0/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
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 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
@@ -782,8 +781,8 @@ k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38 h1:1dWzkmJrrprYvjGwh9kEUx
k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38/go.mod h1:coRQXBK9NxO98XUv3ZD6AK3xzHCxV6+b7lrquKwaKzA=
k8s.io/metrics v0.30.3 h1:gKCpte5zykrOmQhZ8qmsxyJslMdiLN+sqbBfIWNpbGM=
k8s.io/metrics v0.30.3/go.mod h1:W06L2nXRhOwPkFYDJYWdEIS3u6JcJy3ebIPYbndRs6A=
-k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3 h1:b2FmK8YH+QEwq/Sy2uAEhmqL5nPfGYbJOcaqjeYYZoA=
-k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 h1:MDF6h2H/h4tbzmtIKTuctcwZmY0tY9mD9fNT47QO6HI=
+k8s.io/utils v0.0.0-20240921022957-49e7df575cb6/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
lukechampine.com/uint128 v1.3.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
diff --git a/hack/docker/gen/main.go b/hack/docker/gen/main.go
index bf0d575c28..3cd50d9f81 100644
--- a/hack/docker/gen/main.go
+++ b/hack/docker/gen/main.go
@@ -414,7 +414,7 @@ func appendM[K comparable](maps ...map[K]string) map[K]string {
for _, m := range maps[1:] {
for k, v := range m {
ev, ok := result[k]
- if ok {
+ if ok && !strings.Contains(v, ev) {
v += ":" + ev
}
result[k] = v
@@ -674,8 +674,7 @@ func main() {
Preprocess: append(devContainerPreprocess,
append(ciContainerPreprocess,
ngtPreprocess,
- faissPreprocess,
- usearchPreprocess)...),
+ faissPreprocess)...),
},
"vald-buildbase": {
AppName: "buildbase",
diff --git a/internal/core/algorithm/usearch/usearch_test.go b/internal/core/algorithm/usearch/usearch_test.go
index 8ec0f3941e..bcd03fee5b 100644
--- a/internal/core/algorithm/usearch/usearch_test.go
+++ b/internal/core/algorithm/usearch/usearch_test.go
@@ -147,34 +147,6 @@ func Test_usearch_Search(t *testing.T) {
return u, nil
}
tests := []test{
- {
- name: "return vector id after the same vector inserted",
- args: args{
- q: []float32{0, 1, 2, 3, 4, 5, 6, 7, 8},
- k: 5,
- },
- fields: fields{
- idxPath: idxTempDir(t),
- quantizationType: "F32",
- metricType: "cosine",
- dimension: 9,
- connectivity: 0,
- expansionAdd: 0,
- expansionSearch: 0,
- multi: false,
- },
- createFunc: func(t *testing.T, fields fields) (Usearch, error) {
- t.Helper()
- vec := []float32{0, 1, 2, 3, 4, 5, 6, 7, 8}
-
- return insertCreateFunc(t, fields, [][]float32{vec}, 1)
- },
- want: want{
- want: []algorithm.SearchResult{
- {ID: uint32(1), Distance: 0},
- },
- },
- },
{
name: "resturn vector id after the nearby vector inserted",
args: args{
@@ -279,8 +251,8 @@ func Test_usearch_Search(t *testing.T) {
},
want: want{
want: []algorithm.SearchResult{
- {ID: uint32(9), Distance: 2.384185791015625e-07},
- {ID: uint32(10), Distance: 5.364418029785156e-07},
+ {ID: uint32(10), Distance: 2.384185791015625e-07},
+ {ID: uint32(9), Distance: 5.364418029785156e-07},
{ID: uint32(6), Distance: 3},
{ID: uint32(4), Distance: 3},
{ID: uint32(2), Distance: 3},
diff --git a/internal/net/dialer.go b/internal/net/dialer.go
index 8eda81e568..c01ecc5927 100644
--- a/internal/net/dialer.go
+++ b/internal/net/dialer.go
@@ -246,7 +246,22 @@ func (d *dialer) cachedDialer(ctx context.Context, network, addr string) (conn C
if err != nil {
return nil, err
}
- port = strconv.FormatUint(uint64(nport), 10)
+ if nport != 0 {
+ port = strconv.FormatUint(uint64(nport), 10)
+ } else {
+ const (
+ defaultTCPPort = "80"
+ defaultUDPPort = "53"
+ )
+ switch network {
+ case TCP.String(), TCP4.String(), TCP6.String():
+ port = defaultTCPPort
+ case UDP.String(), UDP4.String(), UDP6.String():
+ port = defaultUDPPort
+ default:
+ log.Warnf("Unknown network type: %s. Port will be empty.", network)
+ }
+ }
d.addrs.Store(addr, &addrInfo{
host: host,
port: port,
diff --git a/internal/net/grpc/client.go b/internal/net/grpc/client.go
index de6b1ab285..d5aef913ec 100644
--- a/internal/net/grpc/client.go
+++ b/internal/net/grpc/client.go
@@ -167,7 +167,7 @@ func (g *gRPCClient) StartConnectionMonitor(ctx context.Context) (<-chan error,
ech := make(chan error, len(addrs))
for _, addr := range addrs {
if addr != "" {
- _, err := g.Connect(ctx, addr, grpc.WithBlock())
+ _, err := g.Connect(ctx, addr)
if err != nil {
if !errors.Is(err, context.Canceled) &&
!errors.Is(err, context.DeadlineExceeded) &&
diff --git a/internal/net/grpc/codes/codes.go b/internal/net/grpc/codes/codes.go
index 2384dcf548..0c1eea92ab 100644
--- a/internal/net/grpc/codes/codes.go
+++ b/internal/net/grpc/codes/codes.go
@@ -40,3 +40,48 @@ var (
DataLoss = codes.DataLoss
Unauthenticated = codes.Unauthenticated
)
+
+type CodeType interface {
+ int | int8 | int32 | int64 | uint | uint8 | uint32 | uint64 | Code
+}
+
+func ToString[T CodeType](c T) string {
+ switch Code(c) {
+ case OK:
+ return "OK"
+ case Canceled:
+ return "Canceled"
+ case Unknown:
+ return "Unknown"
+ case InvalidArgument:
+ return "InvalidArgument"
+ case DeadlineExceeded:
+ return "DeadlineExceeded"
+ case NotFound:
+ return "NotFound"
+ case AlreadyExists:
+ return "AlreadyExists"
+ case PermissionDenied:
+ return "PermissionDenied"
+ case ResourceExhausted:
+ return "ResourceExhausted"
+ case FailedPrecondition:
+ return "FailedPrecondition"
+ case Aborted:
+ return "Aborted"
+ case OutOfRange:
+ return "OutOfRange"
+ case Unimplemented:
+ return "Unimplemented"
+ case Internal:
+ return "Internal"
+ case Unavailable:
+ return "Unavailable"
+ case DataLoss:
+ return "DataLoss"
+ case Unauthenticated:
+ return "Unauthenticated"
+ default:
+ return "InvalidStatus"
+ }
+}
diff --git a/internal/net/grpc/errdetails/errdetails.go b/internal/net/grpc/errdetails/errdetails.go
index ad84b6c0b2..a8e016c1d7 100644
--- a/internal/net/grpc/errdetails/errdetails.go
+++ b/internal/net/grpc/errdetails/errdetails.go
@@ -54,24 +54,25 @@ const (
ValdResourceOwner = "vdaas.org vald team "
ValdGRPCResourceTypePrefix = "github.com/vdaas/vald/apis/grpc/v1"
- typePrefix = "type.googleapis.com/google.rpc."
+ typePrefix = "type.googleapis.com/google.rpc."
+ typePrefixV1 = "type.googleapis.com/rpc.v1."
)
var (
- debugInfoMessageName = new(DebugInfo).ProtoReflect().Descriptor().FullName().Name()
- errorInfoMessageName = new(ErrorInfo).ProtoReflect().Descriptor().FullName().Name()
- badRequestMessageName = new(BadRequest).ProtoReflect().Descriptor().FullName().Name()
- badRequestFieldViolationMessageName = new(BadRequestFieldViolation).ProtoReflect().Descriptor().FullName().Name()
- localizedMessageMessageName = new(LocalizedMessage).ProtoReflect().Descriptor().FullName().Name()
- preconditionFailureMessageName = new(PreconditionFailure).ProtoReflect().Descriptor().FullName().Name()
- preconditionFailureViolationMessageName = new(PreconditionFailureViolation).ProtoReflect().Descriptor().FullName().Name()
- helpMessageName = new(Help).ProtoReflect().Descriptor().FullName().Name()
- helpLinkMessageName = new(HelpLink).ProtoReflect().Descriptor().FullName().Name()
- quotaFailureMessageName = new(QuotaFailure).ProtoReflect().Descriptor().FullName().Name()
- quotaFailureViolationMessageName = new(QuotaFailureViolation).ProtoReflect().Descriptor().FullName().Name()
- requestInfoMessageName = new(RequestInfo).ProtoReflect().Descriptor().FullName().Name()
- resourceInfoMessageName = new(ResourceInfo).ProtoReflect().Descriptor().FullName().Name()
- retryInfoMessageName = new(RetryInfo).ProtoReflect().Descriptor().FullName().Name()
+ DebugInfoMessageName = string(new(DebugInfo).ProtoReflect().Descriptor().FullName().Name())
+ ErrorInfoMessageName = string(new(ErrorInfo).ProtoReflect().Descriptor().FullName().Name())
+ BadRequestMessageName = string(new(BadRequest).ProtoReflect().Descriptor().FullName().Name())
+ BadRequestFieldViolationMessageName = string(new(BadRequestFieldViolation).ProtoReflect().Descriptor().FullName().Name())
+ LocalizedMessageMessageName = string(new(LocalizedMessage).ProtoReflect().Descriptor().FullName().Name())
+ PreconditionFailureMessageName = string(new(PreconditionFailure).ProtoReflect().Descriptor().FullName().Name())
+ PreconditionFailureViolationMessageName = string(new(PreconditionFailureViolation).ProtoReflect().Descriptor().FullName().Name())
+ HelpMessageName = string(new(Help).ProtoReflect().Descriptor().FullName().Name())
+ HelpLinkMessageName = string(new(HelpLink).ProtoReflect().Descriptor().FullName().Name())
+ QuotaFailureMessageName = string(new(QuotaFailure).ProtoReflect().Descriptor().FullName().Name())
+ QuotaFailureViolationMessageName = string(new(QuotaFailureViolation).ProtoReflect().Descriptor().FullName().Name())
+ RequestInfoMessageName = string(new(RequestInfo).ProtoReflect().Descriptor().FullName().Name())
+ ResourceInfoMessageName = string(new(ResourceInfo).ProtoReflect().Descriptor().FullName().Name())
+ RetryInfoMessageName = string(new(RetryInfo).ProtoReflect().Descriptor().FullName().Name())
)
type Detail struct {
@@ -79,6 +80,85 @@ type Detail struct {
Message proto.Message `json:"message,omitempty" yaml:"message"`
}
+func (d *Detail) MarshalJSON() (body []byte, err error) {
+ if d == nil {
+ return nil, nil
+ }
+ switch strings.TrimPrefix(strings.TrimPrefix(d.TypeURL, typePrefix), typePrefixV1) {
+ case DebugInfoMessageName:
+ m, ok := d.Message.(*DebugInfo)
+ if ok {
+ return json.Marshal(m)
+ }
+ case ErrorInfoMessageName:
+ m, ok := d.Message.(*ErrorInfo)
+ if ok {
+ return json.Marshal(m)
+ }
+ case BadRequestFieldViolationMessageName:
+ m, ok := d.Message.(*BadRequestFieldViolation)
+ if ok {
+ return json.Marshal(m)
+ }
+ case BadRequestMessageName:
+ m, ok := d.Message.(*BadRequest)
+ if ok {
+ return json.Marshal(m)
+ }
+ case LocalizedMessageMessageName:
+ m, ok := d.Message.(*LocalizedMessage)
+ if ok {
+ return json.Marshal(m)
+ }
+ case PreconditionFailureViolationMessageName:
+ m, ok := d.Message.(*PreconditionFailureViolation)
+ if ok {
+ return json.Marshal(m)
+ }
+ case PreconditionFailureMessageName:
+ m, ok := d.Message.(*PreconditionFailure)
+ if ok {
+ return json.Marshal(m)
+ }
+ case HelpLinkMessageName:
+ m, ok := d.Message.(*HelpLink)
+ if ok {
+ return json.Marshal(m)
+ }
+ case HelpMessageName:
+ m, ok := d.Message.(*Help)
+ if ok {
+ return json.Marshal(m)
+ }
+ case QuotaFailureViolationMessageName:
+ m, ok := d.Message.(*QuotaFailureViolation)
+ if ok {
+ return json.Marshal(m)
+ }
+ case QuotaFailureMessageName:
+ m, ok := d.Message.(*QuotaFailure)
+ if ok {
+ return json.Marshal(m)
+ }
+ case RequestInfoMessageName:
+ m, ok := d.Message.(*RequestInfo)
+ if ok {
+ return json.Marshal(m)
+ }
+ case ResourceInfoMessageName:
+ m, ok := d.Message.(*ResourceInfo)
+ if ok {
+ return json.Marshal(m)
+ }
+ case RetryInfoMessageName:
+ m, ok := d.Message.(*RetryInfo)
+ if ok {
+ return json.Marshal(m)
+ }
+ }
+ return json.Marshal(d)
+}
+
func decodeDetails(objs ...any) (details []Detail) {
if objs == nil {
return nil
@@ -234,86 +314,86 @@ func AnyToErrorDetail(a *types.Any) proto.Message {
return nil
}
var err error
- switch proto.Name(strings.TrimPrefix(a.GetTypeUrl(), typePrefix)) {
- case debugInfoMessageName:
+ switch strings.TrimPrefix(strings.TrimPrefix(a.GetTypeUrl(), typePrefix), typePrefixV1) {
+ case DebugInfoMessageName:
var m DebugInfo
err = types.UnmarshalAny(a, &m)
if err == nil {
return &m
}
- case errorInfoMessageName:
+ case ErrorInfoMessageName:
var m ErrorInfo
err = types.UnmarshalAny(a, &m)
if err == nil {
return &m
}
- case badRequestFieldViolationMessageName:
+ case BadRequestFieldViolationMessageName:
var m BadRequestFieldViolation
err = types.UnmarshalAny(a, &m)
if err == nil {
return &m
}
- case badRequestMessageName:
+ case BadRequestMessageName:
var m BadRequest
err = types.UnmarshalAny(a, &m)
if err == nil {
return &m
}
- case localizedMessageMessageName:
+ case LocalizedMessageMessageName:
var m LocalizedMessage
err = types.UnmarshalAny(a, &m)
if err == nil {
return &m
}
- case preconditionFailureViolationMessageName:
+ case PreconditionFailureViolationMessageName:
var m PreconditionFailureViolation
err = types.UnmarshalAny(a, &m)
if err == nil {
return &m
}
- case preconditionFailureMessageName:
+ case PreconditionFailureMessageName:
var m PreconditionFailure
err = types.UnmarshalAny(a, &m)
if err == nil {
return &m
}
- case helpLinkMessageName:
+ case HelpLinkMessageName:
var m HelpLink
err = types.UnmarshalAny(a, &m)
if err == nil {
return &m
}
- case helpMessageName:
+ case HelpMessageName:
var m Help
err = types.UnmarshalAny(a, &m)
if err == nil {
return &m
}
- case quotaFailureViolationMessageName:
+ case QuotaFailureViolationMessageName:
var m QuotaFailureViolation
err = types.UnmarshalAny(a, &m)
if err == nil {
return &m
}
- case quotaFailureMessageName:
+ case QuotaFailureMessageName:
var m QuotaFailure
err = types.UnmarshalAny(a, &m)
if err == nil {
return &m
}
- case requestInfoMessageName:
+ case RequestInfoMessageName:
var m RequestInfo
err = types.UnmarshalAny(a, &m)
if err == nil {
return &m
}
- case resourceInfoMessageName:
+ case ResourceInfoMessageName:
var m ResourceInfo
err = types.UnmarshalAny(a, &m)
if err == nil {
return &m
}
- case retryInfoMessageName:
+ case RetryInfoMessageName:
var m RetryInfo
err = types.UnmarshalAny(a, &m)
if err == nil {
diff --git a/internal/net/grpc/interceptor/server/logging/accesslog.go b/internal/net/grpc/interceptor/server/logging/accesslog.go
index 9de30d1aaa..802960ddd3 100644
--- a/internal/net/grpc/interceptor/server/logging/accesslog.go
+++ b/internal/net/grpc/interceptor/server/logging/accesslog.go
@@ -19,11 +19,14 @@ package logging
import (
"context"
+ "fmt"
"path"
"time"
+ "github.com/vdaas/vald/internal/encoding/json"
"github.com/vdaas/vald/internal/log"
"github.com/vdaas/vald/internal/net/grpc"
+ "github.com/vdaas/vald/internal/net/grpc/status"
"github.com/vdaas/vald/internal/observability/trace"
)
@@ -32,6 +35,7 @@ const (
grpcKindStream = "stream"
rpcCompletedMessage = "rpc completed"
+ rpcFailedMessage = "rpc failed"
)
type AccessLogEntity struct {
@@ -49,6 +53,29 @@ type AccessLogGRPCEntity struct {
Method string `json:"method,omitempty" yaml:"method"`
}
+func (e AccessLogEntity) String() (str string) {
+ var emsg string
+ if e.Error != nil {
+ st, ok := status.FromError(e.Error)
+ if ok && st != nil {
+ emsg = st.String()
+ } else {
+ emsg = e.Error.Error()
+ }
+ }
+ eb, err := json.Marshal(e)
+ if err != nil {
+ str = fmt.Sprintf("%#v,\tfailed to json.Marshal(AccessLogEntity) error: %v", e, err)
+ } else {
+ str = string(eb)
+ }
+
+ if emsg != "" {
+ return str + ",\terror message: " + emsg
+ }
+ return str
+}
+
func AccessLogInterceptor() grpc.UnaryServerInterceptor {
return func(
ctx context.Context,
@@ -88,9 +115,9 @@ func AccessLogInterceptor() grpc.UnaryServerInterceptor {
if err != nil {
entity.Error = err
- log.Warn(rpcCompletedMessage, entity)
+ log.Warn(rpcFailedMessage, entity.String())
} else {
- log.Debug(rpcCompletedMessage, entity)
+ log.Debug(rpcCompletedMessage, entity.String())
}
return resp, err
@@ -136,9 +163,9 @@ func AccessLogStreamInterceptor() grpc.StreamServerInterceptor {
if err != nil {
entity.Error = err
- log.Warn(rpcCompletedMessage, entity)
+ log.Warn(rpcFailedMessage, entity.String())
} else {
- log.Debug(rpcCompletedMessage, entity)
+ log.Debug(rpcCompletedMessage, entity.String())
}
return err
diff --git a/internal/net/grpc/pool/pool.go b/internal/net/grpc/pool/pool.go
index e0c3d34776..0980906c49 100644
--- a/internal/net/grpc/pool/pool.go
+++ b/internal/net/grpc/pool/pool.go
@@ -127,7 +127,7 @@ func New(ctx context.Context, opts ...Option) (c Conn, err error) {
p.addr = net.JoinHostPort(p.host, p.port)
}
- conn, err := grpc.DialContext(ctx, p.addr, p.dopts...)
+ conn, err := grpc.NewClient(p.addr, p.dopts...)
if err != nil {
log.Warnf("grpc.New initial Dial check to %s returned error: %v", p.addr, err)
if conn != nil {
@@ -143,7 +143,7 @@ func New(ctx context.Context, opts ...Option) (c Conn, err error) {
}
p.port = port
p.addr = net.JoinHostPort(p.host, p.port)
- conn, err = grpc.DialContext(ctx, p.addr, p.dopts...)
+ conn, err = grpc.NewClient(p.addr, p.dopts...)
if err != nil {
if conn != nil {
cerr := conn.Close()
@@ -469,7 +469,7 @@ func (p *pool) dial(ctx context.Context, addr string) (conn *ClientConn, err err
do := func() (conn *ClientConn, err error) {
ctx, cancel := context.WithTimeout(ctx, p.dialTimeout)
defer cancel()
- conn, err = grpc.DialContext(ctx, addr, append(p.dopts, grpc.WithBlock())...)
+ conn, err = grpc.NewClient(addr, p.dopts...)
if err != nil {
if conn != nil {
cerr := conn.Close()
@@ -697,10 +697,7 @@ func (p *pool) scanGRPCPort(ctx context.Context) (port uint16, err error) {
return 0, ctx.Err()
default:
// try gRPC dialing to target port
- conn, err = grpc.DialContext(ctx,
- net.JoinHostPort(p.host, port),
- append(p.dopts, grpc.WithBlock())...)
-
+ conn, err = grpc.NewClient(net.JoinHostPort(p.host, port), p.dopts...)
if err == nil && isHealthy(ctx, conn) && conn.Close() == nil {
// if no error and healthy the port is ready for gRPC
return port, nil
diff --git a/internal/net/grpc/pool/pool_bench_test.go b/internal/net/grpc/pool/pool_bench_test.go
index c3d2b5528f..3e9a7b96a1 100644
--- a/internal/net/grpc/pool/pool_bench_test.go
+++ b/internal/net/grpc/pool/pool_bench_test.go
@@ -129,7 +129,7 @@ func Benchmark_ConnPool(b *testing.B) {
func Benchmark_StaticDial(b *testing.B) {
defer ListenAndServe(b, DefaultServerAddr)()
- conn, err := grpc.DialContext(context.Background(), DefaultServerAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
+ conn, err := grpc.NewClient(DefaultServerAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
b.Error(err)
}
@@ -186,7 +186,7 @@ func BenchmarkParallel_ConnPool(b *testing.B) {
func BenchmarkParallel_StaticDial(b *testing.B) {
defer ListenAndServe(b, DefaultServerAddr)()
- conn, err := grpc.DialContext(context.Background(), DefaultServerAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
+ conn, err := grpc.NewClient(DefaultServerAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
b.Error(err)
}
diff --git a/internal/net/grpc/status/status.go b/internal/net/grpc/status/status.go
index cfd0ff085f..5d61fb41cf 100644
--- a/internal/net/grpc/status/status.go
+++ b/internal/net/grpc/status/status.go
@@ -18,8 +18,10 @@
package status
import (
+ "cmp"
"context"
"os"
+ "slices"
"github.com/vdaas/vald/internal/errors"
"github.com/vdaas/vald/internal/info"
@@ -28,6 +30,7 @@ import (
"github.com/vdaas/vald/internal/net/grpc/errdetails"
"github.com/vdaas/vald/internal/net/grpc/proto"
"github.com/vdaas/vald/internal/net/grpc/types"
+ "github.com/vdaas/vald/internal/strings"
spb "google.golang.org/genproto/googleapis/rpc/status"
"google.golang.org/grpc/status"
)
@@ -237,9 +240,13 @@ func FromError(err error) (st *Status, ok bool) {
}
func withDetails(st *Status, err error, details ...any) *Status {
- msgs := make([]proto.MessageV1, 0, 1+len(details)*2)
+ if st != nil {
+ details = append(st.Details(), details...)
+ }
+ dmap := make(map[string][]proto.Message, len(details)+1)
if err != nil {
- msgs = append(msgs, &errdetails.ErrorInfo{
+ typeName := errdetails.ErrorInfoMessageName
+ dmap[typeName] = []proto.Message{&errdetails.ErrorInfo{
Reason: err.Error(),
Domain: func() (hostname string) {
var err error
@@ -249,64 +256,461 @@ func withDetails(st *Status, err error, details ...any) *Status {
}
return hostname
}(),
- })
+ }}
}
for _, detail := range details {
if detail == nil {
continue
}
+ var (
+ typeName string
+ msg proto.Message
+ )
switch v := detail.(type) {
case *spb.Status:
if v != nil {
- msgs = append(msgs, proto.ToMessageV1(v))
+ for _, d := range v.GetDetails() {
+ typeName = d.GetTypeUrl()
+ if typeName != "" {
+ msg = errdetails.AnyToErrorDetail(d)
+ if msg != nil {
+ dm, ok := dmap[typeName]
+ if ok && dm != nil {
+ dmap[typeName] = append(dm, msg)
+ } else {
+ dmap[typeName] = []proto.Message{msg}
+ }
+ }
+ }
+ }
}
case spb.Status:
- msgs = append(msgs, proto.ToMessageV1(&v))
+ for _, d := range v.GetDetails() {
+ typeName = d.GetTypeUrl()
+ if typeName != "" {
+ msg = errdetails.AnyToErrorDetail(d)
+ if msg != nil {
+ d, ok := dmap[typeName]
+ if ok && d != nil {
+ dmap[typeName] = append(d, msg)
+ } else {
+ dmap[typeName] = []proto.Message{msg}
+ }
+ }
+ }
+ }
case *status.Status:
if v != nil {
- msgs = append(msgs, proto.ToMessageV1(&spb.Status{
- Code: v.Proto().GetCode(),
- Message: v.Message(),
- }))
- for _, d := range v.Proto().Details {
- msgs = append(msgs, proto.ToMessageV1(errdetails.AnyToErrorDetail(d)))
+ for _, d := range v.Proto().GetDetails() {
+ typeName = d.GetTypeUrl()
+ if typeName != "" {
+ msg = errdetails.AnyToErrorDetail(d)
+ if msg != nil {
+ d, ok := dmap[typeName]
+ if ok && d != nil {
+ dmap[typeName] = append(d, msg)
+ } else {
+ dmap[typeName] = []proto.Message{msg}
+ }
+ }
+ }
}
}
case status.Status:
- msgs = append(msgs, proto.ToMessageV1(&spb.Status{
- Code: v.Proto().GetCode(),
- Message: v.Message(),
- }))
- for _, d := range v.Proto().Details {
- msgs = append(msgs, proto.ToMessageV1(errdetails.AnyToErrorDetail(d)))
+ for _, d := range v.Proto().GetDetails() {
+ typeName = d.GetTypeUrl()
+ if typeName != "" {
+ msg = errdetails.AnyToErrorDetail(d)
+ if msg != nil {
+ d, ok := dmap[typeName]
+ if ok && d != nil {
+ dmap[typeName] = append(d, msg)
+ } else {
+ dmap[typeName] = []proto.Message{msg}
+ }
+ }
+ }
}
case *info.Detail:
if v != nil {
- msgs = append(msgs, errdetails.DebugInfoFromInfoDetail(v))
+ typeName = errdetails.DebugInfoMessageName
+ msg = errdetails.DebugInfoFromInfoDetail(v)
+ if msg != nil {
+ d, ok := dmap[typeName]
+ if ok && d != nil {
+ dmap[typeName] = append(d, msg)
+ } else {
+ dmap[typeName] = []proto.Message{msg}
+ }
+ }
}
case info.Detail:
- msgs = append(msgs, errdetails.DebugInfoFromInfoDetail(&v))
+ typeName = errdetails.DebugInfoMessageName
+ msg = errdetails.DebugInfoFromInfoDetail(&v)
+ if msg != nil {
+ d, ok := dmap[typeName]
+ if ok && d != nil {
+ dmap[typeName] = append(d, msg)
+ } else {
+ dmap[typeName] = []proto.Message{msg}
+ }
+ }
case *types.Any:
if v != nil {
- msgs = append(msgs, proto.ToMessageV1(errdetails.AnyToErrorDetail(v)))
+ typeName = v.GetTypeUrl()
+ msg = errdetails.AnyToErrorDetail(v)
+ if msg != nil {
+ d, ok := dmap[typeName]
+ if ok && d != nil {
+ dmap[typeName] = append(d, msg)
+ } else {
+ dmap[typeName] = []proto.Message{msg}
+ }
+ }
}
case types.Any:
- msgs = append(msgs, proto.ToMessageV1(errdetails.AnyToErrorDetail(&v)))
+ typeName = v.GetTypeUrl()
+ msg = errdetails.AnyToErrorDetail(&v)
+ if msg != nil {
+ d, ok := dmap[typeName]
+ if ok && d != nil {
+ dmap[typeName] = append(d, msg)
+ } else {
+ dmap[typeName] = []proto.Message{msg}
+ }
+ }
case *proto.Message:
if v != nil {
- msgs = append(msgs, proto.ToMessageV1(*v))
+ typeName = typeURL(*v)
+ d, ok := dmap[typeName]
+ if ok && d != nil {
+ dmap[typeName] = append(d, *v)
+ } else {
+ dmap[typeName] = []proto.Message{*v}
+ }
}
case proto.Message:
- msgs = append(msgs, proto.ToMessageV1(v))
+ typeName = typeURL(v)
+ d, ok := dmap[typeName]
+ if ok && d != nil {
+ dmap[typeName] = append(d, v)
+ } else {
+ dmap[typeName] = []proto.Message{v}
+ }
case *proto.MessageV1:
if v != nil {
- msgs = append(msgs, *v)
+ msg = proto.ToMessageV2(*v)
+ typeName = typeURL(msg)
+ if msg != nil {
+ d, ok := dmap[typeName]
+ if ok && d != nil {
+ dmap[typeName] = append(d, msg)
+ } else {
+ dmap[typeName] = []proto.Message{msg}
+ }
+ }
}
case proto.MessageV1:
- msgs = append(msgs, v)
+ msg = proto.ToMessageV2(v)
+ typeName = typeURL(msg)
+ if msg != nil {
+ d, ok := dmap[typeName]
+ if ok && d != nil {
+ dmap[typeName] = append(d, msg)
+ } else {
+ dmap[typeName] = []proto.Message{msg}
+ }
+ }
+ }
+ }
+ msgs := make([]proto.MessageV1, 0, len(dmap))
+ visited := make(map[string]bool, len(dmap))
+ for typeName, ds := range dmap {
+ switch typeName {
+ case errdetails.DebugInfoMessageName:
+ m := new(errdetails.DebugInfo)
+ for _, msg := range ds {
+ d, ok := msg.(*errdetails.DebugInfo)
+ if ok && d != nil && !visited[d.String()] {
+ visited[d.String()] = true
+ if m.GetDetail() == "" {
+ m.Detail = d.GetDetail()
+ } else if m.GetDetail() != d.GetDetail() && !strings.Contains(m.GetDetail(), d.GetDetail()) {
+ m.Detail += "\t" + d.GetDetail()
+ }
+ if len(m.GetStackEntries()) < len(d.GetStackEntries()) {
+ m.StackEntries = d.GetStackEntries()
+ }
+ }
+ }
+ m.Detail = removeDuplicatesFromTSVLine(m.GetDetail())
+ msgs = append(msgs, m)
+ case errdetails.ErrorInfoMessageName:
+ m := new(errdetails.ErrorInfo)
+ for _, msg := range ds {
+ e, ok := msg.(*errdetails.ErrorInfo)
+ if ok && e != nil && !visited[e.String()] && !visited[e.GetReason()] {
+ visited[e.String()] = true
+ visited[e.GetReason()] = true
+ if m.GetDomain() == "" {
+ m.Domain = e.GetDomain()
+ } else if m.GetDomain() != e.GetDomain() && !strings.Contains(m.GetDomain(), e.GetDomain()) {
+ m.Domain += "\t" + e.GetDomain()
+ }
+ if m.GetReason() == "" {
+ m.Reason += e.GetReason()
+ } else if m.GetReason() != e.GetReason() && !strings.Contains(m.GetReason(), e.GetReason()) {
+ m.Reason += "\t" + e.GetReason()
+ }
+ if e.GetMetadata() != nil {
+ if m.GetMetadata() == nil {
+ m.Metadata = e.GetMetadata()
+ } else {
+ m.Metadata = appendM(m.GetMetadata(), e.GetMetadata())
+ }
+ }
+ }
+ }
+ m.Reason = removeDuplicatesFromTSVLine(m.GetReason())
+ m.Domain = removeDuplicatesFromTSVLine(m.GetDomain())
+ msgs = append(msgs, m)
+ case errdetails.BadRequestMessageName:
+ m := new(errdetails.BadRequest)
+ for _, msg := range ds {
+ b, ok := msg.(*errdetails.BadRequest)
+ if ok && b != nil && b.GetFieldViolations() != nil && !visited[b.String()] {
+ visited[b.String()] = true
+ if m.GetFieldViolations() == nil {
+ m = b
+ } else {
+ m.FieldViolations = append(m.GetFieldViolations(), b.GetFieldViolations()...)
+ }
+ }
+ }
+ slices.SortFunc(m.FieldViolations, func(left, right *errdetails.BadRequestFieldViolation) int {
+ return cmp.Compare(left.GetField(), right.GetField())
+ })
+ m.FieldViolations = slices.CompactFunc(m.GetFieldViolations(), func(left, right *errdetails.BadRequestFieldViolation) bool {
+ return left.GetField() == right.GetField()
+ })
+ msgs = append(msgs, m)
+ case errdetails.BadRequestFieldViolationMessageName:
+ m := new(errdetails.BadRequestFieldViolation)
+ for _, msg := range ds {
+ b, ok := msg.(*errdetails.BadRequestFieldViolation)
+ if ok && b != nil && !visited[b.String()] {
+ visited[b.String()] = true
+ if m.GetField() == "" {
+ m.Field = b.GetField()
+ } else if m.GetField() != b.GetField() && !strings.Contains(m.GetField(), b.GetField()) {
+ m.Field += "\t" + b.GetField()
+ }
+ if m.GetDescription() == "" {
+ m.Description = b.GetDescription()
+ } else if m.GetDescription() != b.GetDescription() && !strings.Contains(m.GetDescription(), b.GetDescription()) {
+ m.Description += "\t" + b.GetDescription()
+ }
+ }
+ }
+ msgs = append(msgs, m)
+ case errdetails.LocalizedMessageMessageName:
+ m := new(errdetails.LocalizedMessage)
+ for _, msg := range ds {
+ l, ok := msg.(*errdetails.LocalizedMessage)
+ if ok && l != nil && !visited[l.String()] {
+ visited[l.String()] = true
+ if m.GetLocale() == "" {
+ m.Locale = l.GetLocale()
+ } else if m.GetLocale() != l.GetLocale() && !strings.Contains(m.GetLocale(), l.GetLocale()) {
+ m.Locale += "\t" + l.GetLocale()
+ }
+ if m.GetMessage() == "" {
+ m.Message = l.GetMessage()
+ } else if m.GetMessage() != l.GetMessage() && !strings.Contains(m.GetMessage(), l.GetMessage()) {
+ m.Message += "\t" + l.GetMessage()
+ }
+ }
+ }
+ msgs = append(msgs, m)
+ case errdetails.PreconditionFailureMessageName:
+ m := new(errdetails.PreconditionFailure)
+ for _, msg := range ds {
+ p, ok := msg.(*errdetails.PreconditionFailure)
+ if ok && p != nil && p.GetViolations() != nil && !visited[p.String()] {
+ visited[p.String()] = true
+ if m.GetViolations() == nil {
+ m = p
+ } else {
+ m.Violations = append(m.GetViolations(), p.GetViolations()...)
+ }
+ }
+ }
+ slices.SortFunc(m.Violations, func(left, right *errdetails.PreconditionFailureViolation) int {
+ return cmp.Compare(left.GetType(), right.GetType())
+ })
+ m.Violations = slices.CompactFunc(m.GetViolations(), func(left, right *errdetails.PreconditionFailureViolation) bool {
+ return left.GetType() == right.GetType()
+ })
+ msgs = append(msgs, m)
+ case errdetails.PreconditionFailureViolationMessageName:
+ m := new(errdetails.PreconditionFailureViolation)
+ for _, msg := range ds {
+ p, ok := msg.(*errdetails.PreconditionFailureViolation)
+ if ok && p != nil && !visited[p.String()] {
+ visited[p.String()] = true
+ if m.GetType() == "" {
+ m.Type = p.GetType()
+ } else if m.GetType() != p.GetType() && !strings.Contains(m.GetType(), p.GetType()) {
+ m.Type += "\t" + p.GetType()
+ }
+ if m.GetSubject() == "" {
+ m.Subject = p.GetSubject()
+ } else if m.GetSubject() != p.GetSubject() && !strings.Contains(m.GetSubject(), p.GetSubject()) {
+ m.Subject += "\t" + p.GetSubject()
+ }
+ if m.GetDescription() == "" {
+ m.Description = p.GetDescription()
+ } else if m.GetDescription() != p.GetDescription() && !strings.Contains(m.GetDescription(), p.GetDescription()) {
+ m.Description += "\t" + p.GetDescription()
+ }
+ }
+ }
+ msgs = append(msgs, m)
+ case errdetails.HelpMessageName:
+ m := new(errdetails.Help)
+ for _, msg := range ds {
+ h, ok := msg.(*errdetails.Help)
+ if ok && h != nil && h.GetLinks() != nil && !visited[h.String()] {
+ visited[h.String()] = true
+ if m.GetLinks() == nil {
+ m = h
+ } else {
+ m.Links = append(m.GetLinks(), h.GetLinks()...)
+ }
+ }
+ }
+ slices.SortFunc(m.Links, func(left, right *errdetails.HelpLink) int {
+ return cmp.Compare(left.GetUrl(), right.GetUrl())
+ })
+ m.Links = slices.CompactFunc(m.GetLinks(), func(left, right *errdetails.HelpLink) bool {
+ return left.GetUrl() == right.GetUrl()
+ })
+ msgs = append(msgs, m)
+ case errdetails.HelpLinkMessageName:
+ m := new(errdetails.HelpLink)
+ for _, msg := range ds {
+ h, ok := msg.(*errdetails.HelpLink)
+ if ok && h != nil && !visited[h.String()] {
+ visited[h.String()] = true
+ if m.GetUrl() == "" {
+ m.Url = h.GetUrl()
+ } else if m.GetUrl() != h.GetUrl() && !strings.Contains(m.GetUrl(), h.GetUrl()) {
+ m.Url += "\t" + h.GetUrl()
+ }
+ if m.GetDescription() == "" {
+ m.Description = h.GetDescription()
+ } else if m.GetDescription() != h.GetDescription() && !strings.Contains(m.GetDescription(), h.GetDescription()) {
+ m.Description += "\t" + h.GetDescription()
+ }
+ }
+ }
+ msgs = append(msgs, m)
+ case errdetails.QuotaFailureMessageName:
+ m := new(errdetails.QuotaFailure)
+ for _, msg := range ds {
+ q, ok := msg.(*errdetails.QuotaFailure)
+ if ok && q != nil && q.GetViolations() != nil && !visited[q.String()] {
+ visited[q.String()] = true
+ if m.GetViolations() == nil {
+ m = q
+ } else {
+ m.Violations = append(m.GetViolations(), q.GetViolations()...)
+ }
+ }
+ }
+ slices.SortFunc(m.Violations, func(left, right *errdetails.QuotaFailureViolation) int {
+ return cmp.Compare(left.GetSubject(), right.GetSubject())
+ })
+ m.Violations = slices.CompactFunc(m.GetViolations(), func(left, right *errdetails.QuotaFailureViolation) bool {
+ return left.GetSubject() == right.GetSubject()
+ })
+ msgs = append(msgs, m)
+ case errdetails.QuotaFailureViolationMessageName:
+ m := new(errdetails.QuotaFailureViolation)
+ for _, msg := range ds {
+ q, ok := msg.(*errdetails.QuotaFailureViolation)
+ if ok && q != nil && !visited[q.String()] {
+ visited[q.String()] = true
+ if m.GetSubject() == "" {
+ m.Subject = q.GetSubject()
+ } else if m.GetSubject() != q.GetSubject() && !strings.Contains(m.GetSubject(), q.GetSubject()) {
+ m.Subject += "\t" + q.GetSubject()
+ }
+ if m.GetDescription() == "" {
+ m.Description = q.GetDescription()
+ } else if m.GetDescription() != q.GetDescription() && !strings.Contains(m.GetDescription(), q.GetDescription()) {
+ m.Description += "\t" + q.GetDescription()
+ }
+ }
+ }
+ msgs = append(msgs, m)
+ case errdetails.RequestInfoMessageName:
+ m := new(errdetails.RequestInfo)
+ for _, msg := range ds {
+ r, ok := msg.(*errdetails.RequestInfo)
+ if ok && r != nil && !visited[r.String()] {
+ visited[r.String()] = true
+ if m.GetRequestId() == "" {
+ m.RequestId = r.GetRequestId()
+ } else if m.GetRequestId() != r.GetRequestId() && !strings.Contains(m.GetRequestId(), r.GetRequestId()) {
+ m.RequestId += "\t" + r.GetRequestId()
+ }
+ if m.GetServingData() == "" {
+ m.ServingData = r.GetServingData()
+ } else if m.GetServingData() != r.GetServingData() && !strings.Contains(m.GetServingData(), r.GetServingData()) {
+ m.ServingData += "\t" + r.GetServingData()
+ }
+ }
+ }
+ msgs = append(msgs, m)
+ case errdetails.ResourceInfoMessageName:
+ m := new(errdetails.ResourceInfo)
+ for _, msg := range ds {
+ r, ok := msg.(*errdetails.ResourceInfo)
+ if ok && r != nil && !visited[r.String()] {
+ visited[r.String()] = true
+ if m.GetResourceType() == "" {
+ m.ResourceType = r.GetResourceType()
+ } else if m.GetResourceType() != r.GetResourceType() && len(m.GetResourceType()) < len(r.GetResourceType()) {
+ m.ResourceType += r.GetResourceType()
+ }
+ if m.GetResourceName() == "" {
+ m.ResourceName = r.GetResourceName()
+ } else if m.GetResourceName() != r.GetResourceName() && !strings.Contains(m.GetResourceName(), r.GetResourceName()) {
+ m.ResourceName += "\t" + r.GetResourceName()
+ }
+ if m.GetDescription() == "" {
+ m.Description = r.GetDescription()
+ } else if m.GetDescription() != r.GetDescription() && !strings.Contains(m.GetDescription(), r.GetDescription()) {
+ m.Description += "\t" + r.GetDescription()
+ }
+ }
+ }
+ msgs = append(msgs, m)
+ case errdetails.RetryInfoMessageName:
+ m := new(errdetails.RetryInfo)
+ for _, msg := range ds {
+ r, ok := msg.(*errdetails.RetryInfo)
+ if ok && r != nil && !visited[r.String()] {
+ visited[r.String()] = true
+ if m.GetRetryDelay() == nil || r.GetRetryDelay().Seconds < m.GetRetryDelay().Seconds {
+ m.RetryDelay = r.GetRetryDelay()
+ }
+ }
+ }
+ msgs = append(msgs, m)
}
}
-
if st == nil {
if err != nil {
st = New(codes.Unknown, err.Error())
@@ -314,21 +718,80 @@ func withDetails(st *Status, err error, details ...any) *Status {
st = New(codes.Unknown, "")
}
}
-
- if len(msgs) != 0 {
- sst, err := st.WithDetails(msgs...)
- if err == nil && sst != nil {
+ if msgs != nil {
+ sst, err := status.New(st.Code(), st.Message()).WithDetails(msgs...)
+ if err == nil {
st = sst
- } else {
- log.Warn("failed to set error details:", err)
}
}
-
Log(st.Code(), st.Err())
-
return st
}
+func typeURL(msg proto.Message) string {
+ switch msg.(type) {
+ case *errdetails.DebugInfo:
+ return errdetails.DebugInfoMessageName
+ case *errdetails.ErrorInfo:
+ return errdetails.ErrorInfoMessageName
+ case *errdetails.BadRequest:
+ return errdetails.BadRequestMessageName
+ case *errdetails.BadRequestFieldViolation:
+ return errdetails.BadRequestFieldViolationMessageName
+ case *errdetails.LocalizedMessage:
+ return errdetails.LocalizedMessageMessageName
+ case *errdetails.PreconditionFailure:
+ return errdetails.PreconditionFailureMessageName
+ case *errdetails.PreconditionFailureViolation:
+ return errdetails.PreconditionFailureViolationMessageName
+ case *errdetails.Help:
+ return errdetails.HelpMessageName
+ case *errdetails.HelpLink:
+ return errdetails.HelpLinkMessageName
+ case *errdetails.QuotaFailure:
+ return errdetails.QuotaFailureMessageName
+ case *errdetails.QuotaFailureViolation:
+ return errdetails.QuotaFailureViolationMessageName
+ case *errdetails.RequestInfo:
+ return errdetails.RequestInfoMessageName
+ case *errdetails.ResourceInfo:
+ return errdetails.ResourceInfoMessageName
+ case *errdetails.RetryInfo:
+ return errdetails.RetryInfoMessageName
+ }
+ return "unknown"
+}
+
+func appendM[K comparable](maps ...map[K]string) (result map[K]string) {
+ if len(maps) == 0 {
+ return nil
+ }
+ result = maps[0]
+ for _, m := range maps[1:] {
+ for k, v := range m {
+ ev, ok := result[k]
+ if ok && v != ev && !strings.Contains(v, ev) {
+ v += "\t" + ev
+ }
+ result[k] = v
+ }
+ }
+ return result
+}
+
+func removeDuplicatesFromTSVLine(line string) string {
+ fields := strings.Split(line, "\t")
+ uniqueFields := make(map[string]bool)
+ result := make([]string, 0, len(fields))
+ for _, field := range fields {
+ if !uniqueFields[field] {
+ uniqueFields[field] = true
+ result = append(result, field)
+ }
+ }
+ return strings.Join(result, "\t")
+}
+
func Log(code codes.Code, err error) {
if err != nil {
switch code {
diff --git a/internal/net/net.go b/internal/net/net.go
index 9e45aeec35..8f87a85861 100644
--- a/internal/net/net.go
+++ b/internal/net/net.go
@@ -157,7 +157,9 @@ func IsLocal(host string) bool {
func Parse(addr string) (host string, port uint16, isLocal, isIPv4, isIPv6 bool, err error) {
host, port, err = SplitHostPort(addr)
if err != nil {
- log.Warnf("failed to parse addr %s\terror: %v", addr, err)
+ if !errors.Is(err, errors.Errorf("address %s: missing port in address", addr)) {
+ log.Warnf("failed to parse addr %s\terror: %v", addr, err)
+ }
host = addr
}
diff --git a/internal/observability/exporter/otlp/otlp.go b/internal/observability/exporter/otlp/otlp.go
index 6d906c4e43..4edc3d6b4f 100644
--- a/internal/observability/exporter/otlp/otlp.go
+++ b/internal/observability/exporter/otlp/otlp.go
@@ -31,7 +31,7 @@ import (
"go.opentelemetry.io/otel/sdk/metric"
"go.opentelemetry.io/otel/sdk/resource"
"go.opentelemetry.io/otel/sdk/trace"
- semconv "go.opentelemetry.io/otel/semconv/v1.24.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.26.0"
)
// Metrics and Trace attribute keys.
diff --git a/internal/observability/trace/status.go b/internal/observability/trace/status.go
index dc7390c61d..c10fe78d37 100644
--- a/internal/observability/trace/status.go
+++ b/internal/observability/trace/status.go
@@ -21,7 +21,7 @@ import (
"github.com/vdaas/vald/internal/net/grpc/codes"
"github.com/vdaas/vald/internal/observability/attribute"
ocodes "go.opentelemetry.io/otel/codes"
- semconv "go.opentelemetry.io/otel/semconv/v1.24.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.26.0"
)
type Attributes = []attribute.KeyValue
diff --git a/k8s/gateway/gateway/ing.yaml b/k8s/gateway/gateway/ing.yaml
index 4851f24477..6214517e3e 100644
--- a/k8s/gateway/gateway/ing.yaml
+++ b/k8s/gateway/gateway/ing.yaml
@@ -38,7 +38,22 @@ spec:
- host: lb.gateway.vald.vdaas.org
http:
paths:
- - backend:
+ - path: "/"
+ backend:
+ service:
+ name: vald-lb-gateway
+ port:
+ name: grpc
+ pathType: ImplementationSpecific
+ - path: "/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo"
+ backend:
+ service:
+ name: vald-lb-gateway
+ port:
+ name: grpc
+ pathType: ImplementationSpecific
+ - path: "/grpc.reflection.v1.ServerReflection/ServerReflectionInfo"
+ backend:
service:
name: vald-lb-gateway
port:
diff --git a/k8s/gateway/gateway/lb/deployment.yaml b/k8s/gateway/gateway/lb/deployment.yaml
index 185431d1de..4a93e880d5 100644
--- a/k8s/gateway/gateway/lb/deployment.yaml
+++ b/k8s/gateway/gateway/lb/deployment.yaml
@@ -58,6 +58,7 @@ spec:
initContainers:
- name: wait-for-discoverer
image: busybox:stable
+ imagePullPolicy: Always
command:
- /bin/sh
- -e
@@ -69,6 +70,7 @@ spec:
done
- name: wait-for-agent
image: busybox:stable
+ imagePullPolicy: Always
command:
- /bin/sh
- -e
diff --git a/k8s/gateway/gateway/mirror/deployment.yaml b/k8s/gateway/gateway/mirror/deployment.yaml
index a1674d0acd..1cf20f0a12 100644
--- a/k8s/gateway/gateway/mirror/deployment.yaml
+++ b/k8s/gateway/gateway/mirror/deployment.yaml
@@ -55,6 +55,7 @@ spec:
initContainers:
- name: wait-for-gateway-lb
image: busybox:stable
+ imagePullPolicy: Always
command:
- /bin/sh
- -e
diff --git a/k8s/index/job/correction/cronjob.yaml b/k8s/index/job/correction/cronjob.yaml
index 859d39fea3..4f8b009c58 100644
--- a/k8s/index/job/correction/cronjob.yaml
+++ b/k8s/index/job/correction/cronjob.yaml
@@ -53,6 +53,7 @@ spec:
initContainers:
- name: wait-for-agent
image: busybox:stable
+ imagePullPolicy: Always
command:
- /bin/sh
- -e
@@ -64,6 +65,7 @@ spec:
done
- name: wait-for-discoverer
image: busybox:stable
+ imagePullPolicy: Always
command:
- /bin/sh
- -e
diff --git a/k8s/index/job/creation/cronjob.yaml b/k8s/index/job/creation/cronjob.yaml
index bde3814f8e..8e7b942741 100644
--- a/k8s/index/job/creation/cronjob.yaml
+++ b/k8s/index/job/creation/cronjob.yaml
@@ -53,6 +53,7 @@ spec:
initContainers:
- name: wait-for-agent
image: busybox:stable
+ imagePullPolicy: Always
command:
- /bin/sh
- -e
@@ -64,6 +65,7 @@ spec:
done
- name: wait-for-discoverer
image: busybox:stable
+ imagePullPolicy: Always
command:
- /bin/sh
- -e
diff --git a/k8s/index/job/save/cronjob.yaml b/k8s/index/job/save/cronjob.yaml
index cb5efa6def..7a40181b60 100644
--- a/k8s/index/job/save/cronjob.yaml
+++ b/k8s/index/job/save/cronjob.yaml
@@ -53,6 +53,7 @@ spec:
initContainers:
- name: wait-for-agent
image: busybox:stable
+ imagePullPolicy: Always
command:
- /bin/sh
- -e
@@ -64,6 +65,7 @@ spec:
done
- name: wait-for-discoverer
image: busybox:stable
+ imagePullPolicy: Always
command:
- /bin/sh
- -e
diff --git a/k8s/index/operator/configmap.yaml b/k8s/index/operator/configmap.yaml
index 97fe02f30b..85b98287fd 100644
--- a/k8s/index/operator/configmap.yaml
+++ b/k8s/index/operator/configmap.yaml
@@ -25,4 +25,4 @@ metadata:
app.kubernetes.io/version: v1.7.13
app.kubernetes.io/component: index-operator
data:
- config.yaml: "---\nversion: v0.0.0\ntime_zone: UTC\nlogging:\n format: raw\n level: debug\n logger: glg\nserver_config:\n servers:\n - name: grpc\n host: 0.0.0.0\n port: 8081\n grpc:\n bidirectional_stream_concurrency: 20\n connection_timeout: \"\"\n enable_admin: true\n enable_reflection: true\n header_table_size: 0\n initial_conn_window_size: 2097152\n initial_window_size: 1048576\n interceptors:\n - RecoverInterceptor\n keepalive:\n max_conn_age: \"\"\n max_conn_age_grace: \"\"\n max_conn_idle: \"\"\n min_time: 10m\n permit_without_stream: false\n time: 3h\n timeout: 60s\n max_header_list_size: 0\n max_receive_message_size: 0\n max_send_message_size: 0\n read_buffer_size: 0\n write_buffer_size: 0\n mode: GRPC\n network: tcp\n probe_wait_time: 3s\n restart: true\n socket_option:\n ip_recover_destination_addr: false\n ip_transparent: false\n reuse_addr: true\n reuse_port: true\n tcp_cork: false\n tcp_defer_accept: false\n tcp_fast_open: false\n tcp_no_delay: false\n tcp_quick_ack: false\n socket_path: \"\"\n health_check_servers:\n - name: liveness\n host: 0.0.0.0\n port: 3000\n http:\n handler_timeout: \"\"\n http2:\n enabled: false\n handler_limit: 0\n max_concurrent_streams: 0\n max_decoder_header_table_size: 4096\n max_encoder_header_table_size: 4096\n max_read_frame_size: 0\n max_upload_buffer_per_connection: 0\n max_upload_buffer_per_stream: 0\n permit_prohibited_cipher_suites: true\n idle_timeout: \"\"\n read_header_timeout: \"\"\n read_timeout: \"\"\n shutdown_duration: 5s\n write_timeout: \"\"\n mode: REST\n network: tcp\n probe_wait_time: 3s\n restart: true\n socket_option:\n ip_recover_destination_addr: false\n ip_transparent: false\n reuse_addr: true\n reuse_port: true\n tcp_cork: false\n tcp_defer_accept: false\n tcp_fast_open: true\n tcp_no_delay: true\n tcp_quick_ack: true\n socket_path: \"\"\n - name: readiness\n host: 0.0.0.0\n port: 3001\n http:\n handler_timeout: \"\"\n http2:\n enabled: false\n handler_limit: 0\n max_concurrent_streams: 0\n max_decoder_header_table_size: 4096\n max_encoder_header_table_size: 4096\n max_read_frame_size: 0\n max_upload_buffer_per_connection: 0\n max_upload_buffer_per_stream: 0\n permit_prohibited_cipher_suites: true\n idle_timeout: \"\"\n read_header_timeout: \"\"\n read_timeout: \"\"\n shutdown_duration: 0s\n write_timeout: \"\"\n mode: REST\n network: tcp\n probe_wait_time: 3s\n restart: true\n socket_option:\n ip_recover_destination_addr: false\n ip_transparent: false\n reuse_addr: true\n reuse_port: true\n tcp_cork: false\n tcp_defer_accept: false\n tcp_fast_open: true\n tcp_no_delay: true\n tcp_quick_ack: true\n socket_path: \"\"\n metrics_servers:\n - name: pprof\n host: 0.0.0.0\n port: 6060\n http:\n handler_timeout: 5s\n http2:\n enabled: false\n handler_limit: 0\n max_concurrent_streams: 0\n max_decoder_header_table_size: 4096\n max_encoder_header_table_size: 4096\n max_read_frame_size: 0\n max_upload_buffer_per_connection: 0\n max_upload_buffer_per_stream: 0\n permit_prohibited_cipher_suites: true\n idle_timeout: 2s\n read_header_timeout: 1s\n read_timeout: 1s\n shutdown_duration: 5s\n write_timeout: 1m\n mode: REST\n network: tcp\n probe_wait_time: 3s\n restart: true\n socket_option:\n ip_recover_destination_addr: false\n ip_transparent: false\n reuse_addr: true\n reuse_port: true\n tcp_cork: true\n tcp_defer_accept: false\n tcp_fast_open: false\n tcp_no_delay: false\n tcp_quick_ack: false\n socket_path: \"\"\n startup_strategy:\n - liveness\n - pprof\n - grpc\n - readiness\n shutdown_strategy:\n - readiness\n - grpc\n - pprof\n - liveness\n full_shutdown_duration: 600s\n tls:\n ca: /path/to/ca\n cert: /path/to/cert\n enabled: false\n insecure_skip_verify: false\n key: /path/to/key\nobservability:\n enabled: false\n otlp:\n collector_endpoint: \"\"\n trace_batch_timeout: \"1s\"\n trace_export_timeout: \"1m\"\n trace_max_export_batch_size: 1024\n trace_max_queue_size: 256\n metrics_export_interval: \"1s\"\n metrics_export_timeout: \"1m\"\n attribute:\n namespace: \"_MY_POD_NAMESPACE_\"\n pod_name: \"_MY_POD_NAME_\"\n node_name: \"_MY_NODE_NAME_\"\n service_name: \"vald-index-operator\"\n metrics:\n enable_cgo: true\n enable_goroutine: true\n enable_memory: true\n enable_version_info: true\n version_info_labels:\n - vald_version\n - server_name\n - git_commit\n - build_time\n - go_version\n - go_os\n - go_arch\n - algorithm_info\n trace:\n enabled: false\noperator:\n namespace: _MY_POD_NAMESPACE_\n agent_name: vald-agent\n agent_namespace: \n rotator_name: vald-readreplica-rotate\n target_read_replica_id_annotations_key: vald.vdaas.org/target-read-replica-id\n rotation_job_concurrency: 2\n read_replica_enabled: false\n read_replica_label_key: vald-readreplica-id\n job_templates:\n rotate:\n apiVersion: batch/v1\n kind: Job\n metadata:\n name: vald-readreplica-rotate\n labels:\n app: vald-readreplica-rotate\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-readreplica-rotate\n app.kubernetes.io/version: v1.7.13\n spec:\n ttlSecondsAfterFinished: 86400\n template:\n metadata:\n labels:\n app: vald-readreplica-rotate\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-readreplica-rotate\n app.kubernetes.io/version: v1.7.13\n annotations:\n pyroscope.io/scrape: \"true\"\n pyroscope.io/application-name: vald-readreplica-rotate\n pyroscope.io/profile-cpu-enabled: \"true\"\n pyroscope.io/profile-mem-enabled: \"true\"\n pyroscope.io/port: \"6060\"\n spec:\n containers:\n - name: vald-readreplica-rotate\n image: \"vdaas/vald-readreplica-rotate:nightly\"\n imagePullPolicy: Always\n volumeMounts:\n - name: vald-readreplica-rotate-config\n mountPath: /etc/server/\n livenessProbe:\n failureThreshold: 2\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n readinessProbe:\n failureThreshold: 2\n httpGet:\n path: /readiness\n port: readiness\n scheme: HTTP\n initialDelaySeconds: 10\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n startupProbe:\n failureThreshold: 30\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 5\n successThreshold: 1\n timeoutSeconds: 2\n ports:\n - name: liveness\n protocol: TCP\n containerPort: 3000\n - name: readiness\n protocol: TCP\n containerPort: 3001\n - name: grpc\n protocol: TCP\n containerPort: 8081\n - name: pprof\n protocol: TCP\n containerPort: 6060\n securityContext:\n allowPrivilegeEscalation: false\n capabilities:\n drop:\n - ALL\n privileged: false\n readOnlyRootFilesystem: true\n runAsGroup: 65532\n runAsNonRoot: true\n runAsUser: 65532\n env:\n - name: MY_NODE_NAME\n valueFrom:\n fieldRef:\n fieldPath: spec.nodeName\n - name: MY_POD_NAME\n valueFrom:\n fieldRef:\n fieldPath: metadata.name\n - name: MY_POD_NAMESPACE\n valueFrom:\n fieldRef:\n fieldPath: metadata.namespace\n - name: TARGET_READREPLICA_ID_RELEASE_NAME_DEFAULT_VALD\n valueFrom:\n fieldRef:\n fieldPath: metadata.annotations['vald.vdaas.org/target-read-replica-id']\n securityContext:\n fsGroup: 65532\n fsGroupChangePolicy: OnRootMismatch\n runAsGroup: 65532\n runAsNonRoot: true\n runAsUser: 65532\n restartPolicy: OnFailure\n volumes:\n - name: vald-readreplica-rotate-config\n configMap:\n defaultMode: 420\n name: vald-readreplica-rotate-config\n serviceAccountName: vald-readreplica-rotate\n creation:\n apiVersion: batch/v1\n kind: Job\n metadata:\n name: vald-index-creation\n labels:\n app: vald-index-creation\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-index-creation\n app.kubernetes.io/version: v1.7.13\n spec:\n ttlSecondsAfterFinished: 86400\n template:\n metadata:\n labels:\n app: vald-index-creation\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-index-creation\n app.kubernetes.io/version: v1.7.13\n annotations:\n pyroscope.io/scrape: \"true\"\n pyroscope.io/application-name: vald-index-creation\n pyroscope.io/profile-cpu-enabled: \"true\"\n pyroscope.io/profile-mem-enabled: \"true\"\n pyroscope.io/port: \"6060\"\n spec:\n initContainers:\n - name: wait-for-agent\n image: busybox:stable\n command:\n - /bin/sh\n - -e\n - -c\n - |\n until [ \"$(wget --server-response --spider --quiet http://vald-agent.default.svc.cluster.local:3001/readiness 2>&1 | awk 'NR==1{print $2}')\" == \"200\" ]; do\n echo \"waiting for agent to be ready...\"\n sleep 2;\n done\n - name: wait-for-discoverer\n image: busybox:stable\n command:\n - /bin/sh\n - -e\n - -c\n - |\n until [ \"$(wget --server-response --spider --quiet http://vald-discoverer.default.svc.cluster.local:3001/readiness 2>&1 | awk 'NR==1{print $2}')\" == \"200\" ]; do\n echo \"waiting for discoverer to be ready...\"\n sleep 2;\n done\n containers:\n - name: vald-index-creation\n image: \"vdaas/vald-index-creation:nightly\"\n imagePullPolicy: Always\n volumeMounts:\n - name: vald-index-creation-config\n mountPath: /etc/server/\n livenessProbe:\n failureThreshold: 2\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n readinessProbe:\n failureThreshold: 2\n httpGet:\n path: /readiness\n port: readiness\n scheme: HTTP\n initialDelaySeconds: 10\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n startupProbe:\n failureThreshold: 30\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 5\n successThreshold: 1\n timeoutSeconds: 2\n ports:\n - name: liveness\n protocol: TCP\n containerPort: 3000\n - name: readiness\n protocol: TCP\n containerPort: 3001\n - name: grpc\n protocol: TCP\n containerPort: 8081\n - name: pprof\n protocol: TCP\n containerPort: 6060\n env:\n - name: MY_NODE_NAME\n valueFrom:\n fieldRef:\n fieldPath: spec.nodeName\n - name: MY_POD_NAME\n valueFrom:\n fieldRef:\n fieldPath: metadata.name\n - name: MY_POD_NAMESPACE\n valueFrom:\n fieldRef:\n fieldPath: metadata.namespace\n restartPolicy: OnFailure\n volumes:\n - name: vald-index-creation-config\n configMap:\n defaultMode: 420\n name: vald-index-creation-config\n save:\n apiVersion: batch/v1\n kind: Job\n metadata:\n name: vald-index-save\n labels:\n app: vald-index-save\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-index-save\n app.kubernetes.io/version: v1.7.13\n spec:\n ttlSecondsAfterFinished: 86400\n template:\n metadata:\n labels:\n app: vald-index-save\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-index-save\n app.kubernetes.io/version: v1.7.13\n annotations:\n pyroscope.io/scrape: \"true\"\n pyroscope.io/application-name: vald-index-save\n pyroscope.io/profile-cpu-enabled: \"true\"\n pyroscope.io/profile-mem-enabled: \"true\"\n pyroscope.io/port: \"6060\"\n spec:\n initContainers:\n - name: wait-for-agent\n image: busybox:stable\n command:\n - /bin/sh\n - -e\n - -c\n - |\n until [ \"$(wget --server-response --spider --quiet http://vald-agent.default.svc.cluster.local:3001/readiness 2>&1 | awk 'NR==1{print $2}')\" == \"200\" ]; do\n echo \"waiting for agent to be ready...\"\n sleep 2;\n done\n - name: wait-for-discoverer\n image: busybox:stable\n command:\n - /bin/sh\n - -e\n - -c\n - |\n until [ \"$(wget --server-response --spider --quiet http://vald-discoverer.default.svc.cluster.local:3001/readiness 2>&1 | awk 'NR==1{print $2}')\" == \"200\" ]; do\n echo \"waiting for discoverer to be ready...\"\n sleep 2;\n done\n containers:\n - name: vald-index-save\n image: \"vdaas/vald-index-save:nightly\"\n imagePullPolicy: Always\n volumeMounts:\n - name: vald-index-save-config\n mountPath: /etc/server/\n livenessProbe:\n failureThreshold: 2\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n readinessProbe:\n failureThreshold: 2\n httpGet:\n path: /readiness\n port: readiness\n scheme: HTTP\n initialDelaySeconds: 10\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n startupProbe:\n failureThreshold: 30\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 5\n successThreshold: 1\n timeoutSeconds: 2\n ports:\n - name: liveness\n protocol: TCP\n containerPort: 3000\n - name: readiness\n protocol: TCP\n containerPort: 3001\n - name: grpc\n protocol: TCP\n containerPort: 8081\n - name: pprof\n protocol: TCP\n containerPort: 6060\n env:\n - name: MY_NODE_NAME\n valueFrom:\n fieldRef:\n fieldPath: spec.nodeName\n - name: MY_POD_NAME\n valueFrom:\n fieldRef:\n fieldPath: metadata.name\n - name: MY_POD_NAMESPACE\n valueFrom:\n fieldRef:\n fieldPath: metadata.namespace\n restartPolicy: OnFailure\n volumes:\n - name: vald-index-save-config\n configMap:\n defaultMode: 420\n name: vald-index-save-config\n correction:\n apiVersion: batch/v1\n kind: Job\n metadata:\n name: vald-index-correction\n labels:\n app: vald-index-correction\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-index-correction\n app.kubernetes.io/version: v1.7.13\n spec:\n ttlSecondsAfterFinished: 86400\n template:\n metadata:\n labels:\n app: vald-index-correction\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-index-correction\n app.kubernetes.io/version: v1.7.13\n annotations:\n pyroscope.io/scrape: \"true\"\n pyroscope.io/application-name: vald-index-correction\n pyroscope.io/profile-cpu-enabled: \"true\"\n pyroscope.io/profile-mem-enabled: \"true\"\n pyroscope.io/port: \"6060\"\n spec:\n initContainers:\n - name: wait-for-agent\n image: busybox:stable\n command:\n - /bin/sh\n - -e\n - -c\n - |\n until [ \"$(wget --server-response --spider --quiet http://vald-agent.default.svc.cluster.local:3001/readiness 2>&1 | awk 'NR==1{print $2}')\" == \"200\" ]; do\n echo \"waiting for agent to be ready...\"\n sleep 2;\n done\n - name: wait-for-discoverer\n image: busybox:stable\n command:\n - /bin/sh\n - -e\n - -c\n - |\n until [ \"$(wget --server-response --spider --quiet http://vald-discoverer.default.svc.cluster.local:3001/readiness 2>&1 | awk 'NR==1{print $2}')\" == \"200\" ]; do\n echo \"waiting for discoverer to be ready...\"\n sleep 2;\n done\n containers:\n - name: vald-index-correction\n image: \"vdaas/vald-index-correction:nightly\"\n imagePullPolicy: Always\n volumeMounts:\n - name: vald-index-correction-config\n mountPath: /etc/server/\n livenessProbe:\n failureThreshold: 2\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n readinessProbe:\n failureThreshold: 2\n httpGet:\n path: /readiness\n port: readiness\n scheme: HTTP\n initialDelaySeconds: 10\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n startupProbe:\n failureThreshold: 30\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 5\n successThreshold: 1\n timeoutSeconds: 2\n ports:\n - name: liveness\n protocol: TCP\n containerPort: 3000\n - name: readiness\n protocol: TCP\n containerPort: 3001\n - name: grpc\n protocol: TCP\n containerPort: 8081\n - name: pprof\n protocol: TCP\n containerPort: 6060\n env:\n - name: MY_NODE_NAME\n valueFrom:\n fieldRef:\n fieldPath: spec.nodeName\n - name: MY_POD_NAME\n valueFrom:\n fieldRef:\n fieldPath: metadata.name\n - name: MY_POD_NAMESPACE\n valueFrom:\n fieldRef:\n fieldPath: metadata.namespace\n restartPolicy: OnFailure\n volumes:\n - name: vald-index-correction-config\n configMap:\n defaultMode: 420\n name: vald-index-correction-config\n"
+ config.yaml: "---\nversion: v0.0.0\ntime_zone: UTC\nlogging:\n format: raw\n level: debug\n logger: glg\nserver_config:\n servers:\n - name: grpc\n host: 0.0.0.0\n port: 8081\n grpc:\n bidirectional_stream_concurrency: 20\n connection_timeout: \"\"\n enable_admin: true\n enable_reflection: true\n header_table_size: 0\n initial_conn_window_size: 2097152\n initial_window_size: 1048576\n interceptors:\n - RecoverInterceptor\n keepalive:\n max_conn_age: \"\"\n max_conn_age_grace: \"\"\n max_conn_idle: \"\"\n min_time: 10m\n permit_without_stream: false\n time: 3h\n timeout: 60s\n max_header_list_size: 0\n max_receive_message_size: 0\n max_send_message_size: 0\n read_buffer_size: 0\n write_buffer_size: 0\n mode: GRPC\n network: tcp\n probe_wait_time: 3s\n restart: true\n socket_option:\n ip_recover_destination_addr: false\n ip_transparent: false\n reuse_addr: true\n reuse_port: true\n tcp_cork: false\n tcp_defer_accept: false\n tcp_fast_open: false\n tcp_no_delay: false\n tcp_quick_ack: false\n socket_path: \"\"\n health_check_servers:\n - name: liveness\n host: 0.0.0.0\n port: 3000\n http:\n handler_timeout: \"\"\n http2:\n enabled: false\n handler_limit: 0\n max_concurrent_streams: 0\n max_decoder_header_table_size: 4096\n max_encoder_header_table_size: 4096\n max_read_frame_size: 0\n max_upload_buffer_per_connection: 0\n max_upload_buffer_per_stream: 0\n permit_prohibited_cipher_suites: true\n idle_timeout: \"\"\n read_header_timeout: \"\"\n read_timeout: \"\"\n shutdown_duration: 5s\n write_timeout: \"\"\n mode: REST\n network: tcp\n probe_wait_time: 3s\n restart: true\n socket_option:\n ip_recover_destination_addr: false\n ip_transparent: false\n reuse_addr: true\n reuse_port: true\n tcp_cork: false\n tcp_defer_accept: false\n tcp_fast_open: true\n tcp_no_delay: true\n tcp_quick_ack: true\n socket_path: \"\"\n - name: readiness\n host: 0.0.0.0\n port: 3001\n http:\n handler_timeout: \"\"\n http2:\n enabled: false\n handler_limit: 0\n max_concurrent_streams: 0\n max_decoder_header_table_size: 4096\n max_encoder_header_table_size: 4096\n max_read_frame_size: 0\n max_upload_buffer_per_connection: 0\n max_upload_buffer_per_stream: 0\n permit_prohibited_cipher_suites: true\n idle_timeout: \"\"\n read_header_timeout: \"\"\n read_timeout: \"\"\n shutdown_duration: 0s\n write_timeout: \"\"\n mode: REST\n network: tcp\n probe_wait_time: 3s\n restart: true\n socket_option:\n ip_recover_destination_addr: false\n ip_transparent: false\n reuse_addr: true\n reuse_port: true\n tcp_cork: false\n tcp_defer_accept: false\n tcp_fast_open: true\n tcp_no_delay: true\n tcp_quick_ack: true\n socket_path: \"\"\n metrics_servers:\n - name: pprof\n host: 0.0.0.0\n port: 6060\n http:\n handler_timeout: 5s\n http2:\n enabled: false\n handler_limit: 0\n max_concurrent_streams: 0\n max_decoder_header_table_size: 4096\n max_encoder_header_table_size: 4096\n max_read_frame_size: 0\n max_upload_buffer_per_connection: 0\n max_upload_buffer_per_stream: 0\n permit_prohibited_cipher_suites: true\n idle_timeout: 2s\n read_header_timeout: 1s\n read_timeout: 1s\n shutdown_duration: 5s\n write_timeout: 1m\n mode: REST\n network: tcp\n probe_wait_time: 3s\n restart: true\n socket_option:\n ip_recover_destination_addr: false\n ip_transparent: false\n reuse_addr: true\n reuse_port: true\n tcp_cork: true\n tcp_defer_accept: false\n tcp_fast_open: false\n tcp_no_delay: false\n tcp_quick_ack: false\n socket_path: \"\"\n startup_strategy:\n - liveness\n - pprof\n - grpc\n - readiness\n shutdown_strategy:\n - readiness\n - grpc\n - pprof\n - liveness\n full_shutdown_duration: 600s\n tls:\n ca: /path/to/ca\n cert: /path/to/cert\n enabled: false\n insecure_skip_verify: false\n key: /path/to/key\nobservability:\n enabled: false\n otlp:\n collector_endpoint: \"\"\n trace_batch_timeout: \"1s\"\n trace_export_timeout: \"1m\"\n trace_max_export_batch_size: 1024\n trace_max_queue_size: 256\n metrics_export_interval: \"1s\"\n metrics_export_timeout: \"1m\"\n attribute:\n namespace: \"_MY_POD_NAMESPACE_\"\n pod_name: \"_MY_POD_NAME_\"\n node_name: \"_MY_NODE_NAME_\"\n service_name: \"vald-index-operator\"\n metrics:\n enable_cgo: true\n enable_goroutine: true\n enable_memory: true\n enable_version_info: true\n version_info_labels:\n - vald_version\n - server_name\n - git_commit\n - build_time\n - go_version\n - go_os\n - go_arch\n - algorithm_info\n trace:\n enabled: false\noperator:\n namespace: _MY_POD_NAMESPACE_\n agent_name: vald-agent\n agent_namespace: \n rotator_name: vald-readreplica-rotate\n target_read_replica_id_annotations_key: vald.vdaas.org/target-read-replica-id\n rotation_job_concurrency: 2\n read_replica_enabled: false\n read_replica_label_key: vald-readreplica-id\n job_templates:\n rotate:\n apiVersion: batch/v1\n kind: Job\n metadata:\n name: vald-readreplica-rotate\n labels:\n app: vald-readreplica-rotate\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-readreplica-rotate\n app.kubernetes.io/version: v1.7.13\n spec:\n ttlSecondsAfterFinished: 86400\n template:\n metadata:\n labels:\n app: vald-readreplica-rotate\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-readreplica-rotate\n app.kubernetes.io/version: v1.7.13\n annotations:\n pyroscope.io/scrape: \"true\"\n pyroscope.io/application-name: vald-readreplica-rotate\n pyroscope.io/profile-cpu-enabled: \"true\"\n pyroscope.io/profile-mem-enabled: \"true\"\n pyroscope.io/port: \"6060\"\n spec:\n containers:\n - name: vald-readreplica-rotate\n image: \"vdaas/vald-readreplica-rotate:nightly\"\n imagePullPolicy: Always\n volumeMounts:\n - name: vald-readreplica-rotate-config\n mountPath: /etc/server/\n livenessProbe:\n failureThreshold: 2\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n readinessProbe:\n failureThreshold: 2\n httpGet:\n path: /readiness\n port: readiness\n scheme: HTTP\n initialDelaySeconds: 10\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n startupProbe:\n failureThreshold: 30\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 5\n successThreshold: 1\n timeoutSeconds: 2\n ports:\n - name: liveness\n protocol: TCP\n containerPort: 3000\n - name: readiness\n protocol: TCP\n containerPort: 3001\n - name: grpc\n protocol: TCP\n containerPort: 8081\n - name: pprof\n protocol: TCP\n containerPort: 6060\n securityContext:\n allowPrivilegeEscalation: false\n capabilities:\n drop:\n - ALL\n privileged: false\n readOnlyRootFilesystem: true\n runAsGroup: 65532\n runAsNonRoot: true\n runAsUser: 65532\n env:\n - name: MY_NODE_NAME\n valueFrom:\n fieldRef:\n fieldPath: spec.nodeName\n - name: MY_POD_NAME\n valueFrom:\n fieldRef:\n fieldPath: metadata.name\n - name: MY_POD_NAMESPACE\n valueFrom:\n fieldRef:\n fieldPath: metadata.namespace\n - name: TARGET_READREPLICA_ID_RELEASE_NAME_DEFAULT_VALD\n valueFrom:\n fieldRef:\n fieldPath: metadata.annotations['vald.vdaas.org/target-read-replica-id']\n securityContext:\n fsGroup: 65532\n fsGroupChangePolicy: OnRootMismatch\n runAsGroup: 65532\n runAsNonRoot: true\n runAsUser: 65532\n restartPolicy: OnFailure\n volumes:\n - name: vald-readreplica-rotate-config\n configMap:\n defaultMode: 420\n name: vald-readreplica-rotate-config\n serviceAccountName: vald-readreplica-rotate\n creation:\n apiVersion: batch/v1\n kind: Job\n metadata:\n name: vald-index-creation\n labels:\n app: vald-index-creation\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-index-creation\n app.kubernetes.io/version: v1.7.13\n spec:\n ttlSecondsAfterFinished: 86400\n template:\n metadata:\n labels:\n app: vald-index-creation\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-index-creation\n app.kubernetes.io/version: v1.7.13\n annotations:\n pyroscope.io/scrape: \"true\"\n pyroscope.io/application-name: vald-index-creation\n pyroscope.io/profile-cpu-enabled: \"true\"\n pyroscope.io/profile-mem-enabled: \"true\"\n pyroscope.io/port: \"6060\"\n spec:\n initContainers:\n - name: wait-for-agent\n image: busybox:stable\n imagePullPolicy: Always\n command:\n - /bin/sh\n - -e\n - -c\n - |\n until [ \"$(wget --server-response --spider --quiet http://vald-agent.default.svc.cluster.local:3001/readiness 2>&1 | awk 'NR==1{print $2}')\" == \"200\" ]; do\n echo \"waiting for agent to be ready...\"\n sleep 2;\n done\n - name: wait-for-discoverer\n image: busybox:stable\n imagePullPolicy: Always\n command:\n - /bin/sh\n - -e\n - -c\n - |\n until [ \"$(wget --server-response --spider --quiet http://vald-discoverer.default.svc.cluster.local:3001/readiness 2>&1 | awk 'NR==1{print $2}')\" == \"200\" ]; do\n echo \"waiting for discoverer to be ready...\"\n sleep 2;\n done\n containers:\n - name: vald-index-creation\n image: \"vdaas/vald-index-creation:nightly\"\n imagePullPolicy: Always\n volumeMounts:\n - name: vald-index-creation-config\n mountPath: /etc/server/\n livenessProbe:\n failureThreshold: 2\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n readinessProbe:\n failureThreshold: 2\n httpGet:\n path: /readiness\n port: readiness\n scheme: HTTP\n initialDelaySeconds: 10\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n startupProbe:\n failureThreshold: 30\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 5\n successThreshold: 1\n timeoutSeconds: 2\n ports:\n - name: liveness\n protocol: TCP\n containerPort: 3000\n - name: readiness\n protocol: TCP\n containerPort: 3001\n - name: grpc\n protocol: TCP\n containerPort: 8081\n - name: pprof\n protocol: TCP\n containerPort: 6060\n env:\n - name: MY_NODE_NAME\n valueFrom:\n fieldRef:\n fieldPath: spec.nodeName\n - name: MY_POD_NAME\n valueFrom:\n fieldRef:\n fieldPath: metadata.name\n - name: MY_POD_NAMESPACE\n valueFrom:\n fieldRef:\n fieldPath: metadata.namespace\n restartPolicy: OnFailure\n volumes:\n - name: vald-index-creation-config\n configMap:\n defaultMode: 420\n name: vald-index-creation-config\n save:\n apiVersion: batch/v1\n kind: Job\n metadata:\n name: vald-index-save\n labels:\n app: vald-index-save\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-index-save\n app.kubernetes.io/version: v1.7.13\n spec:\n ttlSecondsAfterFinished: 86400\n template:\n metadata:\n labels:\n app: vald-index-save\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-index-save\n app.kubernetes.io/version: v1.7.13\n annotations:\n pyroscope.io/scrape: \"true\"\n pyroscope.io/application-name: vald-index-save\n pyroscope.io/profile-cpu-enabled: \"true\"\n pyroscope.io/profile-mem-enabled: \"true\"\n pyroscope.io/port: \"6060\"\n spec:\n initContainers:\n - name: wait-for-agent\n image: busybox:stable\n imagePullPolicy: Always\n command:\n - /bin/sh\n - -e\n - -c\n - |\n until [ \"$(wget --server-response --spider --quiet http://vald-agent.default.svc.cluster.local:3001/readiness 2>&1 | awk 'NR==1{print $2}')\" == \"200\" ]; do\n echo \"waiting for agent to be ready...\"\n sleep 2;\n done\n - name: wait-for-discoverer\n image: busybox:stable\n imagePullPolicy: Always\n command:\n - /bin/sh\n - -e\n - -c\n - |\n until [ \"$(wget --server-response --spider --quiet http://vald-discoverer.default.svc.cluster.local:3001/readiness 2>&1 | awk 'NR==1{print $2}')\" == \"200\" ]; do\n echo \"waiting for discoverer to be ready...\"\n sleep 2;\n done\n containers:\n - name: vald-index-save\n image: \"vdaas/vald-index-save:nightly\"\n imagePullPolicy: Always\n volumeMounts:\n - name: vald-index-save-config\n mountPath: /etc/server/\n livenessProbe:\n failureThreshold: 2\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n readinessProbe:\n failureThreshold: 2\n httpGet:\n path: /readiness\n port: readiness\n scheme: HTTP\n initialDelaySeconds: 10\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n startupProbe:\n failureThreshold: 30\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 5\n successThreshold: 1\n timeoutSeconds: 2\n ports:\n - name: liveness\n protocol: TCP\n containerPort: 3000\n - name: readiness\n protocol: TCP\n containerPort: 3001\n - name: grpc\n protocol: TCP\n containerPort: 8081\n - name: pprof\n protocol: TCP\n containerPort: 6060\n env:\n - name: MY_NODE_NAME\n valueFrom:\n fieldRef:\n fieldPath: spec.nodeName\n - name: MY_POD_NAME\n valueFrom:\n fieldRef:\n fieldPath: metadata.name\n - name: MY_POD_NAMESPACE\n valueFrom:\n fieldRef:\n fieldPath: metadata.namespace\n restartPolicy: OnFailure\n volumes:\n - name: vald-index-save-config\n configMap:\n defaultMode: 420\n name: vald-index-save-config\n correction:\n apiVersion: batch/v1\n kind: Job\n metadata:\n name: vald-index-correction\n labels:\n app: vald-index-correction\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-index-correction\n app.kubernetes.io/version: v1.7.13\n spec:\n ttlSecondsAfterFinished: 86400\n template:\n metadata:\n labels:\n app: vald-index-correction\n app.kubernetes.io/name: vald\n helm.sh/chart: vald-v1.7.13\n app.kubernetes.io/managed-by: Helm\n app.kubernetes.io/instance: release-name\n app.kubernetes.io/component: vald-index-correction\n app.kubernetes.io/version: v1.7.13\n annotations:\n pyroscope.io/scrape: \"true\"\n pyroscope.io/application-name: vald-index-correction\n pyroscope.io/profile-cpu-enabled: \"true\"\n pyroscope.io/profile-mem-enabled: \"true\"\n pyroscope.io/port: \"6060\"\n spec:\n initContainers:\n - name: wait-for-agent\n image: busybox:stable\n imagePullPolicy: Always\n command:\n - /bin/sh\n - -e\n - -c\n - |\n until [ \"$(wget --server-response --spider --quiet http://vald-agent.default.svc.cluster.local:3001/readiness 2>&1 | awk 'NR==1{print $2}')\" == \"200\" ]; do\n echo \"waiting for agent to be ready...\"\n sleep 2;\n done\n - name: wait-for-discoverer\n image: busybox:stable\n imagePullPolicy: Always\n command:\n - /bin/sh\n - -e\n - -c\n - |\n until [ \"$(wget --server-response --spider --quiet http://vald-discoverer.default.svc.cluster.local:3001/readiness 2>&1 | awk 'NR==1{print $2}')\" == \"200\" ]; do\n echo \"waiting for discoverer to be ready...\"\n sleep 2;\n done\n containers:\n - name: vald-index-correction\n image: \"vdaas/vald-index-correction:nightly\"\n imagePullPolicy: Always\n volumeMounts:\n - name: vald-index-correction-config\n mountPath: /etc/server/\n livenessProbe:\n failureThreshold: 2\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n readinessProbe:\n failureThreshold: 2\n httpGet:\n path: /readiness\n port: readiness\n scheme: HTTP\n initialDelaySeconds: 10\n periodSeconds: 3\n successThreshold: 1\n timeoutSeconds: 2\n startupProbe:\n failureThreshold: 30\n httpGet:\n path: /liveness\n port: liveness\n scheme: HTTP\n initialDelaySeconds: 5\n periodSeconds: 5\n successThreshold: 1\n timeoutSeconds: 2\n ports:\n - name: liveness\n protocol: TCP\n containerPort: 3000\n - name: readiness\n protocol: TCP\n containerPort: 3001\n - name: grpc\n protocol: TCP\n containerPort: 8081\n - name: pprof\n protocol: TCP\n containerPort: 6060\n env:\n - name: MY_NODE_NAME\n valueFrom:\n fieldRef:\n fieldPath: spec.nodeName\n - name: MY_POD_NAME\n valueFrom:\n fieldRef:\n fieldPath: metadata.name\n - name: MY_POD_NAMESPACE\n valueFrom:\n fieldRef:\n fieldPath: metadata.namespace\n restartPolicy: OnFailure\n volumes:\n - name: vald-index-correction-config\n configMap:\n defaultMode: 420\n name: vald-index-correction-config\n"
diff --git a/k8s/index/operator/deployment.yaml b/k8s/index/operator/deployment.yaml
index ccd69b7125..643e02e9a8 100644
--- a/k8s/index/operator/deployment.yaml
+++ b/k8s/index/operator/deployment.yaml
@@ -46,7 +46,7 @@ spec:
app.kubernetes.io/instance: release-name
app.kubernetes.io/component: operator
annotations:
- checksum/configmap: c9c0a97792fa0594fb6ae3946f4d7294a9e2fbc782b48b82272db25754ddc5ff
+ checksum/configmap: ebb81f8440c4bef18e392f9dcc1023bb0fb52fff599e656767a0c8ac6e904a42
pyroscope.io/scrape: "true"
pyroscope.io/application-name: vald-index-operator
pyroscope.io/profile-cpu-enabled: "true"
diff --git a/k8s/manager/index/deployment.yaml b/k8s/manager/index/deployment.yaml
index a56659a1c4..b9b217bf1b 100644
--- a/k8s/manager/index/deployment.yaml
+++ b/k8s/manager/index/deployment.yaml
@@ -59,6 +59,7 @@ spec:
initContainers:
- name: wait-for-agent
image: busybox:stable
+ imagePullPolicy: Always
command:
- /bin/sh
- -e
@@ -70,6 +71,7 @@ spec:
done
- name: wait-for-discoverer
image: busybox:stable
+ imagePullPolicy: Always
command:
- /bin/sh
- -e
diff --git a/k8s/metrics/loki/loki.yaml b/k8s/metrics/loki/loki.yaml
index 6bac578c12..e5eba17f47 100644
--- a/k8s/metrics/loki/loki.yaml
+++ b/k8s/metrics/loki/loki.yaml
@@ -31,7 +31,7 @@ spec:
- args:
- -config.file=/etc/loki/loki.yaml
image: grafana/loki:2.0.0
- imagePullPolicy: IfNotPresent
+ imagePullPolicy: Always
livenessProbe:
httpGet:
path: /ready
diff --git a/k8s/metrics/loki/promtail.yaml b/k8s/metrics/loki/promtail.yaml
index cfbf993c9d..39607dbc45 100644
--- a/k8s/metrics/loki/promtail.yaml
+++ b/k8s/metrics/loki/promtail.yaml
@@ -40,7 +40,7 @@ spec:
fieldRef:
fieldPath: spec.nodeName
image: grafana/promtail:1.5.0
- imagePullPolicy: IfNotPresent
+ imagePullPolicy: Always
name: promtail
ports:
- containerPort: 80
diff --git a/k8s/metrics/profefe/cronjob.yaml b/k8s/metrics/profefe/cronjob.yaml
index abc703fe07..959bb5a5cf 100644
--- a/k8s/metrics/profefe/cronjob.yaml
+++ b/k8s/metrics/profefe/cronjob.yaml
@@ -30,7 +30,7 @@ spec:
- --profefe-hostport
- http://profefe:10100
image: profefe/kprofefe:latest
- imagePullPolicy: IfNotPresent
+ imagePullPolicy: Always
name: kprofefe
restartPolicy: Never
serviceAccount: kprofefe
diff --git a/k8s/metrics/pyroscope/base/deployment.yaml b/k8s/metrics/pyroscope/base/deployment.yaml
index e1cb0879b1..6fa0a03314 100644
--- a/k8s/metrics/pyroscope/base/deployment.yaml
+++ b/k8s/metrics/pyroscope/base/deployment.yaml
@@ -48,7 +48,7 @@ spec:
- "/tmp/config.yaml"
securityContext: {}
image: "pyroscope/pyroscope:latest"
- imagePullPolicy: IfNotPresent
+ imagePullPolicy: Always
ports:
- name: api
containerPort: 4040
diff --git a/k8s/metrics/tempo/tempo.yaml b/k8s/metrics/tempo/tempo.yaml
index d88bb1d8ef..7e6fad25af 100644
--- a/k8s/metrics/tempo/tempo.yaml
+++ b/k8s/metrics/tempo/tempo.yaml
@@ -73,7 +73,7 @@ spec:
- name: JAEGER_AGENT_PORT
value: ""
image: grafana/tempo:latest
- imagePullPolicy: IfNotPresent
+ imagePullPolicy: Always
name: tempo
ports:
- containerPort: 3100
@@ -91,7 +91,7 @@ spec:
- name: JAEGER_AGENT_PORT
value: ""
image: grafana/tempo-query:latest
- imagePullPolicy: IfNotPresent
+ imagePullPolicy: Always
name: tempo-query
ports:
- containerPort: 16686
diff --git a/pkg/gateway/lb/handler/grpc/handler.go b/pkg/gateway/lb/handler/grpc/handler.go
index 7d663e0604..f6ef4fdb42 100644
--- a/pkg/gateway/lb/handler/grpc/handler.go
+++ b/pkg/gateway/lb/handler/grpc/handler.go
@@ -1748,7 +1748,7 @@ func (s *server) Update(
}
}
var now int64
- if req.GetConfig().GetTimestamp() >= 0 {
+ if req.GetConfig().GetTimestamp() > 0 {
now = req.GetConfig().GetTimestamp()
} else {
now = time.Now().UnixNano()
diff --git a/pkg/index/job/save/service/indexer_test.go b/pkg/index/job/save/service/indexer_test.go
index b15437a155..b1d9881625 100644
--- a/pkg/index/job/save/service/indexer_test.go
+++ b/pkg/index/job/save/service/indexer_test.go
@@ -53,7 +53,7 @@ func Test_index_Start(t *testing.T) {
}
defaultCheckFunc := func(w want, err error) error {
if !errors.Is(err, w.err) {
- return errors.Errorf("got_error: \"%#v\",\n\t\t\t\twant: \"%#v\"", err, w.err)
+ return errors.Errorf("got_error: \"%s\",\n\t\t\t\twant: \"%s\"", err.Error(), w.err.Error())
}
return nil
}
diff --git a/rust/Cargo.lock b/rust/Cargo.lock
index 9be8b49b26..7f3a192f22 100644
--- a/rust/Cargo.lock
+++ b/rust/Cargo.lock
@@ -24,12 +24,12 @@ dependencies = [
"algorithm",
"anyhow",
"cargo",
- "prost 0.13.2",
+ "prost 0.13.3",
"prost-types",
"proto",
"tokio",
"tokio-stream",
- "tonic 0.12.2",
+ "tonic 0.12.3",
"tonic-types",
]
@@ -62,7 +62,7 @@ dependencies = [
"faiss",
"ngt",
"proto",
- "tonic 0.12.2",
+ "tonic 0.12.3",
]
[[package]]
@@ -132,9 +132,9 @@ dependencies = [
[[package]]
name = "anyhow"
-version = "1.0.88"
+version = "1.0.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e1496f8fb1fbf272686b8d37f523dab3e4a7443300055e74cdaa449f3114356"
+checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6"
[[package]]
name = "arc-swap"
@@ -166,9 +166,9 @@ dependencies = [
[[package]]
name = "async-trait"
-version = "0.1.82"
+version = "0.1.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1"
+checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"
dependencies = [
"proc-macro2",
"quote",
@@ -183,9 +183,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]]
name = "autocfg"
-version = "1.3.0"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "axum"
@@ -210,19 +210,19 @@ dependencies = [
"rustversion",
"serde",
"sync_wrapper 0.1.2",
- "tower",
+ "tower 0.4.13",
"tower-layer",
"tower-service",
]
[[package]]
name = "axum"
-version = "0.7.5"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf"
+checksum = "8f43644eed690f5374f1af436ecd6aea01cd201f6fbdf0178adaf6907afb2cec"
dependencies = [
"async-trait",
- "axum-core 0.4.3",
+ "axum-core 0.4.4",
"bytes",
"futures-util",
"http 1.1.0",
@@ -237,7 +237,7 @@ dependencies = [
"rustversion",
"serde",
"sync_wrapper 1.0.1",
- "tower",
+ "tower 0.5.1",
"tower-layer",
"tower-service",
]
@@ -261,9 +261,9 @@ dependencies = [
[[package]]
name = "axum-core"
-version = "0.4.3"
+version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3"
+checksum = "5e6b8ba012a258d63c9adfa28b9ddcf66149da6f986c5b5452e629d5ee64bf00"
dependencies = [
"async-trait",
"bytes",
@@ -274,7 +274,7 @@ dependencies = [
"mime",
"pin-project-lite",
"rustversion",
- "sync_wrapper 0.1.2",
+ "sync_wrapper 1.0.1",
"tower-layer",
"tower-service",
]
@@ -382,9 +382,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "bytes"
-version = "1.7.1"
+version = "1.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50"
+checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3"
[[package]]
name = "bytesize"
@@ -565,9 +565,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.1.18"
+version = "1.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476"
+checksum = "9540e661f81799159abee814118cc139a2004b3a3aa3ea37724a1b66530b90e0"
dependencies = [
"jobserver",
"libc",
@@ -582,18 +582,18 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "clap"
-version = "4.5.17"
+version = "4.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac"
+checksum = "b0956a43b323ac1afaffc053ed5c4b7c1f1800bacd1683c353aabbb752515dd3"
dependencies = [
"clap_builder",
]
[[package]]
name = "clap_builder"
-version = "4.5.17"
+version = "4.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73"
+checksum = "4d72166dd41634086d5803a47eb71ae740e61d84709c36f3c34110173db3961b"
dependencies = [
"anstream",
"anstyle",
@@ -784,9 +784,9 @@ dependencies = [
[[package]]
name = "curl-sys"
-version = "0.4.75+curl-8.10.0"
+version = "0.4.76+curl-8.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a4fd752d337342e4314717c0d9b6586b059a120c80029ebe4d49b11fec7875e"
+checksum = "00462dbe9cbb9344e1b2be34d9094d74e3b8aac59a883495b335eafd02e25120"
dependencies = [
"cc",
"libc",
@@ -1035,9 +1035,9 @@ dependencies = [
[[package]]
name = "flate2"
-version = "1.0.33"
+version = "1.0.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253"
+checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0"
dependencies = [
"crc32fast",
"libz-sys",
@@ -2250,9 +2250,9 @@ dependencies = [
[[package]]
name = "hyper-util"
-version = "0.1.8"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba"
+checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b"
dependencies = [
"bytes",
"futures-channel",
@@ -2263,7 +2263,6 @@ dependencies = [
"pin-project-lite",
"socket2",
"tokio",
- "tower",
"tower-service",
"tracing",
]
@@ -2436,9 +2435,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
[[package]]
name = "libc"
-version = "0.2.158"
+version = "0.2.159"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
+checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5"
[[package]]
name = "libdbus-sys"
@@ -2597,9 +2596,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "memmap2"
-version = "0.9.4"
+version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322"
+checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f"
dependencies = [
"libc",
]
@@ -2610,7 +2609,7 @@ version = "0.1.0"
dependencies = [
"proto",
"tokio",
- "tonic 0.12.2",
+ "tonic 0.12.3",
]
[[package]]
@@ -2890,7 +2889,7 @@ dependencies = [
"lazy_static",
"once_cell",
"opentelemetry",
- "ordered-float 4.2.2",
+ "ordered-float 4.3.0",
"percent-encoding",
"rand",
"serde_json",
@@ -2910,9 +2909,9 @@ dependencies = [
[[package]]
name = "ordered-float"
-version = "4.2.2"
+version = "4.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a91171844676f8c7990ce64959210cd2eaef32c2612c50f9fae9f8aaa6065a6"
+checksum = "44d501f1a72f71d3c063a6bbc8f7271fa73aa09fe5d6283b6571e2ed176a2537"
dependencies = [
"num-traits",
]
@@ -3077,9 +3076,9 @@ dependencies = [
[[package]]
name = "pkg-config"
-version = "0.3.30"
+version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2"
[[package]]
name = "powerfmt"
@@ -3135,12 +3134,12 @@ dependencies = [
[[package]]
name = "prost"
-version = "0.13.2"
+version = "0.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b2ecbe40f08db5c006b5764a2645f7f3f141ce756412ac9e1dd6087e6d32995"
+checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f"
dependencies = [
"bytes",
- "prost-derive 0.13.2",
+ "prost-derive 0.13.3",
]
[[package]]
@@ -3158,9 +3157,9 @@ dependencies = [
[[package]]
name = "prost-derive"
-version = "0.13.2"
+version = "0.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acf0c195eebb4af52c752bec4f52f645da98b6e92077a04110c7f349477ae5ac"
+checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5"
dependencies = [
"anyhow",
"itertools 0.13.0",
@@ -3171,11 +3170,11 @@ dependencies = [
[[package]]
name = "prost-types"
-version = "0.13.2"
+version = "0.13.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60caa6738c7369b940c3d49246a8d1749323674c65cb13010134f5c9bad5b519"
+checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670"
dependencies = [
- "prost 0.13.2",
+ "prost 0.13.3",
]
[[package]]
@@ -3183,9 +3182,9 @@ name = "proto"
version = "0.1.0"
dependencies = [
"futures-core",
- "prost 0.13.2",
+ "prost 0.13.3",
"prost-types",
- "tonic 0.12.2",
+ "tonic 0.12.3",
"tonic-types",
]
@@ -3239,9 +3238,9 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.5.4"
+version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853"
+checksum = "355ae415ccd3a04315d3f8246e86d67689ea74d88d915576e1589a351062a13b"
dependencies = [
"bitflags 2.6.0",
]
@@ -3452,9 +3451,9 @@ dependencies = [
[[package]]
name = "security-framework-sys"
-version = "2.11.1"
+version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf"
+checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6"
dependencies = [
"core-foundation-sys",
"libc",
@@ -3533,9 +3532,9 @@ dependencies = [
[[package]]
name = "serde_spanned"
-version = "0.6.7"
+version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
+checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
dependencies = [
"serde",
]
@@ -3762,9 +3761,9 @@ dependencies = [
[[package]]
name = "tar"
-version = "0.4.41"
+version = "0.4.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909"
+checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020"
dependencies = [
"filetime",
"libc",
@@ -3815,18 +3814,18 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "1.0.63"
+version = "1.0.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
+checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.63"
+version = "1.0.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
+checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3"
dependencies = [
"proc-macro2",
"quote",
@@ -3978,9 +3977,9 @@ dependencies = [
[[package]]
name = "toml_edit"
-version = "0.22.20"
+version = "0.22.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d"
+checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
dependencies = [
"indexmap 2.5.0",
"serde",
@@ -4010,7 +4009,7 @@ dependencies = [
"prost 0.12.6",
"tokio",
"tokio-stream",
- "tower",
+ "tower 0.4.13",
"tower-layer",
"tower-service",
"tracing",
@@ -4018,13 +4017,13 @@ dependencies = [
[[package]]
name = "tonic"
-version = "0.12.2"
+version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6f6ba989e4b2c58ae83d862d3a3e27690b6e3ae630d0deb59f3697f32aa88ad"
+checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52"
dependencies = [
"async-stream",
"async-trait",
- "axum 0.7.5",
+ "axum 0.7.6",
"base64 0.22.1",
"bytes",
"h2 0.4.6",
@@ -4036,11 +4035,11 @@ dependencies = [
"hyper-util",
"percent-encoding",
"pin-project",
- "prost 0.13.2",
+ "prost 0.13.3",
"socket2",
"tokio",
"tokio-stream",
- "tower",
+ "tower 0.4.13",
"tower-layer",
"tower-service",
"tracing",
@@ -4048,13 +4047,13 @@ dependencies = [
[[package]]
name = "tonic-types"
-version = "0.12.2"
+version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d967793411bc1a5392accf4731114295f0fd122865d22cde46a8584b03402b2"
+checksum = "0081d8ee0847d01271392a5aebe960a4600f5d4da6c67648a6382a0940f8b367"
dependencies = [
- "prost 0.13.2",
+ "prost 0.13.3",
"prost-types",
- "tonic 0.12.2",
+ "tonic 0.12.3",
]
[[package]]
@@ -4077,6 +4076,20 @@ dependencies = [
"tracing",
]
+[[package]]
+name = "tower"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project-lite",
+ "sync_wrapper 0.1.2",
+ "tower-layer",
+ "tower-service",
+]
+
[[package]]
name = "tower-layer"
version = "0.3.3"
@@ -4214,24 +4227,24 @@ checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
[[package]]
name = "unicode-normalization"
-version = "0.1.23"
+version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956"
dependencies = [
"tinyvec",
]
[[package]]
name = "unicode-width"
-version = "0.1.13"
+version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
+checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
[[package]]
name = "unicode-xid"
-version = "0.2.5"
+version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a"
+checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
[[package]]
name = "url"
@@ -4551,9 +4564,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "winnow"
-version = "0.6.18"
+version = "0.6.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f"
+checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b"
dependencies = [
"memchr",
]
diff --git a/tests/e2e/crud/crud_faiss_test.go b/tests/e2e/crud/crud_faiss_test.go
index 44820a19b6..0d2c94f272 100644
--- a/tests/e2e/crud/crud_faiss_test.go
+++ b/tests/e2e/crud/crud_faiss_test.go
@@ -190,7 +190,7 @@ func TestE2EUpdateOnly(t *testing.T) {
t.Helper()
if status != int32(codes.NotFound) {
- return errors.Errorf("the returned status is not NotFound on Update #1: %s", err)
+ return errors.Errorf("the returned status is not NotFound on Update #1: %s,\tcode: %s", msg, status)
}
t.Logf("received a NotFound error on #1: %s", msg)
@@ -300,7 +300,7 @@ func TestE2EStandardCRUD(t *testing.T) {
t.Helper()
if status != int32(codes.NotFound) {
- return errors.Errorf("the returned status is not NotFound on Update #1: %s", err)
+ return errors.Errorf("the returned status is not NotFound on Update #1: %s,\tcode: %s", msg, status)
}
t.Logf("received a NotFound error on #1: %s", msg)
diff --git a/tests/e2e/crud/crud_test.go b/tests/e2e/crud/crud_test.go
index 71969d38f9..09bc5cab46 100644
--- a/tests/e2e/crud/crud_test.go
+++ b/tests/e2e/crud/crud_test.go
@@ -445,7 +445,7 @@ func TestE2ECRUDWithSkipStrictExistCheck(t *testing.T) {
t.Helper()
if status != int32(codes.NotFound) {
- return errors.Errorf("the returned status is not NotFound on Update #1: %s", err)
+ return errors.Errorf("the returned status is not NotFound on Update #1: %s,\tcode: %s", msg, codes.ToString(status))
}
t.Logf("received a NotFound error on #1: %s", msg)
@@ -480,7 +480,7 @@ func TestE2ECRUDWithSkipStrictExistCheck(t *testing.T) {
t.Helper()
if status != int32(codes.NotFound) {
- return errors.Errorf("the returned status is not NotFound on Update #2: %s", err)
+ return errors.Errorf("the returned status is not NotFound on Update #2: %s,\tcode: %s", msg, codes.ToString(status))
}
t.Logf("received a NotFound error on #2: %s", msg)
@@ -519,6 +519,8 @@ func TestE2ECRUDWithSkipStrictExistCheck(t *testing.T) {
t.Fatalf("an error occurred on #3: %s", err)
}
+ sleep(t, waitAfterInsertDuration)
+
// #4 run Update with SkipStrictExistCheck=false & a different vector, and check that it succeeds
err = op.UpdateWithParameters(
t,
@@ -535,6 +537,8 @@ func TestE2ECRUDWithSkipStrictExistCheck(t *testing.T) {
t.Fatalf("an error occurred on #4: %s", err)
}
+ sleep(t, waitAfterInsertDuration)
+
// #5 run Update with SkipStrictExistCheck=false & same vector as 4 and check that AlreadyExists returns
err = op.UpdateWithParameters(
t,
@@ -548,7 +552,7 @@ func TestE2ECRUDWithSkipStrictExistCheck(t *testing.T) {
t.Helper()
if status != int32(codes.AlreadyExists) {
- return errors.Errorf("the returned status is not NotFound on Update #5: %s", err)
+ return errors.Errorf("the returned status is not AlreadyExists on Update #5: %s,\tcode: %s", msg, codes.ToString(status))
}
t.Logf("received an AlreadyExists error on #5: %s", msg)
@@ -569,7 +573,7 @@ func TestE2ECRUDWithSkipStrictExistCheck(t *testing.T) {
},
)
if err != nil {
- t.Fatalf("an error occurred: %s", err)
+ t.Fatalf("an error occurred on #5: %s", err)
}
// #6 run Update with the same vector as SkipStrictExistCheck=true & 4 and check that it succeeds
@@ -615,7 +619,7 @@ func TestE2ECRUDWithSkipStrictExistCheck(t *testing.T) {
t.Helper()
if status != int32(codes.NotFound) {
- return errors.Errorf("the returned status is not NotFound on Remove #8: %s", err)
+ return errors.Errorf("the returned status is not NotFound on Remove #8: %s,\tcode: %s", msg, codes.ToString(status))
}
t.Logf("received a NotFound error on #8: %s", msg)
@@ -651,7 +655,7 @@ func TestE2ECRUDWithSkipStrictExistCheck(t *testing.T) {
t.Helper()
if status != int32(codes.NotFound) {
- return errors.Errorf("the returned status is not NotFound on Remove #9: %s", err)
+ return errors.Errorf("the returned status is not NotFound on Remove #9: %s,\tcode: %s", msg, codes.ToString(status))
}
t.Logf("received a NotFound error on #9: %s", msg)
@@ -702,7 +706,7 @@ func TestE2ECRUDWithSkipStrictExistCheck(t *testing.T) {
t.Helper()
if status != int32(codes.AlreadyExists) {
- return errors.Errorf("the returned status is not AlreadyExists on Upsert #11: %s", err)
+ return errors.Errorf("the returned status is not AlreadyExists on Upsert #11: %s,\tcode: %s", msg, codes.ToString(status))
}
t.Logf("received an AlreadyExists error on #11: %s", msg)
diff --git a/tests/e2e/operation/multi.go b/tests/e2e/operation/multi.go
index 0ebacc5ea0..890f24c743 100644
--- a/tests/e2e/operation/multi.go
+++ b/tests/e2e/operation/multi.go
@@ -24,7 +24,7 @@ import (
)
func (c *client) MultiSearch(t *testing.T, ctx context.Context, ds Dataset) error {
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -60,7 +60,7 @@ func (c *client) MultiSearch(t *testing.T, ctx context.Context, ds Dataset) erro
}
func (c *client) MultiSearchByID(t *testing.T, ctx context.Context, ds Dataset) error {
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -96,7 +96,7 @@ func (c *client) MultiSearchByID(t *testing.T, ctx context.Context, ds Dataset)
}
func (c *client) MultiLinearSearch(t *testing.T, ctx context.Context, ds Dataset) error {
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -130,7 +130,7 @@ func (c *client) MultiLinearSearch(t *testing.T, ctx context.Context, ds Dataset
}
func (c *client) MultiLinearSearchByID(t *testing.T, ctx context.Context, ds Dataset) error {
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -164,7 +164,7 @@ func (c *client) MultiLinearSearchByID(t *testing.T, ctx context.Context, ds Dat
}
func (c *client) MultiInsert(t *testing.T, ctx context.Context, ds Dataset) error {
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -201,7 +201,7 @@ func (c *client) MultiInsert(t *testing.T, ctx context.Context, ds Dataset) erro
}
func (c *client) MultiUpdate(t *testing.T, ctx context.Context, ds Dataset) error {
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -241,7 +241,7 @@ func (c *client) MultiUpdate(t *testing.T, ctx context.Context, ds Dataset) erro
}
func (c *client) MultiUpsert(t *testing.T, ctx context.Context, ds Dataset) error {
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -281,7 +281,7 @@ func (c *client) MultiUpsert(t *testing.T, ctx context.Context, ds Dataset) erro
}
func (c *client) MultiRemove(t *testing.T, ctx context.Context, ds Dataset) error {
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
diff --git a/tests/e2e/operation/operation.go b/tests/e2e/operation/operation.go
index 62e9a794d0..9ee24d79e9 100644
--- a/tests/e2e/operation/operation.go
+++ b/tests/e2e/operation/operation.go
@@ -150,7 +150,7 @@ func New(host string, port int) (Client, error) {
}
func (c *client) CreateIndex(t *testing.T, ctx context.Context) error {
- client, err := c.getAgentClient(ctx)
+ client, err := c.getAgentClient()
if err != nil {
return err
}
@@ -163,7 +163,7 @@ func (c *client) CreateIndex(t *testing.T, ctx context.Context) error {
}
func (c *client) SaveIndex(t *testing.T, ctx context.Context) error {
- client, err := c.getAgentClient(ctx)
+ client, err := c.getAgentClient()
if err != nil {
return err
}
@@ -174,7 +174,7 @@ func (c *client) SaveIndex(t *testing.T, ctx context.Context) error {
}
func (c *client) IndexInfo(t *testing.T, ctx context.Context) (*payload.Info_Index_Count, error) {
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return nil, err
}
@@ -182,9 +182,8 @@ func (c *client) IndexInfo(t *testing.T, ctx context.Context) (*payload.Info_Ind
return client.IndexInfo(ctx, &payload.Empty{})
}
-func (c *client) getGRPCConn(ctx context.Context) (*grpc.ClientConn, error) {
- return grpc.DialContext(
- ctx,
+func (c *client) getGRPCConn() (*grpc.ClientConn, error) {
+ return grpc.NewClient(
c.host+":"+strconv.Itoa(c.port),
grpc.WithInsecure(),
grpc.WithKeepaliveParams(
@@ -197,8 +196,8 @@ func (c *client) getGRPCConn(ctx context.Context) (*grpc.ClientConn, error) {
)
}
-func (c *client) getClient(ctx context.Context) (vald.Client, error) {
- conn, err := c.getGRPCConn(ctx)
+func (c *client) getClient() (vald.Client, error) {
+ conn, err := c.getGRPCConn()
if err != nil {
return nil, err
}
@@ -206,8 +205,8 @@ func (c *client) getClient(ctx context.Context) (vald.Client, error) {
return vald.NewValdClient(conn), nil
}
-func (c *client) getAgentClient(ctx context.Context) (core.AgentClient, error) {
- conn, err := c.getGRPCConn(ctx)
+func (c *client) getAgentClient() (core.AgentClient, error) {
+ conn, err := c.getGRPCConn()
if err != nil {
return nil, err
}
diff --git a/tests/e2e/operation/stream.go b/tests/e2e/operation/stream.go
index f606c67f1a..ccf6748466 100644
--- a/tests/e2e/operation/stream.go
+++ b/tests/e2e/operation/stream.go
@@ -93,7 +93,7 @@ func (c *client) SearchWithParameters(
) (rerr error) {
t.Log("search operation started")
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -293,7 +293,7 @@ func (c *client) SearchByIDWithParameters(
) (rerr error) {
t.Log("searchByID operation started")
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -413,7 +413,7 @@ func (c *client) LinearSearchWithParameters(
) (rerr error) {
t.Log("linearsearch operation started")
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -531,7 +531,7 @@ func (c *client) LinearSearchByIDWithParameters(
) (rerr error) {
t.Log("linearsearchByID operation started")
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -637,7 +637,7 @@ func (c *client) InsertWithParameters(
) (rerr error) {
t.Log("insert operation started")
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -740,7 +740,7 @@ func (c *client) UpdateWithParameters(
) (rerr error) {
t.Log("update operation started")
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -776,13 +776,13 @@ func (c *client) UpdateWithParameters(
loc := res.GetLocation()
if loc == nil {
- status := res.GetStatus()
- if status != nil {
- if e := svalidator(t, status.GetCode(), status.GetMessage()); e != nil {
+ st := res.GetStatus()
+ if st != nil {
+ if e := svalidator(t, st.GetCode(), st.GetMessage()); e != nil {
t.Errorf("an error returned:\tcode: %d\tmessage: %s\tdetails: %s",
- status.GetCode(),
- status.GetMessage(),
- errdetails.Serialize(status.GetDetails()))
+ st.GetCode(),
+ st.GetMessage(),
+ errdetails.Serialize(st.GetDetails()))
rerr = errors.Join(rerr, e)
}
continue
@@ -844,7 +844,7 @@ func (c *client) UpsertWithParameters(
) (rerr error) {
t.Log("upsert operation started")
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -946,7 +946,7 @@ func (c *client) RemoveWithParameters(
) (rerr error) {
t.Log("remove operation started")
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -1029,7 +1029,7 @@ func (c *client) RemoveWithParameters(
func (c *client) Flush(t *testing.T, ctx context.Context) error {
t.Log("flush operation started")
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -1047,7 +1047,7 @@ func (c *client) Flush(t *testing.T, ctx context.Context) error {
func (c *client) RemoveByTimestamp(t *testing.T, ctx context.Context, timestamp int64) error {
t.Log("removeByTimestamp operation started")
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -1074,7 +1074,7 @@ func (c *client) RemoveByTimestamp(t *testing.T, ctx context.Context, timestamp
func (c *client) Exists(t *testing.T, ctx context.Context, id string) error {
t.Log("exists operation started")
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -1096,7 +1096,7 @@ func (c *client) Exists(t *testing.T, ctx context.Context, id string) error {
func (c *client) GetObject(t *testing.T, ctx context.Context, ds Dataset) (rerr error) {
t.Log("getObject operation started")
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
@@ -1186,7 +1186,7 @@ func (c *client) GetObject(t *testing.T, ctx context.Context, ds Dataset) (rerr
func (c *client) StreamListObject(t *testing.T, ctx context.Context, ds Dataset) error {
t.Log("StreamListObject operation started")
- client, err := c.getClient(ctx)
+ client, err := c.getClient()
if err != nil {
return err
}
diff --git a/tests/e2e/performance/max_vector_dim_test.go b/tests/e2e/performance/max_vector_dim_test.go
index 9f4a361231..386dea3def 100644
--- a/tests/e2e/performance/max_vector_dim_test.go
+++ b/tests/e2e/performance/max_vector_dim_test.go
@@ -125,9 +125,7 @@ func TestE2EInsertOnlyWithOneVectorAndSearch(t *testing.T) {
if dim > algorithm.MaximumVectorDimensionSize {
t.Fatalf("Invalid argument: dimension should be equal or under than " + strconv.Itoa(algorithm.MaximumVectorDimensionSize) + ". set dim was " + strconv.Itoa(dim))
}
- ctx := context.Background()
- conn, err := grpc.DialContext(
- ctx,
+ conn, err := grpc.NewClient(
net.JoinHostPort(host, uint16(port)),
grpc.WithInsecure(),
grpc.WithKeepaliveParams(
@@ -155,6 +153,7 @@ func TestE2EInsertOnlyWithOneVectorAndSearch(t *testing.T) {
SkipStrictExistCheck: false,
},
}
+ ctx := context.Background()
_, err = cli.Insert(ctx, req)
if err != nil {
st, _ := status.FromError(err)
diff --git a/versions/CHAOS_MESH_VERSION b/versions/CHAOS_MESH_VERSION
index 2714f5313a..24ba9a38de 100644
--- a/versions/CHAOS_MESH_VERSION
+++ b/versions/CHAOS_MESH_VERSION
@@ -1 +1 @@
-2.6.4
+2.7.0
diff --git a/versions/DOCKER_VERSION b/versions/DOCKER_VERSION
index 12919d2181..88ad431800 100644
--- a/versions/DOCKER_VERSION
+++ b/versions/DOCKER_VERSION
@@ -1 +1 @@
-v27.2.1
+v27.3.1
diff --git a/versions/HELM_VERSION b/versions/HELM_VERSION
index 3490df664c..7f20715171 100644
--- a/versions/HELM_VERSION
+++ b/versions/HELM_VERSION
@@ -1 +1 @@
-v3.16.0
+v3.16.1
diff --git a/versions/KUBECTL_VERSION b/versions/KUBECTL_VERSION
index 1d37e1e347..6f986544fe 100644
--- a/versions/KUBECTL_VERSION
+++ b/versions/KUBECTL_VERSION
@@ -1 +1 @@
-v1.31.0
\ No newline at end of file
+v1.31.1
\ No newline at end of file
diff --git a/versions/PROMETHEUS_STACK_VERSION b/versions/PROMETHEUS_STACK_VERSION
index 3f9b36de51..c3998b266a 100644
--- a/versions/PROMETHEUS_STACK_VERSION
+++ b/versions/PROMETHEUS_STACK_VERSION
@@ -1 +1 @@
-62.6.0
+63.1.0
diff --git a/versions/PROTOBUF_VERSION b/versions/PROTOBUF_VERSION
index ed15377162..2862be46f0 100644
--- a/versions/PROTOBUF_VERSION
+++ b/versions/PROTOBUF_VERSION
@@ -1 +1 @@
-28.1
+28.2
diff --git a/versions/REVIEWDOG_VERSION b/versions/REVIEWDOG_VERSION
index 2c80271d5a..9c6ae028f1 100644
--- a/versions/REVIEWDOG_VERSION
+++ b/versions/REVIEWDOG_VERSION
@@ -1 +1 @@
-v0.20.1
+v0.20.2
diff --git a/versions/actions/ACTIONS_CHECKOUT b/versions/actions/ACTIONS_CHECKOUT
index 9edf2a44f4..6aba2b245a 100644
--- a/versions/actions/ACTIONS_CHECKOUT
+++ b/versions/actions/ACTIONS_CHECKOUT
@@ -1 +1 @@
-4.1.7
+4.2.0
diff --git a/versions/actions/ACTIONS_SETUP_NODE b/versions/actions/ACTIONS_SETUP_NODE
index c4e41f9459..c5106e6d13 100644
--- a/versions/actions/ACTIONS_SETUP_NODE
+++ b/versions/actions/ACTIONS_SETUP_NODE
@@ -1 +1 @@
-4.0.3
+4.0.4
diff --git a/versions/actions/GITHUB_CODEQL_ACTION_ANALYZE b/versions/actions/GITHUB_CODEQL_ACTION_ANALYZE
index 086b153eb6..ef0f38abe1 100644
--- a/versions/actions/GITHUB_CODEQL_ACTION_ANALYZE
+++ b/versions/actions/GITHUB_CODEQL_ACTION_ANALYZE
@@ -1 +1 @@
-2.18.4
+2.19.0
diff --git a/versions/actions/GITHUB_CODEQL_ACTION_AUTOBUILD b/versions/actions/GITHUB_CODEQL_ACTION_AUTOBUILD
index 086b153eb6..ef0f38abe1 100644
--- a/versions/actions/GITHUB_CODEQL_ACTION_AUTOBUILD
+++ b/versions/actions/GITHUB_CODEQL_ACTION_AUTOBUILD
@@ -1 +1 @@
-2.18.4
+2.19.0
diff --git a/versions/actions/GITHUB_CODEQL_ACTION_INIT b/versions/actions/GITHUB_CODEQL_ACTION_INIT
index 086b153eb6..ef0f38abe1 100644
--- a/versions/actions/GITHUB_CODEQL_ACTION_INIT
+++ b/versions/actions/GITHUB_CODEQL_ACTION_INIT
@@ -1 +1 @@
-2.18.4
+2.19.0
diff --git a/versions/actions/GITHUB_CODEQL_ACTION_UPLOAD_SARIF b/versions/actions/GITHUB_CODEQL_ACTION_UPLOAD_SARIF
index 086b153eb6..ef0f38abe1 100644
--- a/versions/actions/GITHUB_CODEQL_ACTION_UPLOAD_SARIF
+++ b/versions/actions/GITHUB_CODEQL_ACTION_UPLOAD_SARIF
@@ -1 +1 @@
-2.18.4
+2.19.0
diff --git a/versions/actions/GITHUB_ISSUE_METRICS b/versions/actions/GITHUB_ISSUE_METRICS
index a5c4c76339..92536a9e48 100644
--- a/versions/actions/GITHUB_ISSUE_METRICS
+++ b/versions/actions/GITHUB_ISSUE_METRICS
@@ -1 +1 @@
-3.9.0
+3.12.0
diff --git a/versions/actions/PETER_EVANS_CREATE_ISSUE_FROM_FILE b/versions/actions/PETER_EVANS_CREATE_ISSUE_FROM_FILE
index 0062ac9718..6b244dcd69 100644
--- a/versions/actions/PETER_EVANS_CREATE_ISSUE_FROM_FILE
+++ b/versions/actions/PETER_EVANS_CREATE_ISSUE_FROM_FILE
@@ -1 +1 @@
-5.0.0
+5.0.1
diff --git a/versions/actions/PETER_EVANS_CREATE_PULL_REQUEST b/versions/actions/PETER_EVANS_CREATE_PULL_REQUEST
index a50da181e9..2be8aeb6b1 100644
--- a/versions/actions/PETER_EVANS_CREATE_PULL_REQUEST
+++ b/versions/actions/PETER_EVANS_CREATE_PULL_REQUEST
@@ -1 +1 @@
-7.0.3
+7.0.5
---|