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="" 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 4493a54e50..a091aecc96 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 8eec987352..054a15e936 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 @@ -3427,11 +3435,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 @@ -3558,11 +3568,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
type