From 26eb16af2a5524525b3da1e15c303cf68ee824dd Mon Sep 17 00:00:00 2001 From: Congqi Xia Date: Fri, 12 Jul 2024 17:07:28 +0800 Subject: [PATCH] enhance: [hotfix2.4.5] Cherry pick some crucial fixes Cherry-pick from 2.4 pr: #33996 #33940 #34004 #34020 #34126 #34185 #34195 #34210 #34240 Co-authored-by: xige-16 Co-authored-by: yangxuan Co-authored-by: sunby Co-authored-by: shaoting-huang Signed-off-by: Congqi Xia --- .env | 8 ++++---- .github/workflows/mac.yaml | 2 +- .golangci.yml | 2 +- DEVELOPMENT.md | 12 ++++++------ Makefile | 15 ++++++++------- README.md | 6 +++--- README_CN.md | 2 +- .../docker/builder/cpu/amazonlinux2023/Dockerfile | 15 ++++++++++++--- build/docker/builder/cpu/rockylinux8/Dockerfile | 2 +- build/docker/builder/cpu/ubuntu20.04/Dockerfile | 2 +- build/docker/builder/gpu/ubuntu20.04/Dockerfile | 2 +- build/docker/builder/gpu/ubuntu22.04/Dockerfile | 2 +- build/docker/meta-migration/builder/Dockerfile | 2 +- client/go.mod | 2 +- configs/milvus.yaml | 2 +- configs/pgo/default.pgo | 0 go.mod | 2 +- internal/datacoord/channel_manager_v2.go | 6 ++++-- internal/datanode/importv2/task_import.go | 10 +++++++--- internal/datanode/importv2/task_l0_import.go | 9 ++++++--- internal/datanode/importv2/task_l0_preimport.go | 3 +-- internal/datanode/importv2/task_preimport.go | 4 ++-- internal/kv/tikv/txn_tikv.go | 2 +- internal/querynodev2/pkoracle/candidate.go | 3 ++- internal/querynodev2/segments/manager.go | 9 +++++++-- internal/rootcoord/broker.go | 2 +- internal/util/initcore/init_core.go | 4 ++++ pkg/go.mod | 2 +- pkg/util/paramtable/component_param.go | 4 ++-- scripts/README.md | 2 +- 30 files changed, 83 insertions(+), 55 deletions(-) create mode 100644 configs/pgo/default.pgo diff --git a/.env b/.env index 96cd6e27ed18..6beb24525c5e 100644 --- a/.env +++ b/.env @@ -5,12 +5,12 @@ IMAGE_ARCH=amd64 OS_NAME=ubuntu20.04 # for services.builder.image in docker-compose.yml -DATE_VERSION=20240429-6289f3a -LATEST_DATE_VERSION=20240429-6289f3a +DATE_VERSION=20240520-d27db99 +LATEST_DATE_VERSION=20240520-d27db99 # for services.gpubuilder.image in docker-compose.yml -GPU_DATE_VERSION=20240409-08bfb43 -LATEST_GPU_DATE_VERSION=20240409-08bfb43 +GPU_DATE_VERSION=20240520-c35eaaa +LATEST_GPU_DATE_VERSION=20240520-c35eaaa # for other services in docker-compose.yml MINIO_ADDRESS=minio:9000 diff --git a/.github/workflows/mac.yaml b/.github/workflows/mac.yaml index d17125b9d7c8..ccb21ebaab5a 100644 --- a/.github/workflows/mac.yaml +++ b/.github/workflows/mac.yaml @@ -56,7 +56,7 @@ jobs: - name: Setup Go environment uses: actions/setup-go@v2.2.0 with: - go-version: '~1.20.7' + go-version: '~1.21.10' - name: Mac Cache Go Mod Volumes uses: actions/cache@v3 with: diff --git a/.golangci.yml b/.golangci.yml index 09779daf2548..91895ce0cc11 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,5 +1,5 @@ run: - go: "1.20" + go: "1.21" skip-dirs: - build - configs diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 12d92600e311..88de174aa695 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -104,7 +104,7 @@ You can use Vscode to integrate C++ and Go together. Please replace user.setting Linux systems (Recommend Ubuntu 20.04 or later): ```bash -go: >= 1.20 +go: >= 1.21 cmake: >= 3.18 gcc: 7.5 conan: 1.61 @@ -113,7 +113,7 @@ conan: 1.61 MacOS systems with x86_64 (Big Sur 11.5 or later recommended): ```bash -go: >= 1.20 +go: >= 1.21 cmake: >= 3.18 llvm: >= 15 conan: 1.61 @@ -122,7 +122,7 @@ conan: 1.61 MacOS systems with Apple Silicon (Monterey 12.0.1 or later recommended): ```bash -go: >= 1.20 (Arch=ARM64) +go: >= 1.21 (Arch=ARM64) cmake: >= 3.18 llvm: >= 15 conan: 1.61 @@ -178,7 +178,7 @@ Confirm that your `GOPATH` and `GOBIN` environment variables are correctly set a ```shell $ go version ``` -Note: go >= 1.20 is required to build Milvus. +Note: go >= 1.21 is required to build Milvus. #### Docker & Docker Compose @@ -239,8 +239,8 @@ pip3 install conan==1.61.0 #### Install GO 1.80 ```bash -wget https://go.dev/dl/go1.18.10.linux-arm64.tar.gz -tar zxf go1.18.10.linux-arm64.tar.gz +wget https://go.dev/dl/go1.21.10.linux-arm64.tar.gz +tar zxf go1.21.10.linux-arm64.tar.gz mv ./go /usr/local vi /etc/profile export PATH=$PATH:/usr/local/go/bin diff --git a/Makefile b/Makefile index 268f7f994f25..c1bfc9e901e7 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,7 @@ OBJPREFIX := "github.com/milvus-io/milvus/cmd/milvus" INSTALL_PATH := $(PWD)/bin LIBRARY_PATH := $(PWD)/lib +PGO_PATH := $(PWD)/configs/pgo OS := $(shell uname -s) mode = Release @@ -72,14 +73,14 @@ milvus: build-cpp print-build-info @echo "Building Milvus ..." @source $(PWD)/scripts/setenv.sh && \ mkdir -p $(INSTALL_PATH) && go env -w CGO_ENABLED="1" && \ - GO111MODULE=on $(GO) build -ldflags="-r $${RPATH} -X '$(OBJPREFIX).BuildTags=$(BUILD_TAGS)' -X '$(OBJPREFIX).BuildTime=$(BUILD_TIME)' -X '$(OBJPREFIX).GitCommit=$(GIT_COMMIT)' -X '$(OBJPREFIX).GoVersion=$(GO_VERSION)'" \ + GO111MODULE=on $(GO) build -pgo=$(PGO_PATH)/default.pgo -ldflags="-r $${RPATH} -X '$(OBJPREFIX).BuildTags=$(BUILD_TAGS)' -X '$(OBJPREFIX).BuildTime=$(BUILD_TIME)' -X '$(OBJPREFIX).GitCommit=$(GIT_COMMIT)' -X '$(OBJPREFIX).GoVersion=$(GO_VERSION)'" \ -tags dynamic -o $(INSTALL_PATH)/milvus $(PWD)/cmd/main.go 1>/dev/null milvus-gpu: build-cpp-gpu print-gpu-build-info @echo "Building Milvus-gpu ..." @source $(PWD)/scripts/setenv.sh && \ mkdir -p $(INSTALL_PATH) && go env -w CGO_ENABLED="1" && \ - GO111MODULE=on $(GO) build -ldflags="-r $${RPATH} -X '$(OBJPREFIX).BuildTags=$(BUILD_TAGS_GPU)' -X '$(OBJPREFIX).BuildTime=$(BUILD_TIME)' -X '$(OBJPREFIX).GitCommit=$(GIT_COMMIT)' -X '$(OBJPREFIX).GoVersion=$(GO_VERSION)'" \ + GO111MODULE=on $(GO) build -pgo=$(PGO_PATH)/default.pgo -ldflags="-r $${RPATH} -X '$(OBJPREFIX).BuildTags=$(BUILD_TAGS_GPU)' -X '$(OBJPREFIX).BuildTime=$(BUILD_TIME)' -X '$(OBJPREFIX).GitCommit=$(GIT_COMMIT)' -X '$(OBJPREFIX).GoVersion=$(GO_VERSION)'" \ -tags dynamic -o $(INSTALL_PATH)/milvus $(PWD)/cmd/main.go 1>/dev/null get-build-deps: @@ -106,7 +107,7 @@ getdeps: tools/bin/revive: tools/check/go.mod cd tools/check; \ - $(GO) build -o ../bin/revive github.com/mgechev/revive + $(GO) build -pgo=$(PGO_PATH)/default.pgo -o ../bin/revive github.com/mgechev/revive cppcheck: @#(env bash ${PWD}/scripts/core_build.sh -l) @@ -164,14 +165,14 @@ binlog: @echo "Building binlog ..." @source $(PWD)/scripts/setenv.sh && \ mkdir -p $(INSTALL_PATH) && go env -w CGO_ENABLED="1" && \ - GO111MODULE=on $(GO) build -ldflags="-r $${RPATH}" -o $(INSTALL_PATH)/binlog $(PWD)/cmd/tools/binlog/main.go 1>/dev/null + GO111MODULE=on $(GO) build -pgo=$(PGO_PATH)/default.pgo -ldflags="-r $${RPATH}" -o $(INSTALL_PATH)/binlog $(PWD)/cmd/tools/binlog/main.go 1>/dev/null MIGRATION_PATH = $(PWD)/cmd/tools/migration meta-migration: @echo "Building migration tool ..." @source $(PWD)/scripts/setenv.sh && \ mkdir -p $(INSTALL_PATH) && go env -w CGO_ENABLED="1" && \ - GO111MODULE=on $(GO) build -ldflags="-r $${RPATH} -X '$(OBJPREFIX).BuildTags=$(BUILD_TAGS)' -X '$(OBJPREFIX).BuildTime=$(BUILD_TIME)' -X '$(OBJPREFIX).GitCommit=$(GIT_COMMIT)' -X '$(OBJPREFIX).GoVersion=$(GO_VERSION)'" \ + GO111MODULE=on $(GO) build -pgo=$(PGO_PATH)/default.pgo -ldflags="-r $${RPATH} -X '$(OBJPREFIX).BuildTags=$(BUILD_TAGS)' -X '$(OBJPREFIX).BuildTime=$(BUILD_TIME)' -X '$(OBJPREFIX).GitCommit=$(GIT_COMMIT)' -X '$(OBJPREFIX).GoVersion=$(GO_VERSION)'" \ -tags dynamic -o $(INSTALL_PATH)/meta-migration $(MIGRATION_PATH)/main.go 1>/dev/null INTERATION_PATH = $(PWD)/tests/integration @@ -366,7 +367,7 @@ clean: milvus-tools: print-build-info @echo "Building tools ..." @mkdir -p $(INSTALL_PATH)/tools && go env -w CGO_ENABLED="1" && GO111MODULE=on $(GO) build \ - -ldflags="-X 'main.BuildTags=$(BUILD_TAGS)' -X 'main.BuildTime=$(BUILD_TIME)' -X 'main.GitCommit=$(GIT_COMMIT)' -X 'main.GoVersion=$(GO_VERSION)'" \ + -pgo=$(PGO_PATH)/default.pgo -ldflags="-X 'main.BuildTags=$(BUILD_TAGS)' -X 'main.BuildTime=$(BUILD_TIME)' -X 'main.GitCommit=$(GIT_COMMIT)' -X 'main.GoVersion=$(GO_VERSION)'" \ -o $(INSTALL_PATH)/tools $(PWD)/cmd/tools/* 1>/dev/null rpm-setup: @@ -514,5 +515,5 @@ mmap-migration: @echo "Building migration tool ..." @source $(PWD)/scripts/setenv.sh && \ mkdir -p $(INSTALL_PATH) && go env -w CGO_ENABLED="1" && \ - GO111MODULE=on $(GO) build -ldflags="-r $${RPATH} -X '$(OBJPREFIX).BuildTags=$(BUILD_TAGS)' -X '$(OBJPREFIX).BuildTime=$(BUILD_TIME)' -X '$(OBJPREFIX).GitCommit=$(GIT_COMMIT)' -X '$(OBJPREFIX).GoVersion=$(GO_VERSION)'" \ + GO111MODULE=on $(GO) build -pgo=$(PGO_PATH)/default.pgo -ldflags="-r $${RPATH} -X '$(OBJPREFIX).BuildTags=$(BUILD_TAGS)' -X '$(OBJPREFIX).BuildTime=$(BUILD_TIME)' -X '$(OBJPREFIX).GitCommit=$(GIT_COMMIT)' -X '$(OBJPREFIX).GoVersion=$(GO_VERSION)'" \ -tags dynamic -o $(INSTALL_PATH)/mmap-migration $(MMAP_MIGRATION_PATH)/main.go 1>/dev/null \ No newline at end of file diff --git a/README.md b/README.md index d4de9cb07a56..f352fce1fbda 100644 --- a/README.md +++ b/README.md @@ -72,21 +72,21 @@ Check the requirements first. Linux systems (Ubuntu 20.04 or later recommended): ```bash -go: >= 1.20 +go: >= 1.21 cmake: >= 3.26.4 gcc: 7.5 ``` MacOS systems with x86_64 (Big Sur 11.5 or later recommended): ```bash -go: >= 1.20 +go: >= 1.21 cmake: >= 3.26.4 llvm: >= 15 ``` MacOS systems with Apple Silicon (Monterey 12.0.1 or later recommended): ```bash -go: >= 1.20 (Arch=ARM64) +go: >= 1.21 (Arch=ARM64) cmake: >= 3.26.4 llvm: >= 15 ``` diff --git a/README_CN.md b/README_CN.md index 2a4e149a72d5..c7fe1f4e7eb1 100644 --- a/README_CN.md +++ b/README_CN.md @@ -68,7 +68,7 @@ Milvus 基于 [Apache 2.0 License](https://github.com/milvus-io/milvus/blob/mast 请先安装相关依赖。 ``` -go: 1.20 +go: 1.21 cmake: >=3.18 gcc: 7.5 protobuf: >=3.7 diff --git a/build/docker/builder/cpu/amazonlinux2023/Dockerfile b/build/docker/builder/cpu/amazonlinux2023/Dockerfile index d5516fd46ab0..d052c37755b7 100644 --- a/build/docker/builder/cpu/amazonlinux2023/Dockerfile +++ b/build/docker/builder/cpu/amazonlinux2023/Dockerfile @@ -14,10 +14,19 @@ FROM amazonlinux:2023 ARG TARGETARCH RUN dnf install -y wget g++ gcc gdb libatomic libstdc++-static ninja-build git make zip unzip tar which \ - autoconf automake golang python3 python3-pip perl-FindBin texinfo \ + autoconf automake python3 python3-pip perl-FindBin texinfo \ pkg-config libuuid-devel libaio perl-IPC-Cmd libasan openblas-devel && \ rm -rf /var/cache/yum/* +ENV GOPATH /go +ENV GOROOT /usr/local/go +ENV GO111MODULE on +ENV PATH $GOPATH/bin:$GOROOT/bin:$PATH +RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.10.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \ + mkdir -p "$GOPATH/src" "$GOPATH/bin" && \ + go clean --modcache && \ + chmod -R 777 "$GOPATH" && chmod -R a+w $(go env GOTOOLDIR) + RUN pip3 install conan==1.61.0 RUN echo "target arch $TARGETARCH" @@ -35,9 +44,9 @@ RUN /opt/vcpkg/bootstrap-vcpkg.sh -disableMetrics && ln -s /opt/vcpkg/vcpkg /usr RUN vcpkg install azure-identity-cpp azure-storage-blobs-cpp gtest --only-downloads RUN mkdir /tmp/ccache && cd /tmp/ccache &&\ - wget https://dl.fedoraproject.org/pub/epel/9/Everything/`uname -m`/Packages/h/hiredis-1.0.2-1.el9.`uname -m`.rpm &&\ + wget https://dl.fedoraproject.org/pub/epel/9/Everything/`uname -m`/Packages/h/hiredis-1.0.2-2.el9.`uname -m`.rpm &&\ wget https://dl.fedoraproject.org/pub/epel/9/Everything/`uname -m`/Packages/c/ccache-4.5.1-2.el9.`uname -m`.rpm &&\ - rpm -i hiredis-1.0.2-1.el9.`uname -m`.rpm ccache-4.5.1-2.el9.`uname -m`.rpm &&\ + rpm -i hiredis-1.0.2-2.el9.`uname -m`.rpm ccache-4.5.1-2.el9.`uname -m`.rpm &&\ rm -rf /tmp/ccache diff --git a/build/docker/builder/cpu/rockylinux8/Dockerfile b/build/docker/builder/cpu/rockylinux8/Dockerfile index 74e625b57f9a..ec1ea089035c 100644 --- a/build/docker/builder/cpu/rockylinux8/Dockerfile +++ b/build/docker/builder/cpu/rockylinux8/Dockerfile @@ -43,7 +43,7 @@ RUN dnf -y update && \ RUN pip3 install conan==1.61.0 -RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.20.7.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go +RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.10.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go RUN curl https://sh.rustup.rs -sSf | \ sh -s -- --default-toolchain=1.73 -y diff --git a/build/docker/builder/cpu/ubuntu20.04/Dockerfile b/build/docker/builder/cpu/ubuntu20.04/Dockerfile index 77dd0ba10190..beae59281a37 100644 --- a/build/docker/builder/cpu/ubuntu20.04/Dockerfile +++ b/build/docker/builder/cpu/ubuntu20.04/Dockerfile @@ -40,7 +40,7 @@ ENV GOPATH /go ENV GOROOT /usr/local/go ENV GO111MODULE on ENV PATH $GOPATH/bin:$GOROOT/bin:$PATH -RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.20.7.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \ +RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.10.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \ mkdir -p "$GOPATH/src" "$GOPATH/bin" && \ go clean --modcache && \ chmod -R 777 "$GOPATH" && chmod -R a+w $(go env GOTOOLDIR) diff --git a/build/docker/builder/gpu/ubuntu20.04/Dockerfile b/build/docker/builder/gpu/ubuntu20.04/Dockerfile index a9fc65f3a895..ba8613622781 100644 --- a/build/docker/builder/gpu/ubuntu20.04/Dockerfile +++ b/build/docker/builder/gpu/ubuntu20.04/Dockerfile @@ -51,7 +51,7 @@ ENV GOPATH /go ENV GOROOT /usr/local/go ENV GO111MODULE on ENV PATH $GOPATH/bin:$GOROOT/bin:$PATH -RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.20.7.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \ +RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.10.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go && \ mkdir -p "$GOPATH/src" "$GOPATH/bin" && \ curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b ${GOROOT}/bin v1.46.2 && \ # export GO111MODULE=on && go get github.com/quasilyte/go-ruleguard/cmd/ruleguard@v0.2.1 && \ diff --git a/build/docker/builder/gpu/ubuntu22.04/Dockerfile b/build/docker/builder/gpu/ubuntu22.04/Dockerfile index df5b979eae63..3f487b008561 100644 --- a/build/docker/builder/gpu/ubuntu22.04/Dockerfile +++ b/build/docker/builder/gpu/ubuntu22.04/Dockerfile @@ -13,7 +13,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends wget curl ca-ce # Install go -RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.20.7.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go +RUN mkdir -p /usr/local/go && wget -qO- "https://go.dev/dl/go1.21.10.linux-$TARGETARCH.tar.gz" | tar --strip-components=1 -xz -C /usr/local/go # Install conan RUN pip3 install conan==1.61.0 # Install rust diff --git a/build/docker/meta-migration/builder/Dockerfile b/build/docker/meta-migration/builder/Dockerfile index cf7832dcdea6..f102266fcfc4 100644 --- a/build/docker/meta-migration/builder/Dockerfile +++ b/build/docker/meta-migration/builder/Dockerfile @@ -1,2 +1,2 @@ -FROM golang:1.20.4-alpine3.17 +FROM golang:1.21.10-alpine3.19 RUN apk add --no-cache make bash \ No newline at end of file diff --git a/client/go.mod b/client/go.mod index e74a11debf03..e542661b6472 100644 --- a/client/go.mod +++ b/client/go.mod @@ -1,6 +1,6 @@ module github.com/milvus-io/milvus/client/v2 -go 1.20 +go 1.21 require ( github.com/blang/semver/v4 v4.0.0 diff --git a/configs/milvus.yaml b/configs/milvus.yaml index 035de8a59c7a..1f97eca68622 100644 --- a/configs/milvus.yaml +++ b/configs/milvus.yaml @@ -416,7 +416,7 @@ dataCoord: channel: watchTimeoutInterval: 300 # Timeout on watching channels (in seconds). Datanode tickler update watch progress will reset timeout timer. balanceWithRpc: true # Whether to enable balance with RPC, default to use etcd watch - legacyVersionWithoutRPCWatch: 2.4.0 # Datanodes <= this version are considered as legacy nodes, which doesn't have rpc based watch(). This is only used during rolling upgrade where legacy nodes won't get new channels + legacyVersionWithoutRPCWatch: 2.4.1 # Datanodes <= this version are considered as legacy nodes, which doesn't have rpc based watch(). This is only used during rolling upgrade where legacy nodes won't get new channels balanceSilentDuration: 300 # The duration after which the channel manager start background channel balancing balanceInterval: 360 # The interval with which the channel manager check dml channel balance status checkInterval: 1 # The interval in seconds with which the channel manager advances channel states diff --git a/configs/pgo/default.pgo b/configs/pgo/default.pgo new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/go.mod b/go.mod index c1c2177f6c25..63b4f1036e41 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/milvus-io/milvus -go 1.20 +go 1.21 require ( github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0 diff --git a/internal/datacoord/channel_manager_v2.go b/internal/datacoord/channel_manager_v2.go index 53504e16b020..cee393b1b7dd 100644 --- a/internal/datacoord/channel_manager_v2.go +++ b/internal/datacoord/channel_manager_v2.go @@ -529,6 +529,7 @@ func (m *ChannelManagerImplV2) advanceToNotifies(ctx context.Context, toNotifies if channelCount == 0 { continue } + nodeID := nodeAssign.NodeID var ( succeededChannels = make([]RWChannel, 0, channelCount) @@ -548,7 +549,7 @@ func (m *ChannelManagerImplV2) advanceToNotifies(ctx context.Context, toNotifies tmpWatchInfo.Vchan = m.h.GetDataVChanPositions(innerCh, allPartitionID) future := getOrCreateIOPool().Submit(func() (any, error) { - err := m.Notify(ctx, nodeAssign.NodeID, tmpWatchInfo) + err := m.Notify(ctx, nodeID, tmpWatchInfo) return innerCh, err }) futures = append(futures, future) @@ -591,6 +592,7 @@ func (m *ChannelManagerImplV2) advanceToChecks(ctx context.Context, toChecks []* continue } + nodeID := nodeAssign.NodeID futures := make([]*conc.Future[any], 0, len(nodeAssign.Channels)) chNames := lo.Keys(nodeAssign.Channels) @@ -603,7 +605,7 @@ func (m *ChannelManagerImplV2) advanceToChecks(ctx context.Context, toChecks []* innerCh := ch future := getOrCreateIOPool().Submit(func() (any, error) { - successful, got := m.Check(ctx, nodeAssign.NodeID, innerCh.GetWatchInfo()) + successful, got := m.Check(ctx, nodeID, innerCh.GetWatchInfo()) if got { return poolResult{ successful: successful, diff --git a/internal/datanode/importv2/task_import.go b/internal/datanode/importv2/task_import.go index b5094bbd650c..006dd3df8902 100644 --- a/internal/datanode/importv2/task_import.go +++ b/internal/datanode/importv2/task_import.go @@ -22,7 +22,6 @@ import ( "time" "github.com/cockroachdb/errors" - "github.com/golang/protobuf/proto" "github.com/samber/lo" "go.uber.org/zap" @@ -36,6 +35,7 @@ import ( "github.com/milvus-io/milvus/pkg/log" "github.com/milvus-io/milvus/pkg/util/conc" "github.com/milvus-io/milvus/pkg/util/paramtable" + "github.com/milvus-io/milvus/pkg/util/typeutil" ) type ImportTask struct { @@ -107,11 +107,15 @@ func (t *ImportTask) GetSegmentsInfo() []*datapb.ImportSegmentInfo { func (t *ImportTask) Clone() Task { ctx, cancel := context.WithCancel(t.ctx) + infos := make(map[int64]*datapb.ImportSegmentInfo) + for id, info := range t.segmentsInfo { + infos[id] = typeutil.Clone(info) + } return &ImportTask{ - ImportTaskV2: proto.Clone(t.ImportTaskV2).(*datapb.ImportTaskV2), + ImportTaskV2: typeutil.Clone(t.ImportTaskV2), ctx: ctx, cancel: cancel, - segmentsInfo: t.segmentsInfo, + segmentsInfo: infos, req: t.req, metaCaches: t.metaCaches, } diff --git a/internal/datanode/importv2/task_l0_import.go b/internal/datanode/importv2/task_l0_import.go index 48d35d2f830f..dc0b36affd57 100644 --- a/internal/datanode/importv2/task_l0_import.go +++ b/internal/datanode/importv2/task_l0_import.go @@ -23,7 +23,6 @@ import ( "time" "github.com/cockroachdb/errors" - "github.com/golang/protobuf/proto" "github.com/samber/lo" "go.uber.org/zap" @@ -104,11 +103,15 @@ func (t *L0ImportTask) GetSegmentsInfo() []*datapb.ImportSegmentInfo { func (t *L0ImportTask) Clone() Task { ctx, cancel := context.WithCancel(t.ctx) + infos := make(map[int64]*datapb.ImportSegmentInfo) + for id, info := range t.segmentsInfo { + infos[id] = typeutil.Clone(info) + } return &L0ImportTask{ - ImportTaskV2: proto.Clone(t.ImportTaskV2).(*datapb.ImportTaskV2), + ImportTaskV2: typeutil.Clone(t.ImportTaskV2), ctx: ctx, cancel: cancel, - segmentsInfo: t.segmentsInfo, + segmentsInfo: infos, req: t.req, metaCaches: t.metaCaches, } diff --git a/internal/datanode/importv2/task_l0_preimport.go b/internal/datanode/importv2/task_l0_preimport.go index 89f16c876a5e..a6bae0759ca6 100644 --- a/internal/datanode/importv2/task_l0_preimport.go +++ b/internal/datanode/importv2/task_l0_preimport.go @@ -23,7 +23,6 @@ import ( "time" "github.com/cockroachdb/errors" - "github.com/golang/protobuf/proto" "github.com/samber/lo" "go.uber.org/zap" @@ -102,7 +101,7 @@ func (t *L0PreImportTask) Cancel() { func (t *L0PreImportTask) Clone() Task { ctx, cancel := context.WithCancel(t.ctx) return &L0PreImportTask{ - PreImportTask: proto.Clone(t.PreImportTask).(*datapb.PreImportTask), + PreImportTask: typeutil.Clone(t.PreImportTask), ctx: ctx, cancel: cancel, partitionIDs: t.GetPartitionIDs(), diff --git a/internal/datanode/importv2/task_preimport.go b/internal/datanode/importv2/task_preimport.go index 4d2ce93de7ea..73764e4ad4eb 100644 --- a/internal/datanode/importv2/task_preimport.go +++ b/internal/datanode/importv2/task_preimport.go @@ -23,7 +23,6 @@ import ( "time" "github.com/cockroachdb/errors" - "github.com/golang/protobuf/proto" "github.com/samber/lo" "go.uber.org/zap" @@ -36,6 +35,7 @@ import ( "github.com/milvus-io/milvus/pkg/log" "github.com/milvus-io/milvus/pkg/util/conc" "github.com/milvus-io/milvus/pkg/util/paramtable" + "github.com/milvus-io/milvus/pkg/util/typeutil" ) type PreImportTask struct { @@ -108,7 +108,7 @@ func (p *PreImportTask) Cancel() { func (p *PreImportTask) Clone() Task { ctx, cancel := context.WithCancel(p.ctx) return &PreImportTask{ - PreImportTask: proto.Clone(p.PreImportTask).(*datapb.PreImportTask), + PreImportTask: typeutil.Clone(p.PreImportTask), ctx: ctx, cancel: cancel, partitionIDs: p.GetPartitionIDs(), diff --git a/internal/kv/tikv/txn_tikv.go b/internal/kv/tikv/txn_tikv.go index 669faadf38ed..8fca5d0d4567 100644 --- a/internal/kv/tikv/txn_tikv.go +++ b/internal/kv/tikv/txn_tikv.go @@ -398,7 +398,7 @@ func (kv *txnTiKV) MultiRemove(keys []string) error { for _, key := range keys { key = path.Join(kv.rootPath, key) - loggingErr = txn.Delete([]byte(key)) + err = txn.Delete([]byte(key)) if err != nil { loggingErr = errors.Wrap(err, fmt.Sprintf("Failed to delete %s for MultiRemove", key)) return loggingErr diff --git a/internal/querynodev2/pkoracle/candidate.go b/internal/querynodev2/pkoracle/candidate.go index bb2479702b7d..9f8a8b7daf60 100644 --- a/internal/querynodev2/pkoracle/candidate.go +++ b/internal/querynodev2/pkoracle/candidate.go @@ -52,7 +52,8 @@ func WithSegmentType(typ commonpb.SegmentState) CandidateFilter { // WithWorkerID returns CandidateFilter with provided worker id. func WithWorkerID(workerID int64) CandidateFilter { return func(candidate candidateWithWorker) bool { - return candidate.workerID == workerID + return candidate.workerID == workerID || + workerID == -1 // wildcard for offline node } } diff --git a/internal/querynodev2/segments/manager.go b/internal/querynodev2/segments/manager.go index c54f1fd8d50f..b3affeb3d1b8 100644 --- a/internal/querynodev2/segments/manager.go +++ b/internal/querynodev2/segments/manager.go @@ -36,6 +36,7 @@ import ( "github.com/milvus-io/milvus/internal/proto/datapb" "github.com/milvus-io/milvus/internal/proto/querypb" "github.com/milvus-io/milvus/internal/querynodev2/segments/metricsutil" + "github.com/milvus-io/milvus/pkg/common" "github.com/milvus-io/milvus/pkg/eventlog" "github.com/milvus-io/milvus/pkg/log" "github.com/milvus-io/milvus/pkg/metrics" @@ -764,11 +765,15 @@ func (mgr *segmentManager) updateMetric() { collections, partiations := make(typeutil.Set[int64]), make(typeutil.Set[int64]) for _, seg := range mgr.growingSegments { collections.Insert(seg.Collection()) - partiations.Insert(seg.Partition()) + if seg.Partition() != common.AllPartitionsID { + partiations.Insert(seg.Partition()) + } } for _, seg := range mgr.sealedSegments { collections.Insert(seg.Collection()) - partiations.Insert(seg.Partition()) + if seg.Partition() != common.AllPartitionsID { + partiations.Insert(seg.Partition()) + } } metrics.QueryNodeNumCollections.WithLabelValues(fmt.Sprint(paramtable.GetNodeID())).Set(float64(collections.Len())) metrics.QueryNodeNumPartitions.WithLabelValues(fmt.Sprint(paramtable.GetNodeID())).Set(float64(partiations.Len())) diff --git a/internal/rootcoord/broker.go b/internal/rootcoord/broker.go index c1fa30d0ac03..c4b908aede71 100644 --- a/internal/rootcoord/broker.go +++ b/internal/rootcoord/broker.go @@ -253,7 +253,7 @@ func (b *ServerBroker) BroadcastAlteredCollection(ctx context.Context, req *milv }, PartitionIDs: partitionIDs, StartPositions: colMeta.StartPositions, - Properties: req.GetProperties(), + Properties: colMeta.Properties, DbID: db.ID, VChannels: colMeta.VirtualChannelNames, } diff --git a/internal/util/initcore/init_core.go b/internal/util/initcore/init_core.go index f4bb9ec9634f..c99ddb66d560 100644 --- a/internal/util/initcore/init_core.go +++ b/internal/util/initcore/init_core.go @@ -50,6 +50,7 @@ func InitTraceConfig(params *paramtable.ComponentParam) { exporter := C.CString(params.TraceCfg.Exporter.GetValue()) jaegerURL := C.CString(params.TraceCfg.JaegerURL.GetValue()) endpoint := C.CString(params.TraceCfg.OtlpEndpoint.GetValue()) + otlpSecure := params.TraceCfg.OtlpSecure.GetAsBool() defer C.free(unsafe.Pointer(exporter)) defer C.free(unsafe.Pointer(jaegerURL)) defer C.free(unsafe.Pointer(endpoint)) @@ -59,6 +60,7 @@ func InitTraceConfig(params *paramtable.ComponentParam) { sampleFraction: sampleFraction, jaegerURL: jaegerURL, otlpEndpoint: endpoint, + oltpSecure: (C.bool)(otlpSecure), nodeID: nodeID, } C.InitTrace(&config) @@ -70,6 +72,7 @@ func ResetTraceConfig(params *paramtable.ComponentParam) { exporter := C.CString(params.TraceCfg.Exporter.GetValue()) jaegerURL := C.CString(params.TraceCfg.JaegerURL.GetValue()) endpoint := C.CString(params.TraceCfg.OtlpEndpoint.GetValue()) + otlpSecure := params.TraceCfg.OtlpSecure.GetAsBool() defer C.free(unsafe.Pointer(exporter)) defer C.free(unsafe.Pointer(jaegerURL)) defer C.free(unsafe.Pointer(endpoint)) @@ -79,6 +82,7 @@ func ResetTraceConfig(params *paramtable.ComponentParam) { sampleFraction: sampleFraction, jaegerURL: jaegerURL, otlpEndpoint: endpoint, + oltpSecure: (C.bool)(otlpSecure), nodeID: nodeID, } C.SetTrace(&config) diff --git a/pkg/go.mod b/pkg/go.mod index ed5583366a5e..6f967a0c2260 100644 --- a/pkg/go.mod +++ b/pkg/go.mod @@ -1,6 +1,6 @@ module github.com/milvus-io/milvus/pkg -go 1.20 +go 1.21 require ( github.com/apache/pulsar-client-go v0.6.1-0.20210728062540-29414db801a7 diff --git a/pkg/util/paramtable/component_param.go b/pkg/util/paramtable/component_param.go index f8472c298c9c..d377ca0a739d 100644 --- a/pkg/util/paramtable/component_param.go +++ b/pkg/util/paramtable/component_param.go @@ -2825,8 +2825,8 @@ func (p *dataCoordConfig) init(base *BaseTable) { p.LegacyVersionWithoutRPCWatch = ParamItem{ Key: "dataCoord.channel.legacyVersionWithoutRPCWatch", - Version: "2.4.0", - DefaultValue: "2.4.0", + Version: "2.4.1", + DefaultValue: "2.4.1", Doc: "Datanodes <= this version are considered as legacy nodes, which doesn't have rpc based watch(). This is only used during rolling upgrade where legacy nodes won't get new channels", Export: true, } diff --git a/scripts/README.md b/scripts/README.md index f8c1e787f991..6b702620fe48 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -4,7 +4,7 @@ ``` OS: Ubuntu 20.04 -go:1.20 +go:1.21 cmake: >=3.18 gcc: 7.5 ```