From 847281a7087a59dce2ba07cf6593a5de4007be66 Mon Sep 17 00:00:00 2001 From: kpango Date: Fri, 2 Aug 2024 14:18:18 +0900 Subject: [PATCH] Backport #2559 Signed-off-by: kpango --- .gitfiles | 27 ++++ .../workflows/dockers-agent-faiss-image.yml | 31 ++--- .github/workflows/dockers-agent-image.yml | 16 ++- .github/workflows/dockers-agent-ngt-image.yml | 30 +++-- .github/workflows/update-actions.yaml | 64 +++++++++ Makefile | 3 +- dockers/agent/core/agent/Dockerfile | 3 +- dockers/agent/core/faiss/Dockerfile | 1 - dockers/ci/base/Dockerfile | 3 +- dockers/dev/Dockerfile | 1 - docs/api/flush.md | 15 +-- go.mod | 10 +- go.sum | 14 +- hack/docker/gen/main.go | 1 - rust/Cargo.lock | 4 +- rust/bin/agent/Cargo.toml | 5 + rust/bin/agent/src/handler.rs | 27 ++++ rust/bin/agent/src/handler/common.rs | 21 +++ rust/bin/agent/src/handler/insert.rs | 47 +++++++ rust/bin/agent/src/handler/remove.rs | 56 ++++++++ rust/bin/agent/src/handler/search.rs | 127 ++++++++++++++++++ rust/bin/agent/src/handler/update.rs | 48 +++++++ rust/bin/agent/src/handler/upsert.rs | 48 +++++++ rust/bin/agent/src/main.rs | 16 ++- rust/libs/proto/Cargo.toml | 4 +- rust/libs/proto/src/lib.rs | 8 +- versions/PROMETHEUS_STACK_VERSION | 2 +- .../actions/PETER_EVANS_CREATE_PULL_REQUEST | 1 + 28 files changed, 561 insertions(+), 72 deletions(-) create mode 100644 .github/workflows/update-actions.yaml create mode 100644 rust/bin/agent/src/handler.rs create mode 100644 rust/bin/agent/src/handler/common.rs create mode 100644 rust/bin/agent/src/handler/insert.rs create mode 100644 rust/bin/agent/src/handler/remove.rs create mode 100644 rust/bin/agent/src/handler/search.rs create mode 100644 rust/bin/agent/src/handler/update.rs create mode 100644 rust/bin/agent/src/handler/upsert.rs create mode 100644 versions/actions/PETER_EVANS_CREATE_PULL_REQUEST diff --git a/.gitfiles b/.gitfiles index d22a7dbe9e..c42ae34f3e 100644 --- a/.gitfiles +++ b/.gitfiles @@ -76,7 +76,12 @@ .github/workflows/coverage.yml .github/workflows/detect-internal-config-changes.yml .github/workflows/dockers-agent-faiss-image.yml +.github/workflows/dockers-agent-faiss-image.yml +.github/workflows/dockers-agent-faiss-image.yml .github/workflows/dockers-agent-image.yml +.github/workflows/dockers-agent-image.yml +.github/workflows/dockers-agent-ngt-image.yml +.github/workflows/dockers-agent-ngt-image.yml .github/workflows/dockers-agent-ngt-image.yml .github/workflows/dockers-agent-sidecar-image.yml .github/workflows/dockers-benchmark-job-image.yml @@ -133,6 +138,8 @@ CODE_OF_CONDUCT.md CONTRIBUTING.md LICENSE Makefile +Makefile +Makefile Makefile.d/actions.mk Makefile.d/bench.mk Makefile.d/build.mk @@ -519,16 +526,23 @@ design/Vald Architecture Dataflow.drawio design/Vald Architecture Overview.drawio design/vald_architecture_overview.png dockers/agent/core/agent/Dockerfile +dockers/agent/core/agent/Dockerfile dockers/agent/core/agent/README.md dockers/agent/core/faiss/Dockerfile +dockers/agent/core/faiss/Dockerfile +dockers/agent/core/faiss/Dockerfile dockers/agent/core/ngt/Dockerfile dockers/agent/core/ngt/README.md dockers/agent/sidecar/Dockerfile dockers/agent/sidecar/README.md dockers/buildbase/Dockerfile dockers/ci/base/Dockerfile +dockers/ci/base/Dockerfile +dockers/ci/base/Dockerfile dockers/ci/base/README.md dockers/dev/Dockerfile +dockers/dev/Dockerfile +dockers/dev/Dockerfile dockers/dev/README.md dockers/discoverer/k8s/Dockerfile dockers/discoverer/k8s/README.md @@ -555,6 +569,7 @@ docs/api/README.md docs/api/build_proto.md docs/api/filter-gateway.md docs/api/flush.md +docs/api/flush.md docs/api/insert.md docs/api/mirror-gateway.md docs/api/object.md @@ -622,8 +637,13 @@ example/helm/values-with-pyroscope.yaml example/helm/values.yaml example/manifest/scylla/configmap.yaml example/manifest/scylla/job.yaml +github_info.json +go.mod +go.mod go.mod go.sum +go.sum +go.sum hack/CHANGELOG.template.md hack/benchmark/assets/checksum/fashion-mnist-784-euclidean.md5 hack/benchmark/assets/checksum/gist-960-euclidean.md5 @@ -699,6 +719,7 @@ hack/benchmark/internal/starter/starter.go hack/benchmark/metrics/metrics.go hack/benchmark/src/singleflight/singleflight_bench_test.go hack/docker/gen/main.go +hack/docker/gen/main.go hack/git/hooks/pre-commit hack/go.mod.default hack/gorules/rules.go @@ -1936,8 +1957,12 @@ pkg/tools/cli/loadtest/usecase/load.go pkg/tools/cli/loadtest/usecase/load_test.go renovate.json rust/Cargo.lock +rust/Cargo.lock +rust/Cargo.lock rust/Cargo.toml rust/bin/agent/Cargo.toml +rust/bin/agent/Cargo.toml +rust/bin/agent/Cargo.toml rust/bin/agent/src/handler.rs rust/bin/agent/src/handler/common.rs rust/bin/agent/src/handler/index.rs @@ -2019,6 +2044,8 @@ versions/NGT_VERSION versions/OPERATOR_SDK_VERSION versions/OTEL_OPERATOR_VERSION versions/PROMETHEUS_STACK_VERSION +versions/PROMETHEUS_STACK_VERSION +versions/PROMETHEUS_STACK_VERSION versions/PROTOBUF_VERSION versions/REVIEWDOG_VERSION versions/RUST_VERSION diff --git a/.github/workflows/dockers-agent-faiss-image.yml b/.github/workflows/dockers-agent-faiss-image.yml index 0e2931fa86..d623609a56 100644 --- a/.github/workflows/dockers-agent-faiss-image.yml +++ b/.github/workflows/dockers-agent-faiss-image.yml @@ -27,42 +27,43 @@ on: - "v*.*.*-*" pull_request: paths: + - "!internal/**/*_test.go" + - "!internal/db/**" + - "!internal/k8s/**" - ".github/actions/docker-build/action.yaml" - ".github/workflows/_docker-image.yaml" - ".github/workflows/dockers-agent-faiss-image.yml" + - "Makefile" + - "apis/grpc/**" + - "cmd/agent/core/faiss/**" + - "dockers/agent/core/faiss/Dockerfile" - "go.mod" - "go.sum" - "internal/**" - - "!internal/**/*_test.go" - - "!internal/db/**" - - "!internal/k8s/**" - - "apis/grpc/**" - "pkg/agent/core/faiss/**" - - "cmd/agent/core/faiss/**" - - "dockers/agent/core/faiss/Dockerfile" - - "versions/GO_VERSION" - "versions/FAISS_VERSION" + - "versions/GO_VERSION" pull_request_target: paths: + - "!internal/**/*_test.go" + - "!internal/db/**" + - "!internal/k8s/**" - ".github/actions/docker-build/action.yaml" - ".github/workflows/_docker-image.yaml" - ".github/workflows/dockers-agent-faiss-image.yml" + - "Makefile" + - "apis/grpc/**" + - "cmd/agent/core/faiss/**" + - "dockers/agent/core/faiss/Dockerfile" - "go.mod" - "go.sum" - "internal/**" - - "!internal/**/*_test.go" - - "!internal/db/**" - - "!internal/k8s/**" - - "apis/grpc/**" - "pkg/agent/core/faiss/**" - - "cmd/agent/core/faiss/**" - - "dockers/agent/core/faiss/Dockerfile" - - "versions/GO_VERSION" - "versions/FAISS_VERSION" + - "versions/GO_VERSION" jobs: build: uses: ./.github/workflows/_docker-image.yaml with: target: agent-faiss - platforms: linux/amd64 secrets: inherit diff --git a/.github/workflows/dockers-agent-image.yml b/.github/workflows/dockers-agent-image.yml index 3ccd1161f3..0aa4f2e98c 100644 --- a/.github/workflows/dockers-agent-image.yml +++ b/.github/workflows/dockers-agent-image.yml @@ -30,29 +30,33 @@ on: - ".github/actions/docker-build/action.yaml" - ".github/workflows/_docker-image.yaml" - ".github/workflows/dockers-agent-image.yml" + - "Makefile" + - "dockers/agent/core/agent/Dockerfile" - "rust/Cargo.lock" - "rust/Cargo.toml" - "rust/bin/agent/**" - - "rust/libs/ngt/**" - "rust/libs/ngt-rs/**" + - "rust/libs/ngt/**" - "rust/libs/proto/**" - - "dockers/agent/core/agent/Dockerfile" - - "versions/RUST_VERSION" + - "versions/FAISS_VERSION" - "versions/NGT_VERSION" + - "versions/RUST_VERSION" pull_request_target: paths: - ".github/actions/docker-build/action.yaml" - ".github/workflows/_docker-image.yaml" - ".github/workflows/dockers-agent-image.yml" + - "Makefile" + - "dockers/agent/core/agent/Dockerfile" - "rust/Cargo.lock" - "rust/Cargo.toml" - "rust/bin/agent/**" - - "rust/libs/ngt/**" - "rust/libs/ngt-rs/**" + - "rust/libs/ngt/**" - "rust/libs/proto/**" - - "dockers/agent/core/agent/Dockerfile" - - "versions/RUST_VERSION" + - "versions/FAISS_VERSION" - "versions/NGT_VERSION" + - "versions/RUST_VERSION" jobs: build: uses: ./.github/workflows/_docker-image.yaml diff --git a/.github/workflows/dockers-agent-ngt-image.yml b/.github/workflows/dockers-agent-ngt-image.yml index 64c8d7b74d..3f8ff939bc 100644 --- a/.github/workflows/dockers-agent-ngt-image.yml +++ b/.github/workflows/dockers-agent-ngt-image.yml @@ -27,38 +27,40 @@ on: - "v*.*.*-*" pull_request: paths: + - "!internal/**/*_test.go" + - "!internal/db/**" + - "!internal/k8s/**" - ".github/actions/docker-build/action.yaml" - ".github/workflows/_docker-image.yaml" - ".github/workflows/dockers-agent-ngt-image.yml" + - "Makefile" + - "apis/grpc/**" + - "cmd/agent/core/ngt/**" + - "dockers/agent/core/ngt/Dockerfile" - "go.mod" - "go.sum" - "internal/**" - - "!internal/**/*_test.go" - - "!internal/db/**" - - "internal/k8s/**" - - "apis/grpc/**" - "pkg/agent/core/ngt/**" - - "cmd/agent/core/ngt/**" - - "dockers/agent/core/ngt/Dockerfile" - - "versions/GO_VERSION" - "versions/NGT_VERSION" + - "versions/GO_VERSION" pull_request_target: paths: + - "!internal/**/*_test.go" + - "!internal/db/**" + - "!internal/k8s/**" - ".github/actions/docker-build/action.yaml" - ".github/workflows/_docker-image.yaml" - ".github/workflows/dockers-agent-ngt-image.yml" + - "Makefile" + - "apis/grpc/**" + - "cmd/agent/core/ngt/**" + - "dockers/agent/core/ngt/Dockerfile" - "go.mod" - "go.sum" - "internal/**" - - "!internal/**/*_test.go" - - "!internal/db/**" - - "internal/k8s/**" - - "apis/grpc/**" - "pkg/agent/core/ngt/**" - - "cmd/agent/core/ngt/**" - - "dockers/agent/core/ngt/Dockerfile" - - "versions/GO_VERSION" - "versions/NGT_VERSION" + - "versions/GO_VERSION" jobs: build: uses: ./.github/workflows/_docker-image.yaml diff --git a/.github/workflows/update-actions.yaml b/.github/workflows/update-actions.yaml new file mode 100644 index 0000000000..4a0c3cfc14 --- /dev/null +++ b/.github/workflows/update-actions.yaml @@ -0,0 +1,64 @@ +# +# Copyright (C) 2019-2024 vdaas.org vald team +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# You may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +name: Update Actions version +on: + workflow_dispatch: + schedule: + - cron: "0 0 * * *" +jobs: + dump-contexts-to-log: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: vdaas/vald/.github/actions/dump-context@main + update-version: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.DISPATCH_TOKEN }} + - name: Set Git config + run: | + git config --global --add safe.directory ${GITHUB_WORKSPACE} + - uses: crazy-max/ghaction-import-gpg@v6 + with: + gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} + git_user_signingkey: true + git_commit_gpgsign: true + - name: Run update command + run: | + make update/actions + - name: Check difference + id: check_diff + run: | + if git diff --quiet --exit-code; then + echo "Nothing updated" + else + git diff && git status + echo "HAS_GIT_DIFF=true" >> $GITHUB_OUTPUT + fi + - name: Create PR + if: ${{ steps.check_diff.outputs.HAS_GIT_DIFF == 'true' }} + uses: peter-evans/create-pull-request@v6 + with: + author: "${{ secrets.DISPATCH_USER }} " + token: ${{ secrets.DISPATCH_TOKEN }} + committer: "${{ secrets.DISPATCH_USER }} " + signoff: true + delete-branch: true + base: main + title: "Update Actions dependency" + body: "Automated pull request to update Actions." diff --git a/Makefile b/Makefile index da9f10561a..6ed06ad318 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,7 @@ # limitations under the License. # +SHELL = bash ORG ?= vdaas NAME = vald GOPKG = github.com/$(ORG)/$(NAME) @@ -144,7 +145,7 @@ PBDOCS = apis/docs/v1/docs.md LDFLAGS = -static -fPIC -pthread -std=gnu++23 -lstdc++ -lm -z relro -z now -flto=auto -march=native -mtune=native -fno-plt -Ofast -fvisibility=hidden -ffp-contract=fast -fomit-frame-pointer -fmerge-all-constants -funroll-loops -falign-functions=32 -ffunction-sections -fdata-sections NGT_LDFLAGS = -fopenmp -lopenblas -llapack -FAISS_LDFLAGS = $(NGT_LDFLAGS) -lgfortran -lquadmath +FAISS_LDFLAGS = $(NGT_LDFLAGS) -lgfortran HDF5_LDFLAGS = -lhdf5 -lhdf5_hl -lsz -laec -lz -ldl CGO_LDFLAGS = $(FAISS_LDFLAGS) $(HDF5_LDFLAGS) diff --git a/dockers/agent/core/agent/Dockerfile b/dockers/agent/core/agent/Dockerfile index 4b06d95aba..da44df6a34 100644 --- a/dockers/agent/core/agent/Dockerfile +++ b/dockers/agent/core/agent/Dockerfile @@ -43,8 +43,8 @@ ENV REPO=vald ENV RUST_HOME=/usr/loacl/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:${RUSTUP_HOME}/bin:/usr/local/bin:${PATH} WORKDIR ${HOME}/rust/src/github.com/${ORG}/${REPO} @@ -75,7 +75,6 @@ RUN --mount=type=bind,target=.,rw \ libomp-dev \ libopenblas-dev \ gfortran \ - libquadmath0 \ && ldconfig \ && echo "${LANG} UTF-8" > /etc/locale.gen \ && ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \ diff --git a/dockers/agent/core/faiss/Dockerfile b/dockers/agent/core/faiss/Dockerfile index 11840f9bea..c0802886bd 100644 --- a/dockers/agent/core/faiss/Dockerfile +++ b/dockers/agent/core/faiss/Dockerfile @@ -77,7 +77,6 @@ RUN --mount=type=bind,target=.,rw \ libomp-dev \ libopenblas-dev \ gfortran \ - libquadmath0 \ && ldconfig \ && echo "${LANG} UTF-8" > /etc/locale.gen \ && ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \ diff --git a/dockers/ci/base/Dockerfile b/dockers/ci/base/Dockerfile index cf03fdef38..0377c37a8f 100644 --- a/dockers/ci/base/Dockerfile +++ b/dockers/ci/base/Dockerfile @@ -48,8 +48,8 @@ ENV REPO=vald ENV RUST_HOME=/usr/loacl/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:${GOPATH}/bin:${GOROOT}/bin:${RUSTUP_HOME}/bin:/usr/local/bin:${PATH} WORKDIR ${GOPATH}/src/github.com/${ORG}/${REPO} @@ -83,7 +83,6 @@ RUN --mount=type=bind,target=.,rw \ libomp-dev \ libopenblas-dev \ gfortran \ - libquadmath0 \ gawk \ gnupg2 \ graphviz \ diff --git a/dockers/dev/Dockerfile b/dockers/dev/Dockerfile index 16d0cbfff5..64f94085bb 100644 --- a/dockers/dev/Dockerfile +++ b/dockers/dev/Dockerfile @@ -88,7 +88,6 @@ RUN --mount=type=bind,target=.,rw \ libomp-dev \ libopenblas-dev \ gfortran \ - libquadmath0 \ gawk \ gnupg2 \ graphviz \ diff --git a/docs/api/flush.md b/docs/api/flush.md index 93c8ce6761..fb5b4478bf 100644 --- a/docs/api/flush.md +++ b/docs/api/flush.md @@ -31,7 +31,6 @@ Flush RPC is the method to remove all vectors. empty - ### Output - the scheme of `payload.v1.Info.Index.Count` @@ -47,14 +46,14 @@ Flush RPC is the method to remove all vectors. } ``` - Object.Info_Index_Count + Object.Info_Index_Count - | field | type | label | desc. | - | :---------: |:------ | :---- | :------------------------------------------------------------------------- | - | stored | uint32 | | count of indices. | - | uncommitted | uint32 | | count of uncommitted indices. | - | indexing | bool | | the state indicating whether `vald-agent` pods is present in the indexing. | - | saving | bool | | the state indicating whether `vald-agent` pods is present in the saving. | + | field | type | label | desc. | + | :---------: | :----- | :---- | :------------------------------------------------------------------------- | + | stored | uint32 | | count of indices. | + | uncommitted | uint32 | | count of uncommitted indices. | + | indexing | bool | | the state indicating whether `vald-agent` pods is present in the indexing. | + | saving | bool | | the state indicating whether `vald-agent` pods is present in the saving. | ### Status Code diff --git a/go.mod b/go.mod index 2845930a58..46cf20cff6 100644 --- a/go.mod +++ b/go.mod @@ -314,7 +314,7 @@ replace ( gonum.org/v1/gonum => gonum.org/v1/gonum v0.15.0 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.189.0 + google.golang.org/api => google.golang.org/api v0.190.0 google.golang.org/appengine => google.golang.org/appengine v1.6.8 google.golang.org/genproto => google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf google.golang.org/genproto/googleapis/api => google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf @@ -406,7 +406,7 @@ require ( gonum.org/v1/hdf5 v0.0.0-00010101000000-000000000000 gonum.org/v1/plot v0.14.0 google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f - google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f + google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v2 v2.4.0 @@ -422,7 +422,7 @@ require ( require ( cloud.google.com/go v0.115.0 // indirect - cloud.google.com/go/auth v0.7.2 // indirect + cloud.google.com/go/auth v0.7.3 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.12 // indirect @@ -462,7 +462,7 @@ require ( github.com/google/gnostic-models v0.6.8 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect - github.com/google/s2a-go v0.1.7 // indirect + github.com/google/s2a-go v0.1.8 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/wire v0.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect @@ -514,7 +514,7 @@ require ( golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/api v0.189.0 // indirect - google.golang.org/genproto v0.0.0-20240725223205-93522f1f2a9f // indirect + google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/apiextensions-apiserver v0.30.1 // indirect diff --git a/go.sum b/go.sum index 61c1e911aa..891645dbde 100644 --- a/go.sum +++ b/go.sum @@ -24,8 +24,9 @@ cloud.google.com/go/auth v0.5.1/go.mod h1:vbZT8GjzDf3AVqCcQmqeeM32U9HBFc32vVVAbw 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 h1:uiha352VrCDMXg+yoBtaD0tUF4Kv9vrtrWPYXwutnDE= cloud.google.com/go/auth v0.7.2/go.mod h1:VEc4p5NNxycWQTMQEDQF0bd6aTMb6VgYDXEwiJJQAbs= +cloud.google.com/go/auth v0.7.3 h1:98Vr+5jMaCZ5NZk6e/uBgf60phTk/XN84r8QEWB9yjY= +cloud.google.com/go/auth v0.7.3/go.mod h1:HJtWUx1P5eqjy/f6Iq5KeytNpbAcGolPhOgyop2LlzA= cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= @@ -96,6 +97,7 @@ cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFV cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= +cloud.google.com/go/longrunning v0.5.6/go.mod h1:vUaDrWYOMKRuhiv6JBnn49YxCPz2Ayn9GqyjaBT8/mA= cloud.google.com/go/longrunning v0.5.7/go.mod h1:8GClkudohy1Fxm3owmBGid8W0pSgodEMwEAztp38Xng= cloud.google.com/go/longrunning v0.5.9/go.mod h1:HD+0l9/OOW0za6UWdKJtXoFAX/BGg/3Wj8p10NeWF7c= cloud.google.com/go/longrunning v0.5.10/go.mod h1:tljz5guTr5oc/qhlUjBlk7UAIFMOGuPNxkNDZXlLics= @@ -146,6 +148,7 @@ cloud.google.com/go/talent v1.6.12/go.mod h1:nT9kNVuJhZX2QgqKZS6t6eCWZs5XEBYRBv6 cloud.google.com/go/texttospeech v1.7.11/go.mod h1:Ua125HU+WT2IkIo5MzQtuNpNEk72soShJQVdorZ1SAE= cloud.google.com/go/tpu v1.6.11/go.mod h1:W0C4xaSj1Ay3VX/H96FRvLt2HDs0CgdRPVI4e7PoCDk= cloud.google.com/go/trace v1.10.11/go.mod h1:fUr5L3wSXerNfT0f1bBg08W4axS2VbHGgYcfH4KuTXU= +cloud.google.com/go/translate v1.10.3/go.mod h1:GW0vC1qvPtd3pgtypCv4k4U8B7EdgK9/QEF2aJEUovs= cloud.google.com/go/translate v1.10.7/go.mod h1:mH/+8tvcItuy1cOWqU+/Y3iFHgkVUObNIQYI/kiFFiY= cloud.google.com/go/video v1.22.0/go.mod h1:CxPshUNAb1ucnzbtruEHlAal9XY+SPG2cFqC/woJzII= cloud.google.com/go/videointelligence v1.11.11/go.mod h1:dab2Ca3AXT6vNJmt3/6ieuquYRckpsActDekLcsd6dU= @@ -411,8 +414,9 @@ github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 h1:FKHo8hFI3A+7w0aUQu github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= 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 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= +github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= @@ -721,14 +725,14 @@ 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.189.0 h1:equMo30LypAkdkLMBqfeIqtyAnlyig1JSZArl4XPwdI= -google.golang.org/api v0.189.0/go.mod h1:FLWGJKb0hb+pU2j+rJqwbnsF+ym+fQs73rbJ+KAUgy8= +google.golang.org/api v0.190.0 h1:ASM+IhLY1zljNdLu19W1jTmU6A+gMk6M46Wlur61s+Q= +google.golang.org/api v0.190.0/go.mod h1:QIr6I9iedBLnfqoD6L6Vze1UvS5Hzj5r2aUBOaZnLHo= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf h1:OqdXDEakZCVtDiZTjcxfwbHPCT11ycCEsTKesBVKvyY= google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:mCr1K1c8kX+1iSBREvU3Juo11CB+QOEWxbRS01wWl5M= google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf h1:GillM0Ef0pkZPIB+5iO6SDK+4T9pf6TpaYR6ICD5rVE= google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:OFMYQFHJ4TM3JRlWDZhJbZfra2uqc3WLBZiaaqP4DtU= -google.golang.org/genproto/googleapis/bytestream v0.0.0-20240722135656-d784300faade/go.mod h1:5/MT647Cn/GGhwTpXC7QqcaR5Cnee4v4MKCU1/nwnIQ= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:5/MT647Cn/GGhwTpXC7QqcaR5Cnee4v4MKCU1/nwnIQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q= google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= diff --git a/hack/docker/gen/main.go b/hack/docker/gen/main.go index 989d5a0a87..e50d87c7c2 100644 --- a/hack/docker/gen/main.go +++ b/hack/docker/gen/main.go @@ -348,7 +348,6 @@ var ( } faissBuildDeps = []string{ "gfortran", - "libquadmath0", } devContainerDeps = []string{ "gawk", diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 26126f4525..92d78da00b 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -169,9 +169,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fca2be1d5c43812bae364ee3f30b3afcb7877cf59f4aeb94c66f313a41d2fac9" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "cc" diff --git a/rust/bin/agent/Cargo.toml b/rust/bin/agent/Cargo.toml index 5fc426d196..fdfce09733 100644 --- a/rust/bin/agent/Cargo.toml +++ b/rust/bin/agent/Cargo.toml @@ -22,3 +22,8 @@ edition = "2021" [dependencies] ngt = { version = "0.1.0", path = "../../libs/ngt" } +prost = "0.12.4" +proto = { version = "0.1.0", path = "../../libs/proto" } +tokio = { version = "1.37.0", features = ["full"] } +tokio-stream = { version = "0.1.15", features = ["full"] } +tonic = "0.11.0" diff --git a/rust/bin/agent/src/handler.rs b/rust/bin/agent/src/handler.rs new file mode 100644 index 0000000000..7baa1b6237 --- /dev/null +++ b/rust/bin/agent/src/handler.rs @@ -0,0 +1,27 @@ +// +// Copyright (C) 2019-2024 vdaas.org vald team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// You may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +mod common; +mod index; +mod insert; +mod remove; +mod search; +mod update; +mod upsert; + +#[derive(Default, Debug)] +pub struct Agent { + +} diff --git a/rust/bin/agent/src/handler/common.rs b/rust/bin/agent/src/handler/common.rs new file mode 100644 index 0000000000..3e251cfc95 --- /dev/null +++ b/rust/bin/agent/src/handler/common.rs @@ -0,0 +1,21 @@ +// +// Copyright (C) 2019-2024 vdaas.org vald team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// You may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#[macro_export] +macro_rules! stream_type { + ($t:ty) => { + std::pin::Pin> + Send>> + }; +} diff --git a/rust/bin/agent/src/handler/insert.rs b/rust/bin/agent/src/handler/insert.rs new file mode 100644 index 0000000000..e0073a0818 --- /dev/null +++ b/rust/bin/agent/src/handler/insert.rs @@ -0,0 +1,47 @@ +// +// Copyright (C) 2019-2024 vdaas.org vald team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// You may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +use proto::{ + payload::v1::{insert, object}, + vald::v1::insert_server, +}; +#[tonic::async_trait] +impl insert_server::Insert for super::Agent { + async fn insert( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " Server streaming response type for the StreamInsert method."] + type StreamInsertStream = crate::stream_type!(object::StreamLocation); + + #[doc = " A method to add new multiple vectors by bidirectional streaming.\n"] + async fn stream_insert( + &self, + request: tonic::Request>, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " A method to add new multiple vectors in a single request.\n"] + async fn multi_insert( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } +} diff --git a/rust/bin/agent/src/handler/remove.rs b/rust/bin/agent/src/handler/remove.rs new file mode 100644 index 0000000000..803f33564d --- /dev/null +++ b/rust/bin/agent/src/handler/remove.rs @@ -0,0 +1,56 @@ +// +// Copyright (C) 2019-2024 vdaas.org vald team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// You may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +use proto::{ + payload::v1::{object, remove}, + vald::v1::remove_server, +}; + +#[tonic::async_trait] +impl remove_server::Remove for super::Agent { + async fn remove( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " A method to remove an indexed vector based on timestamp.\n"] + async fn remove_by_timestamp( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " Server streaming response type for the StreamRemove method."] + type StreamRemoveStream = crate::stream_type!(object::StreamLocation); + + #[doc = " A method to remove multiple indexed vectors by bidirectional streaming.\n"] + async fn stream_remove( + &self, + request: tonic::Request>, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " A method to remove multiple indexed vectors in a single request.\n"] + async fn multi_remove( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } +} diff --git a/rust/bin/agent/src/handler/search.rs b/rust/bin/agent/src/handler/search.rs new file mode 100644 index 0000000000..d522d456ae --- /dev/null +++ b/rust/bin/agent/src/handler/search.rs @@ -0,0 +1,127 @@ +// +// Copyright (C) 2019-2024 vdaas.org vald team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// You may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +use proto::{payload::v1::search, vald::v1::search_server}; + +#[tonic::async_trait] +impl search_server::Search for super::Agent { + async fn search( + &self, + request: tonic::Request, + ) -> Result, tonic::Status> { + todo!() + } + + #[doc = " A method to search indexed vectors by ID.\n"] + async fn search_by_id( + &self, + request: tonic::Request, + ) -> Result, tonic::Status> { + todo!() + } + + #[doc = " Server streaming response type for the StreamSearch method."] + type StreamSearchStream = crate::stream_type!(search::StreamResponse); + + #[doc = " A method to search indexed vectors by multiple vectors.\n"] + async fn stream_search( + &self, + request: tonic::Request>, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " Server streaming response type for the StreamSearchByID method."] + type StreamSearchByIDStream = crate::stream_type!(search::StreamResponse); + + #[doc = " A method to search indexed vectors by multiple IDs.\n"] + async fn stream_search_by_id( + &self, + request: tonic::Request>, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " A method to search indexed vectors by multiple vectors in a single request.\n"] + async fn multi_search( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " A method to search indexed vectors by multiple IDs in a single request.\n"] + async fn multi_search_by_id( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " A method to linear search indexed vectors by a raw vector.\n"] + async fn linear_search( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " A method to linear search indexed vectors by ID.\n"] + async fn linear_search_by_id( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " Server streaming response type for the StreamLinearSearch method."] + type StreamLinearSearchStream = crate::stream_type!(search::StreamResponse); + + #[doc = " A method to linear search indexed vectors by multiple vectors.\n"] + async fn stream_linear_search( + &self, + request: tonic::Request>, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " Server streaming response type for the StreamLinearSearchByID method."] + type StreamLinearSearchByIDStream = crate::stream_type!(search::StreamResponse); + + #[doc = " A method to linear search indexed vectors by multiple IDs.\n"] + async fn stream_linear_search_by_id( + &self, + request: tonic::Request>, + ) -> std::result::Result, tonic::Status> + { + todo!() + } + + #[doc = " A method to linear search indexed vectors by multiple vectors in a single\n request.\n"] + async fn multi_linear_search( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " A method to linear search indexed vectors by multiple IDs in a single\n request.\n"] + async fn multi_linear_search_by_id( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } +} diff --git a/rust/bin/agent/src/handler/update.rs b/rust/bin/agent/src/handler/update.rs new file mode 100644 index 0000000000..c738a3dfd5 --- /dev/null +++ b/rust/bin/agent/src/handler/update.rs @@ -0,0 +1,48 @@ +// +// Copyright (C) 2019-2024 vdaas.org vald team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// You may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +use proto::{ + payload::v1::{object, update}, + vald::v1::update_server, +}; + +#[tonic::async_trait] +impl update_server::Update for super::Agent { + async fn update( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " Server streaming response type for the StreamUpdate method."] + type StreamUpdateStream = crate::stream_type!(object::StreamLocation); + + #[doc = " A method to update multiple indexed vectors by bidirectional streaming.\n"] + async fn stream_update( + &self, + request: tonic::Request>, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " A method to update multiple indexed vectors in a single request.\n"] + async fn multi_update( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } +} diff --git a/rust/bin/agent/src/handler/upsert.rs b/rust/bin/agent/src/handler/upsert.rs new file mode 100644 index 0000000000..8191d736c4 --- /dev/null +++ b/rust/bin/agent/src/handler/upsert.rs @@ -0,0 +1,48 @@ +// +// Copyright (C) 2019-2024 vdaas.org vald team +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// You may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +use proto::{ + payload::v1::{object, upsert}, + vald::v1::upsert_server, +}; + +#[tonic::async_trait] +impl upsert_server::Upsert for super::Agent { + async fn upsert( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " Server streaming response type for the StreamUpsert method."] + type StreamUpsertStream = crate::stream_type!(object::StreamLocation); + + #[doc = " A method to insert/update multiple vectors by bidirectional streaming.\n"] + async fn stream_upsert( + &self, + request: tonic::Request>, + ) -> std::result::Result, tonic::Status> { + todo!() + } + + #[doc = " A method to insert/update multiple vectors in a single request.\n"] + async fn multi_upsert( + &self, + request: tonic::Request, + ) -> std::result::Result, tonic::Status> { + todo!() + } +} diff --git a/rust/bin/agent/src/main.rs b/rust/bin/agent/src/main.rs index 7546cec810..5ef03c184d 100644 --- a/rust/bin/agent/src/main.rs +++ b/rust/bin/agent/src/main.rs @@ -13,6 +13,18 @@ // See the License for the specific language governing permissions and // limitations under the License. // -fn main() { - println!("Hello, world!"); + +mod handler; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let addr = "[::1]:8081".parse()?; + let agent = handler::Agent::default(); + + tonic::transport::Server::builder() + .add_service(proto::core::v1::agent_server::AgentServer::new(agent)) + .serve(addr) + .await?; + + Ok(()) } diff --git a/rust/libs/proto/Cargo.toml b/rust/libs/proto/Cargo.toml index d185dbf655..72ea9d88f0 100644 --- a/rust/libs/proto/Cargo.toml +++ b/rust/libs/proto/Cargo.toml @@ -23,5 +23,5 @@ edition = "2021" [dependencies] futures-core = "0.3.30" prost = "0.12.3" -tonic = "0.10.2" -tonic-types = "0.10.2" +tonic = "0.11.0" +tonic-types = "0.11.0" diff --git a/rust/libs/proto/src/lib.rs b/rust/libs/proto/src/lib.rs index a25f31ae09..b9b1d0bac0 100644 --- a/rust/libs/proto/src/lib.rs +++ b/rust/libs/proto/src/lib.rs @@ -31,8 +31,8 @@ pub mod vald { } } -#[cfg(test)] -mod tests { - #[test] - fn it_works() {} +pub mod core { + pub mod v1 { + include!("core.v1.tonic.rs"); + } } diff --git a/versions/PROMETHEUS_STACK_VERSION b/versions/PROMETHEUS_STACK_VERSION index 9c0be4b799..f71a9b549a 100644 --- a/versions/PROMETHEUS_STACK_VERSION +++ b/versions/PROMETHEUS_STACK_VERSION @@ -1 +1 @@ -61.6.0 +61.6.1 diff --git a/versions/actions/PETER_EVANS_CREATE_PULL_REQUEST b/versions/actions/PETER_EVANS_CREATE_PULL_REQUEST new file mode 100644 index 0000000000..dfda3e0b4f --- /dev/null +++ b/versions/actions/PETER_EVANS_CREATE_PULL_REQUEST @@ -0,0 +1 @@ +6.1.0