From c4fa9ea35695821875d08e4a1d5834aa8c9f66b9 Mon Sep 17 00:00:00 2001 From: congqixia Date: Fri, 17 Jul 2026 14:16:41 +0800 Subject: [PATCH] enhance: [GoSDK] decouple Go client from milvus pkg module (#51420) Related to #51419 - migrate required error and utility helpers into the client module - preserve RPC error codes, retry metadata, and errors.Is semantics - expose client-local RPC errors and common error sentinels - remove github.com/milvus-io/milvus/pkg/v3 and server-only dependencies - lower the client Go version to 1.24.9 --------- Signed-off-by: Congqi Xia --- client/column/vector_test.go | 2 +- client/common/properties.go | 27 ++ client/entity/schema.go | 2 +- client/entity/vectors.go | 2 +- client/go.mod | 63 +--- client/go.sum | 154 ++------ client/index/json.go | 2 +- client/index/json_test.go | 2 +- client/internal/conc/singleflight.go | 34 ++ client/internal/crypto/crypto.go | 23 ++ client/internal/merr/merr.go | 329 ++++++++++++++++++ client/internal/merr/merr_test.go | 135 +++++++ client/internal/retry/retry.go | 78 +++++ client/internal/typeutil/typeutil.go | 137 ++++++++ client/milvusclient/admin.go | 2 +- client/milvusclient/admin_test.go | 2 +- client/milvusclient/alias.go | 2 +- client/milvusclient/alias_test.go | 2 +- client/milvusclient/client.go | 4 +- client/milvusclient/collection.go | 2 +- .../milvusclient/collection_example_test.go | 2 +- client/milvusclient/collection_test.go | 4 +- client/milvusclient/common.go | 8 +- client/milvusclient/common_test.go | 2 +- client/milvusclient/database.go | 2 +- client/milvusclient/database_test.go | 2 +- client/milvusclient/errors.go | 41 +++ client/milvusclient/errors_test.go | 44 +++ client/milvusclient/external_table.go | 2 +- client/milvusclient/index.go | 2 +- client/milvusclient/index_test.go | 2 +- client/milvusclient/iterator.go | 2 +- client/milvusclient/iterator_test.go | 2 +- client/milvusclient/maintenance.go | 2 +- client/milvusclient/maintenance_test.go | 2 +- client/milvusclient/partition.go | 2 +- client/milvusclient/partition_test.go | 2 +- client/milvusclient/rbac.go | 2 +- client/milvusclient/rbac_options.go | 2 +- client/milvusclient/rbac_test.go | 4 +- client/milvusclient/rbac_v2.go | 2 +- client/milvusclient/read.go | 4 +- client/milvusclient/read_test.go | 2 +- client/milvusclient/replicate.go | 2 +- client/milvusclient/replicate_test.go | 2 +- client/milvusclient/resource_group.go | 2 +- client/milvusclient/resource_group_test.go | 2 +- client/milvusclient/snapshot.go | 2 +- client/milvusclient/snapshot_test.go | 2 +- client/milvusclient/telemetry.go | 2 +- client/milvusclient/write.go | 2 +- client/milvusclient/write_options.go | 2 +- client/milvusclient/write_test.go | 2 +- client/row/cache.go | 2 +- 54 files changed, 932 insertions(+), 233 deletions(-) create mode 100644 client/common/properties.go create mode 100644 client/internal/conc/singleflight.go create mode 100644 client/internal/crypto/crypto.go create mode 100644 client/internal/merr/merr.go create mode 100644 client/internal/merr/merr_test.go create mode 100644 client/internal/retry/retry.go create mode 100644 client/internal/typeutil/typeutil.go create mode 100644 client/milvusclient/errors.go create mode 100644 client/milvusclient/errors_test.go diff --git a/client/column/vector_test.go b/client/column/vector_test.go index 68aedc697f..60b16f3e7e 100644 --- a/client/column/vector_test.go +++ b/client/column/vector_test.go @@ -26,7 +26,7 @@ import ( "github.com/stretchr/testify/suite" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/typeutil" + "github.com/milvus-io/milvus/client/v2/internal/typeutil" ) type VectorSuite struct { diff --git a/client/common/properties.go b/client/common/properties.go new file mode 100644 index 0000000000..3dbad5c193 --- /dev/null +++ b/client/common/properties.go @@ -0,0 +1,27 @@ +// Licensed to the LF AI & Data foundation under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you 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 +// +// http://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. + +package common + +const ( + DimKey = "dim" + MaxLengthKey = "max_length" + MaxCapacityKey = "max_capacity" + JSONCastTypeKey = "json_cast_type" + JSONPathKey = "json_path" + CollectionTTLConfigKey = "collection.ttl.seconds" + MmapEnabledKey = "mmap.enabled" +) diff --git a/client/entity/schema.go b/client/entity/schema.go index f80f0a2534..2556ea0be8 100644 --- a/client/entity/schema.go +++ b/client/entity/schema.go @@ -22,7 +22,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" "github.com/milvus-io/milvus-proto/go-api/v3/schemapb" - "github.com/milvus-io/milvus/pkg/v3/util/typeutil" + "github.com/milvus-io/milvus/client/v2/internal/typeutil" ) const ( diff --git a/client/entity/vectors.go b/client/entity/vectors.go index 89de3f1cba..bc91321b98 100644 --- a/client/entity/vectors.go +++ b/client/entity/vectors.go @@ -17,7 +17,7 @@ package entity import ( - "github.com/milvus-io/milvus/pkg/v3/util/typeutil" + "github.com/milvus-io/milvus/client/v2/internal/typeutil" ) // Vector interface vector used int search diff --git a/client/go.mod b/client/go.mod index 4385e03632..a1d79adb9d 100644 --- a/client/go.mod +++ b/client/go.mod @@ -1,6 +1,6 @@ module github.com/milvus-io/milvus/client/v2 -go 1.26.5 +go 1.24.9 require ( github.com/blang/semver/v4 v4.0.0 @@ -8,78 +8,35 @@ require ( github.com/google/uuid v1.6.0 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 github.com/milvus-io/milvus-proto/go-api/v3 v3.0.0-20260625075625-7262f8042a55 - github.com/milvus-io/milvus/pkg/v3 v3.0.0-beta github.com/quasilyte/go-ruleguard/dsl v0.3.23 github.com/samber/lo v1.52.0 github.com/stretchr/testify v1.11.1 github.com/tidwall/gjson v1.17.1 + github.com/x448/float16 v0.8.4 go.uber.org/atomic v1.11.0 + golang.org/x/sync v0.19.0 google.golang.org/grpc v1.80.0 google.golang.org/protobuf v1.36.11 ) require ( - github.com/beorn7/perks v1.0.1 // indirect - github.com/cenkalti/backoff/v4 v4.2.1 // indirect - github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cilium/ebpf v0.11.0 // indirect github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect github.com/cockroachdb/redact v1.1.3 // indirect - github.com/containerd/cgroups/v3 v3.0.3 // indirect - github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/docker/go-units v0.5.0 // indirect - github.com/ebitengine/purego v0.9.0 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect github.com/getsentry/sentry-go v0.12.0 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect - github.com/godbus/dbus/v5 v5.0.4 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect - github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/opencontainers/runtime-spec v1.0.2 // indirect - github.com/panjf2000/ants/v2 v2.11.3 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect - github.com/prometheus/client_golang v1.20.5 // indirect - github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.55.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect - github.com/shirou/gopsutil/v4 v4.25.10 // indirect - github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect - github.com/tklauser/go-sysconf v0.3.15 // indirect - github.com/tklauser/numcpus v0.10.0 // indirect - github.com/twpayne/go-geom v1.6.1 // indirect - github.com/x448/float16 v0.8.4 // indirect - github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.opentelemetry.io/otel v1.43.0 // indirect - go.opentelemetry.io/otel/trace v1.43.0 // indirect - go.uber.org/automaxprocs v1.5.3 // indirect - go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.52.0 // indirect - golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect - golang.org/x/net v0.55.0 // indirect - golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.45.0 // indirect - golang.org/x/text v0.37.0 // indirect - golang.org/x/time v0.10.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect + golang.org/x/net v0.49.0 // indirect + golang.org/x/sys v0.40.0 // indirect + golang.org/x/text v0.33.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apimachinery v0.32.3 // indirect ) - -replace github.com/milvus-io/milvus/pkg/v3 => ../pkg diff --git a/client/go.sum b/client/go.sum index b7cc075dce..cdc4940239 100644 --- a/client/go.sum +++ b/client/go.sum @@ -3,28 +3,16 @@ github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOv github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= -github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= -github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= -github.com/alecthomas/assert/v2 v2.10.0 h1:jjRCHsj6hBJhkmhznrCzoNpbA3zqy0fYiUcYZP/GkPY= -github.com/alecthomas/assert/v2 v2.10.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= -github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= -github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= -github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cilium/ebpf v0.11.0 h1:V8gS/bTCCjX9uUnkUFUpPsksM8n1lXBAvHcpiFk1X2Y= -github.com/cilium/ebpf v0.11.0/go.mod h1:WE7CZAnqOL2RouJ4f1uyNhqr2P4CCvXFIqdRDUgWsVs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -36,26 +24,17 @@ github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9D github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= -github.com/containerd/cgroups/v3 v3.0.3 h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0= -github.com/containerd/cgroups/v3 v3.0.3/go.mod h1:8HBe7V3aWGLFPd/k03swSIsGjZhHI2WzJmticMgVuz0= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/ebitengine/purego v0.9.0 h1:mh0zpKBIXDceC63hpvPuGLiJ8ZAa3DfrFTudmfi8A4k= -github.com/ebitengine/purego v0.9.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -65,11 +44,7 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA= -github.com/frankban/quicktest v1.14.5/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk= github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= @@ -85,14 +60,10 @@ github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ4 github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= -github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -124,13 +95,10 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -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/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -140,8 +108,6 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaW github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= -github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= @@ -153,8 +119,6 @@ github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0Gqw github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12 h1:9Nu54bhS/H/Kgo2/7xNSUuC5G28VR8ljfrLKU2G4IjU= -github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12/go.mod h1:TBzl5BIHNXfS9+C35ZyJaklL7mLDbgUkcgXzSLa8Tk0= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= @@ -166,12 +130,11 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= -github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -179,12 +142,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= @@ -202,15 +161,10 @@ github.com/milvus-io/milvus-proto/go-api/v3 v3.0.0-20260625075625-7262f8042a55/g github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= @@ -218,35 +172,17 @@ github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OS github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/opencontainers/runtime-spec v1.0.2 h1:UfAcuLBJB9Coz72x1hgl8O5RVzTdNiaglX6v2DM6FI0= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/panjf2000/ants/v2 v2.11.3 h1:AfI0ngBoXJmYOpDh9m516vjqoUu2sLrIVgppI9TZVpg= -github.com/panjf2000/ants/v2 v2.11.3/go.mod h1:8u92CYMUc6gyvTIw8Ru7Mt7+/ESnJahz5EVtqfrilek= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pingcap/errors v0.11.5-0.20241219054535-6b8c588c3122 h1:jc1bYMk3a2uD0+yK6Y8sRDrqvRELf/u2foUu7IT40Dw= -github.com/pingcap/errors v0.11.5-0.20241219054535-6b8c588c3122/go.mod h1:X2r9ueLEUZgtx2cIogM0v4Zj5uvvzhuuiu7Pn8HzMPg= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= -github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -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.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= -github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/quasilyte/go-ruleguard/dsl v0.3.23 h1:lxjt5B6ZCiBeeNO8/oQsegE6fLeCzuMRoVWSkXC4uvY= github.com/quasilyte/go-ruleguard/dsl v0.3.23/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= @@ -260,27 +196,18 @@ github.com/samber/lo v1.52.0 h1:Rvi+3BFHES3A8meP33VPAxiBZX/Aws5RxrschYGjomw= github.com/samber/lo v1.52.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shirou/gopsutil/v4 v4.25.10 h1:at8lk/5T1OgtuCp+AwrDofFRjnvosn0nkN2OLQ6g8tA= -github.com/shirou/gopsutil/v4 v4.25.10/go.mod h1:+kSwyC8DRUD9XXEHCAFjK+0nuArFJM0lva+StQAcskM= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= -github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -288,8 +215,6 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= @@ -298,12 +223,6 @@ github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= -github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= -github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= -github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= -github.com/twpayne/go-geom v1.6.1 h1:iLE+Opv0Ihm/ABIcvQFGIiFBXd76oBIar9drAwHFhR4= -github.com/twpayne/go-geom v1.6.1/go.mod h1:Kr+Nly6BswFsKM5sd31YaoWS5PeDDH2NftJTK7Gd028= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= @@ -327,33 +246,23 @@ github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= -github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= -go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= -go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= -go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= -go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= -go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= -go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= -go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= -go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= -go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= 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/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= -go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= -go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -362,11 +271,7 @@ golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= -golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 h1:vr/HnozRka3pE4EsMEg1lgkXJkTFJCVUX+S/ZT6wYzM= -golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -392,8 +297,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= -golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o= +golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -402,8 +307,8 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -413,12 +318,10 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -428,9 +331,8 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= -golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -438,11 +340,9 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= -golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= -golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -470,8 +370,8 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d h1:wT2n40TBqFY6wiwazVK9/iTWbsQrgk5ZfCSVFLO9LQA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= @@ -503,12 +403,8 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= -gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -519,5 +415,3 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/apimachinery v0.32.3 h1:JmDuDarhDmA/Li7j3aPrwhpNBA94Nvk5zLeOge9HH1U= -k8s.io/apimachinery v0.32.3/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= diff --git a/client/index/json.go b/client/index/json.go index 21056ece2d..ef42a4ac48 100644 --- a/client/index/json.go +++ b/client/index/json.go @@ -17,7 +17,7 @@ package index import ( - "github.com/milvus-io/milvus/pkg/v3/common" + "github.com/milvus-io/milvus/client/v2/common" ) var _ Index = &JSONPathIndex{} diff --git a/client/index/json_test.go b/client/index/json_test.go index 1b4c4beb05..3d741fbbb5 100644 --- a/client/index/json_test.go +++ b/client/index/json_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/milvus-io/milvus/pkg/v3/common" + "github.com/milvus-io/milvus/client/v2/common" ) func TestJsonPathIndex(t *testing.T) { diff --git a/client/internal/conc/singleflight.go b/client/internal/conc/singleflight.go new file mode 100644 index 0000000000..eb196c738d --- /dev/null +++ b/client/internal/conc/singleflight.go @@ -0,0 +1,34 @@ +// Licensed to the LF AI & Data foundation under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you 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 +// +// http://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. + +package conc + +import "golang.org/x/sync/singleflight" + +type Singleflight[T any] struct { + group singleflight.Group +} + +func (sf *Singleflight[T]) Do(key string, fn func() (T, error)) (T, error, bool) { + value, err, shared := sf.group.Do(key, func() (any, error) { + return fn() + }) + if value == nil { + var zero T + return zero, err, shared + } + return value.(T), err, shared +} diff --git a/client/internal/crypto/crypto.go b/client/internal/crypto/crypto.go new file mode 100644 index 0000000000..d057354b96 --- /dev/null +++ b/client/internal/crypto/crypto.go @@ -0,0 +1,23 @@ +// Licensed to the LF AI & Data foundation under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you 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 +// +// http://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. + +package crypto + +import "encoding/base64" + +func Base64Encode(value string) string { + return base64.StdEncoding.EncodeToString([]byte(value)) +} diff --git a/client/internal/merr/merr.go b/client/internal/merr/merr.go new file mode 100644 index 0000000000..dbc6803722 --- /dev/null +++ b/client/internal/merr/merr.go @@ -0,0 +1,329 @@ +// Licensed to the LF AI & Data foundation under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you 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 +// +// http://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. + +// Package merr contains the client-side subset of Milvus RPC error handling. +// It deliberately depends only on the public API protobuf module so the Go SDK +// does not need to pull the server-side milvus/pkg module into its dependency +// graph. +package merr + +import ( + "context" + "fmt" + "strings" + + "github.com/cockroachdb/errors" + + "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" +) + +const ( + CanceledCode int32 = 10000 + TimeoutCode int32 = 10001 + unexpectedCode int32 = (1 << 16) - 1 + + inputErrorFlagKey = "is_input_error" +) + +// RPCError is the client representation of an error returned in a Milvus +// commonpb.Status. Errors with the same Milvus code match through errors.Is. +type RPCError struct { + message string + detail string + code int32 + legacyCode commonpb.ErrorCode + retriable bool + input bool +} + +func newRPCError(message string, code int32, legacyCode commonpb.ErrorCode, retriable, input bool) *RPCError { + return &RPCError{ + message: message, + detail: message, + code: code, + legacyCode: legacyCode, + retriable: retriable, + input: input, + } +} + +func (e *RPCError) Error() string { + if e == nil { + return "" + } + return e.message +} + +// Code returns the Milvus numeric error code. +func (e *RPCError) Code() int32 { return e.code } + +// LegacyCode returns the deprecated commonpb.ErrorCode value. +func (e *RPCError) LegacyCode() commonpb.ErrorCode { return e.legacyCode } + +// Detail returns the detailed error message sent by the server. +func (e *RPCError) Detail() string { return e.detail } + +// Retriable reports whether the server marked the error as retriable. +func (e *RPCError) Retriable() bool { return e.retriable } + +// IsInputError reports whether the server classified the error as an input +// error. +func (e *RPCError) IsInputError() bool { return e.input } + +func (e *RPCError) Is(target error) bool { + var other *RPCError + return errors.As(target, &other) && e.code == other.code +} + +var ( + ErrServiceNotReady = newRPCError("service not ready", 1, commonpb.ErrorCode_NotReadyServe, true, false) + ErrServiceInternal = newRPCError("service internal error", 5, commonpb.ErrorCode_UnexpectedError, false, false) + + ErrCollectionNotFound = newRPCError("collection not found", 100, commonpb.ErrorCode_CollectionNotExists, false, false) + ErrCollectionSchemaMismatch = newRPCError("collection schema mismatch", 109, commonpb.ErrorCode_SchemaMismatch, false, true) + ErrIndexNotFound = newRPCError("index not found", 700, commonpb.ErrorCode_IndexNotExist, false, false) + ErrParameterInvalid = newRPCError("invalid parameter", 1100, commonpb.ErrorCode_IllegalArgument, false, true) + + errUnexpected = newRPCError("unexpected error", unexpectedCode, commonpb.ErrorCode_UnexpectedError, false, false) +) + +func cloneWithMessage(base *RPCError, message string) *RPCError { + return &RPCError{ + message: message, + detail: message, + code: base.code, + legacyCode: base.legacyCode, + retriable: base.retriable, + input: base.input, + } +} + +func withDetails(base *RPCError, field string, value any, messages ...string) error { + message := fmt.Sprintf("%s[%s=%v]", base.message, field, value) + if len(messages) > 0 { + message = strings.Join(messages, "->") + ": " + message + } + return cloneWithMessage(base, message) +} + +// Code returns the Milvus code carried by err. +func Code(err error) int32 { + if err == nil { + return 0 + } + var rpcErr *RPCError + if errors.As(err, &rpcErr) { + return rpcErr.code + } + if errors.Is(err, context.Canceled) { + return CanceledCode + } + if errors.Is(err, context.DeadlineExceeded) { + return TimeoutCode + } + return unexpectedCode +} + +// IsRetryableErr reports the retriable bit carried by an RPC error. +func IsRetryableErr(err error) bool { + var rpcErr *RPCError + return errors.As(err, &rpcErr) && rpcErr.retriable +} + +func modernCodeFromLegacy(code commonpb.ErrorCode) int32 { + switch code { + case commonpb.ErrorCode_NotReadyServe: + return 1 + case commonpb.ErrorCode_CollectionNotExists: + return 100 + case commonpb.ErrorCode_IllegalArgument: + return 1100 + case commonpb.ErrorCode_NodeIDNotMatch: + return 904 + case commonpb.ErrorCode_InsufficientMemoryToLoad, commonpb.ErrorCode_MemoryQuotaExhausted: + return 3 + case commonpb.ErrorCode_DiskQuotaExhausted: + return 7 + case commonpb.ErrorCode_TimeTickLongDelay: + return 11 + case commonpb.ErrorCode_RateLimit: + return 8 + case commonpb.ErrorCode_ForceDeny: + return 9 + case commonpb.ErrorCode_IndexNotExist: + return 700 + case commonpb.ErrorCode_SegmentNotFound: + return 600 + case commonpb.ErrorCode_MetaFailed: + return 500 + default: + return unexpectedCode + } +} + +func legacyCodeFromModern(code int32) commonpb.ErrorCode { + switch code { + case 1, 110: + return commonpb.ErrorCode_NotReadyServe + case 100: + return commonpb.ErrorCode_CollectionNotExists + case 1100, 1101, 1102: + return commonpb.ErrorCode_IllegalArgument + case 904: + return commonpb.ErrorCode_NodeIDNotMatch + case 200, 400, 501: + return commonpb.ErrorCode_MetaFailed + case 401, 503, 506, 905: + return commonpb.ErrorCode_NoReplicaAvailable + case 3: + return commonpb.ErrorCode_InsufficientMemoryToLoad + case 7: + return commonpb.ErrorCode_DiskQuotaExhausted + case 11, 505: + return commonpb.ErrorCode_TimeTickLongDelay + case 8: + return commonpb.ErrorCode_RateLimit + case 9: + return commonpb.ErrorCode_ForceDeny + case 700: + return commonpb.ErrorCode_IndexNotExist + case 600: + return commonpb.ErrorCode_SegmentNotFound + case 109: + return commonpb.ErrorCode_SchemaMismatch + default: + return commonpb.ErrorCode_UnexpectedError + } +} + +// Ok reports whether status represents a successful RPC response. +func Ok(status *commonpb.Status) bool { + return status.GetErrorCode() == commonpb.ErrorCode_Success && status.GetCode() == 0 +} + +// Error converts a protobuf status into a client RPC error. +func Error(status *commonpb.Status) error { + if Ok(status) { + return nil + } + + code := status.GetCode() + if code == 0 { + code = modernCodeFromLegacy(status.GetErrorCode()) + } + legacyCode := status.GetErrorCode() + if legacyCode == commonpb.ErrorCode_Success { + legacyCode = legacyCodeFromModern(code) + } + + result := newRPCError( + status.GetReason(), + code, + legacyCode, + status.GetRetriable(), + status.GetExtraInfo()[inputErrorFlagKey] == "true", + ) + result.detail = status.GetDetail() + return result +} + +// CheckRPCCall combines a transport error and the Status embedded in an RPC +// response. Responses without a Status field are considered successful. +func CheckRPCCall(resp any, err error) error { + if err != nil { + return err + } + if resp == nil { + return errUnexpected + } + + switch value := resp.(type) { + case interface{ GetStatus() *commonpb.Status }: + return Error(value.GetStatus()) + case *commonpb.Status: + return Error(value) + default: + return nil + } +} + +// Status converts an error into commonpb.Status. It is mainly useful for +// client-side mocks and tests. +func Status(err error) *commonpb.Status { + if err == nil { + return &commonpb.Status{} + } + + code := Code(err) + status := &commonpb.Status{ + Code: code, + ErrorCode: legacyCodeFromModern(code), + Reason: err.Error(), + Detail: err.Error(), + Retriable: IsRetryableErr(err), + } + + var rpcErr *RPCError + if errors.As(err, &rpcErr) { + status.ErrorCode = rpcErr.legacyCode + status.Detail = rpcErr.detail + if rpcErr.input { + status.ExtraInfo = map[string]string{inputErrorFlagKey: "true"} + } + } + return status +} + +// Success creates a successful Status, optionally with a reason. +func Success(reason ...string) *commonpb.Status { + return &commonpb.Status{Reason: strings.Join(reason, " ")} +} + +func WrapErrServiceNotReady(role string, sessionID int64, state string, messages ...string) error { + message := fmt.Sprintf("%s[%s=%d]: %s", ErrServiceNotReady.message, role, sessionID, state) + if len(messages) > 0 { + message = strings.Join(messages, "->") + ": " + message + } + return cloneWithMessage(ErrServiceNotReady, message) +} + +func WrapErrServiceInternal(reason string, messages ...string) error { + message := ErrServiceInternal.message + ": " + reason + if len(messages) > 0 { + message = strings.Join(messages, "->") + ": " + message + } + return cloneWithMessage(ErrServiceInternal, message) +} + +func WrapErrCollectionNotFound(collection any, messages ...string) error { + return withDetails(ErrCollectionNotFound, "collection", collection, messages...) +} + +func WrapErrCollectionSchemaMisMatch(collection any, messages ...string) error { + return withDetails(ErrCollectionSchemaMismatch, "collection", collection, messages...) +} + +func WrapErrIndexNotFound(indexName string, messages ...string) error { + return withDetails(ErrIndexNotFound, "indexName", indexName, messages...) +} + +func WrapErrParameterInvalid[T any](expected, actual T, messages ...string) error { + message := fmt.Sprintf("%s[expected=%v][actual=%v]", ErrParameterInvalid.message, expected, actual) + if len(messages) > 0 { + message = strings.Join(messages, "->") + ": " + message + } + return cloneWithMessage(ErrParameterInvalid, message) +} diff --git a/client/internal/merr/merr_test.go b/client/internal/merr/merr_test.go new file mode 100644 index 0000000000..a72d8217ce --- /dev/null +++ b/client/internal/merr/merr_test.go @@ -0,0 +1,135 @@ +// Licensed to the LF AI & Data foundation under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you 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 +// +// http://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. + +package merr + +import ( + "context" + "testing" + + "github.com/cockroachdb/errors" + "github.com/stretchr/testify/require" + + "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" +) + +func TestModernStatusConversion(t *testing.T) { + status := &commonpb.Status{ + Code: ErrCollectionNotFound.Code(), + Reason: "collection missing", + Detail: "collection missing from database", + Retriable: true, + } + + err := Error(status) + require.ErrorIs(t, err, ErrCollectionNotFound) + require.Equal(t, int32(100), Code(err)) + require.True(t, IsRetryableErr(err)) + + var rpcErr *RPCError + require.ErrorAs(t, err, &rpcErr) + require.Equal(t, status.GetDetail(), rpcErr.Detail()) + require.Equal(t, commonpb.ErrorCode_CollectionNotExists, Status(err).GetErrorCode()) +} + +func TestStatusMetadataConversion(t *testing.T) { + status := &commonpb.Status{ + Code: ErrParameterInvalid.Code(), + Reason: "bad parameter", + Detail: "dimension must be positive", + Retriable: false, + ExtraInfo: map[string]string{inputErrorFlagKey: "true"}, + } + + err := Error(status) + require.ErrorIs(t, err, ErrParameterInvalid) + var rpcErr *RPCError + require.ErrorAs(t, err, &rpcErr) + require.True(t, rpcErr.IsInputError()) + require.Equal(t, status.GetDetail(), rpcErr.Detail()) + require.Equal(t, status.GetExtraInfo(), Status(err).GetExtraInfo()) +} + +func TestUnknownModernCodeIsPreserved(t *testing.T) { + status := &commonpb.Status{ + Code: 2400, + Reason: "function pipeline failed", + Detail: "embedding provider timed out", + Retriable: true, + ExtraInfo: map[string]string{inputErrorFlagKey: "true"}, + } + + err := Error(status) + require.Equal(t, status.GetCode(), Code(err)) + require.True(t, IsRetryableErr(err)) + + var rpcErr *RPCError + require.ErrorAs(t, err, &rpcErr) + require.True(t, rpcErr.IsInputError()) + require.Equal(t, status.GetDetail(), rpcErr.Detail()) +} + +func TestLegacyStatusConversion(t *testing.T) { + tests := []struct { + legacy commonpb.ErrorCode + code int32 + target error + }{ + {commonpb.ErrorCode_NotReadyServe, 1, ErrServiceNotReady}, + {commonpb.ErrorCode_CollectionNotExists, 100, ErrCollectionNotFound}, + {commonpb.ErrorCode_IllegalArgument, 1100, ErrParameterInvalid}, + {commonpb.ErrorCode_MemoryQuotaExhausted, 3, nil}, + {commonpb.ErrorCode_DiskQuotaExhausted, 7, nil}, + {commonpb.ErrorCode_RateLimit, 8, nil}, + {commonpb.ErrorCode_ForceDeny, 9, nil}, + {commonpb.ErrorCode_TimeTickLongDelay, 11, nil}, + {commonpb.ErrorCode_MetaFailed, 500, nil}, + {commonpb.ErrorCode_IndexNotExist, 700, ErrIndexNotFound}, + } + + for _, test := range tests { + t.Run(test.legacy.String(), func(t *testing.T) { + err := Error(&commonpb.Status{ErrorCode: test.legacy, Reason: "legacy failure"}) + require.Equal(t, test.code, Code(err)) + if test.target != nil { + require.ErrorIs(t, err, test.target) + } + }) + } +} + +func TestStatusRoundTrip(t *testing.T) { + original := WrapErrCollectionSchemaMisMatch("collection") + status := Status(original) + require.Equal(t, int32(109), status.GetCode()) + require.Equal(t, commonpb.ErrorCode_SchemaMismatch, status.GetErrorCode()) + require.Equal(t, "true", status.GetExtraInfo()[inputErrorFlagKey]) + + roundTrip := Error(status) + require.True(t, errors.Is(roundTrip, ErrCollectionSchemaMismatch)) +} + +func TestContextCodes(t *testing.T) { + require.Equal(t, CanceledCode, Code(context.Canceled)) + require.Equal(t, TimeoutCode, Code(context.DeadlineExceeded)) +} + +func TestCheckRPCCall(t *testing.T) { + transportErr := errors.New("transport") + require.ErrorIs(t, CheckRPCCall(nil, transportErr), transportErr) + require.Equal(t, unexpectedCode, Code(CheckRPCCall(nil, nil))) + require.NoError(t, CheckRPCCall(&commonpb.Status{}, nil)) +} diff --git a/client/internal/retry/retry.go b/client/internal/retry/retry.go new file mode 100644 index 0000000000..ac19e93631 --- /dev/null +++ b/client/internal/retry/retry.go @@ -0,0 +1,78 @@ +// Licensed to the LF AI & Data foundation under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you 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 +// +// http://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. + +package retry + +import ( + "context" + "time" + + "github.com/cockroachdb/errors" +) + +const ( + maxAttempts = 10 + initialWait = 200 * time.Millisecond + maxWait = 3 * time.Second +) + +// Handle retries fn while it explicitly returns shouldRetry=true. It keeps the +// behavior used by the SDK's schema-cache refresh path without depending on +// the server-side retry and logging packages. +func Handle(ctx context.Context, fn func() (shouldRetry bool, err error)) error { + if err := ctx.Err(); err != nil { + return err + } + + var lastErr error + wait := initialWait + for range maxAttempts { + shouldRetry, err := fn() + if err == nil { + return nil + } + if !shouldRetry { + if (errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded)) && lastErr != nil { + return lastErr + } + return err + } + + if deadline, ok := ctx.Deadline(); ok && time.Until(deadline) < wait { + return err + } + lastErr = err + + timer := time.NewTimer(wait) + select { + case <-timer.C: + case <-ctx.Done(): + if !timer.Stop() { + select { + case <-timer.C: + default: + } + } + return lastErr + } + + wait *= 2 + if wait > maxWait { + wait = maxWait + } + } + return lastErr +} diff --git a/client/internal/typeutil/typeutil.go b/client/internal/typeutil/typeutil.go new file mode 100644 index 0000000000..bf9da92348 --- /dev/null +++ b/client/internal/typeutil/typeutil.go @@ -0,0 +1,137 @@ +// Licensed to the LF AI & Data foundation under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you 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 +// +// http://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. + +// Package typeutil contains the small set of generic and vector helpers used +// by the standalone Go SDK. +package typeutil + +import ( + "encoding/binary" + "math" + "sync" + + "github.com/x448/float16" + + "github.com/milvus-io/milvus-proto/go-api/v3/schemapb" +) + +type ConcurrentMap[K comparable, V any] struct { + inner sync.Map +} + +func NewConcurrentMap[K comparable, V any]() *ConcurrentMap[K, V] { + return &ConcurrentMap[K, V]{} +} + +func (m *ConcurrentMap[K, V]) Get(key K) (V, bool) { + var zero V + value, ok := m.inner.Load(key) + if !ok { + return zero, false + } + return value.(V), true +} + +func (m *ConcurrentMap[K, V]) Insert(key K, value V) { + m.inner.Store(key, value) +} + +func (m *ConcurrentMap[K, V]) Remove(key K) { + m.inner.Delete(key) +} + +type Set[T comparable] map[T]struct{} + +func NewSet[T comparable](elements ...T) Set[T] { + set := make(Set[T], len(elements)) + for _, element := range elements { + set[element] = struct{}{} + } + return set +} + +func (set Set[T]) Complement(other Set[T]) Set[T] { + result := NewSet[T]() + for element := range set { + if _, ok := other[element]; !ok { + result[element] = struct{}{} + } + } + return result +} + +func Float32ArrayToBytes(values []float32) []byte { + result := make([]byte, 4*len(values)) + for i, value := range values { + binary.LittleEndian.PutUint32(result[i*4:], math.Float32bits(value)) + } + return result +} + +func Float32ArrayToFloat16Bytes(values []float32) []byte { + result := make([]byte, 2*len(values)) + for i, value := range values { + binary.LittleEndian.PutUint16(result[i*2:], float16.Fromfloat32(value).Bits()) + } + return result +} + +func Float16BytesToFloat32Vector(values []byte) []float32 { + result := make([]float32, len(values)/2) + for i := range result { + result[i] = float16.Frombits(binary.LittleEndian.Uint16(values[i*2:])).Float32() + } + return result +} + +func Float32ArrayToBFloat16Bytes(values []float32) []byte { + result := make([]byte, 2*len(values)) + for i, value := range values { + binary.LittleEndian.PutUint16(result[i*2:], uint16(math.Float32bits(value)>>16)) + } + return result +} + +func BFloat16BytesToFloat32Vector(values []byte) []float32 { + result := make([]float32, len(values)/2) + for i := range result { + result[i] = math.Float32frombits(uint32(binary.LittleEndian.Uint16(values[i*2:])) << 16) + } + return result +} + +func Int8ArrayToBytes(values []int8) []byte { + result := make([]byte, len(values)) + for i, value := range values { + result[i] = byte(value) + } + return result +} + +func IsVectorType(dataType schemapb.DataType) bool { + switch dataType { + case schemapb.DataType_BinaryVector, + schemapb.DataType_FloatVector, + schemapb.DataType_Float16Vector, + schemapb.DataType_BFloat16Vector, + schemapb.DataType_SparseFloatVector, + schemapb.DataType_Int8Vector, + schemapb.DataType_ArrayOfVector: + return true + default: + return false + } +} diff --git a/client/milvusclient/admin.go b/client/milvusclient/admin.go index e47d490957..f32b16d9c8 100644 --- a/client/milvusclient/admin.go +++ b/client/milvusclient/admin.go @@ -24,7 +24,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) // GetServerVersionOption is the interface for GetServerVersion request. diff --git a/client/milvusclient/admin_test.go b/client/milvusclient/admin_test.go index b218b5c920..5f105e1e73 100644 --- a/client/milvusclient/admin_test.go +++ b/client/milvusclient/admin_test.go @@ -29,7 +29,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type AdminSuite struct { diff --git a/client/milvusclient/alias.go b/client/milvusclient/alias.go index cb407e6e54..7537e99594 100644 --- a/client/milvusclient/alias.go +++ b/client/milvusclient/alias.go @@ -23,7 +23,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) func (c *Client) CreateAlias(ctx context.Context, option CreateAliasOption, callOptions ...grpc.CallOption) error { diff --git a/client/milvusclient/alias_test.go b/client/milvusclient/alias_test.go index 679940ab28..3359d03e14 100644 --- a/client/milvusclient/alias_test.go +++ b/client/milvusclient/alias_test.go @@ -26,7 +26,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type AliasSuite struct { diff --git a/client/milvusclient/client.go b/client/milvusclient/client.go index 03a720e800..62da474434 100644 --- a/client/milvusclient/client.go +++ b/client/milvusclient/client.go @@ -38,8 +38,8 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/common" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/crypto" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/crypto" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type Client struct { diff --git a/client/milvusclient/collection.go b/client/milvusclient/collection.go index 99fc7a176b..d692341f9b 100644 --- a/client/milvusclient/collection.go +++ b/client/milvusclient/collection.go @@ -24,7 +24,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) // CreateCollection is the API for create a collection in Milvus. diff --git a/client/milvusclient/collection_example_test.go b/client/milvusclient/collection_example_test.go index cbf263da15..2e416b1c99 100644 --- a/client/milvusclient/collection_example_test.go +++ b/client/milvusclient/collection_example_test.go @@ -22,10 +22,10 @@ import ( "fmt" "log" + "github.com/milvus-io/milvus/client/v2/common" "github.com/milvus-io/milvus/client/v2/entity" "github.com/milvus-io/milvus/client/v2/index" "github.com/milvus-io/milvus/client/v2/milvusclient" - "github.com/milvus-io/milvus/pkg/v3/common" ) const ( diff --git a/client/milvusclient/collection_test.go b/client/milvusclient/collection_test.go index f34672e3ed..e11810870e 100644 --- a/client/milvusclient/collection_test.go +++ b/client/milvusclient/collection_test.go @@ -30,9 +30,9 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus-proto/go-api/v3/schemapb" + "github.com/milvus-io/milvus/client/v2/common" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/common" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type CollectionSuite struct { diff --git a/client/milvusclient/common.go b/client/milvusclient/common.go index 2a9bb8e6c8..53912f2fa1 100644 --- a/client/milvusclient/common.go +++ b/client/milvusclient/common.go @@ -7,10 +7,10 @@ import ( "github.com/cockroachdb/errors" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/conc" - "github.com/milvus-io/milvus/pkg/v3/util/merr" - "github.com/milvus-io/milvus/pkg/v3/util/retry" - "github.com/milvus-io/milvus/pkg/v3/util/typeutil" + "github.com/milvus-io/milvus/client/v2/internal/conc" + "github.com/milvus-io/milvus/client/v2/internal/merr" + "github.com/milvus-io/milvus/client/v2/internal/retry" + "github.com/milvus-io/milvus/client/v2/internal/typeutil" ) // CollectionCache stores the cached collection schema information. diff --git a/client/milvusclient/common_test.go b/client/milvusclient/common_test.go index 268650d901..f6d5a63bc8 100644 --- a/client/milvusclient/common_test.go +++ b/client/milvusclient/common_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type CommonSuite struct { diff --git a/client/milvusclient/database.go b/client/milvusclient/database.go index de7133b3fc..ab2a292ffd 100644 --- a/client/milvusclient/database.go +++ b/client/milvusclient/database.go @@ -23,7 +23,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) func (c *Client) UseDatabase(ctx context.Context, option UseDatabaseOption) error { diff --git a/client/milvusclient/database_test.go b/client/milvusclient/database_test.go index bcf4e4682e..731406e46f 100644 --- a/client/milvusclient/database_test.go +++ b/client/milvusclient/database_test.go @@ -10,7 +10,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type DatabaseSuite struct { diff --git a/client/milvusclient/errors.go b/client/milvusclient/errors.go new file mode 100644 index 0000000000..c1c267ed25 --- /dev/null +++ b/client/milvusclient/errors.go @@ -0,0 +1,41 @@ +// Licensed to the LF AI & Data foundation under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you 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 +// +// http://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. + +package milvusclient + +import "github.com/milvus-io/milvus/client/v2/internal/merr" + +// RPCError is the structured error returned for a failed Milvus RPC. +type RPCError = merr.RPCError + +// Client-side error sentinels. Errors returned from RPCs with the same Milvus +// code match these values through errors.Is. +var ( + ErrServiceNotReady = merr.ErrServiceNotReady + ErrCollectionNotFound = merr.ErrCollectionNotFound + ErrCollectionSchemaMismatch = merr.ErrCollectionSchemaMismatch + ErrIndexNotFound = merr.ErrIndexNotFound +) + +// ErrorCode returns the Milvus numeric error code carried by err. +func ErrorCode(err error) int32 { + return merr.Code(err) +} + +// IsRetryableError reports whether Milvus marked err as retriable. +func IsRetryableError(err error) bool { + return merr.IsRetryableErr(err) +} diff --git a/client/milvusclient/errors_test.go b/client/milvusclient/errors_test.go new file mode 100644 index 0000000000..79a2e3803a --- /dev/null +++ b/client/milvusclient/errors_test.go @@ -0,0 +1,44 @@ +// Licensed to the LF AI & Data foundation under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you 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 +// +// http://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. + +package milvusclient + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" + "github.com/milvus-io/milvus/client/v2/internal/merr" +) + +func TestRPCErrorPublicAPI(t *testing.T) { + err := merr.Error(&commonpb.Status{ + Code: 100, + Reason: "collection missing", + Detail: "collection missing from database", + Retriable: true, + }) + + require.ErrorIs(t, err, ErrCollectionNotFound) + require.Equal(t, int32(100), ErrorCode(err)) + require.True(t, IsRetryableError(err)) + + var rpcErr *RPCError + require.ErrorAs(t, err, &rpcErr) + require.Equal(t, "collection missing from database", rpcErr.Detail()) + require.Equal(t, commonpb.ErrorCode_CollectionNotExists, rpcErr.LegacyCode()) +} diff --git a/client/milvusclient/external_table.go b/client/milvusclient/external_table.go index f9d1cb1484..da6e3e9cc7 100644 --- a/client/milvusclient/external_table.go +++ b/client/milvusclient/external_table.go @@ -23,7 +23,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) // RefreshExternalCollectionResult contains the result of a refresh external collection operation. diff --git a/client/milvusclient/index.go b/client/milvusclient/index.go index 4c4dbb67bb..df934e438c 100644 --- a/client/milvusclient/index.go +++ b/client/milvusclient/index.go @@ -27,7 +27,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/entity" "github.com/milvus-io/milvus/client/v2/index" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type CreateIndexTask struct { diff --git a/client/milvusclient/index_test.go b/client/milvusclient/index_test.go index 45b98e80ac..0bb1301306 100644 --- a/client/milvusclient/index_test.go +++ b/client/milvusclient/index_test.go @@ -30,7 +30,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/entity" "github.com/milvus-io/milvus/client/v2/index" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type IndexSuite struct { diff --git a/client/milvusclient/iterator.go b/client/milvusclient/iterator.go index 4f6a2c02a7..fb3c912d17 100644 --- a/client/milvusclient/iterator.go +++ b/client/milvusclient/iterator.go @@ -29,7 +29,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) const ( diff --git a/client/milvusclient/iterator_test.go b/client/milvusclient/iterator_test.go index 11e2301f5a..e481f8b73e 100644 --- a/client/milvusclient/iterator_test.go +++ b/client/milvusclient/iterator_test.go @@ -31,7 +31,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus-proto/go-api/v3/schemapb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type SearchIteratorSuite struct { diff --git a/client/milvusclient/maintenance.go b/client/milvusclient/maintenance.go index b942abe45d..7a559bd77e 100644 --- a/client/milvusclient/maintenance.go +++ b/client/milvusclient/maintenance.go @@ -25,7 +25,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus-proto/go-api/v3/msgpb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type LoadTask struct { diff --git a/client/milvusclient/maintenance_test.go b/client/milvusclient/maintenance_test.go index 9bfe3366a5..3bf8648ebd 100644 --- a/client/milvusclient/maintenance_test.go +++ b/client/milvusclient/maintenance_test.go @@ -31,7 +31,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus-proto/go-api/v3/schemapb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type MaintenanceSuite struct { diff --git a/client/milvusclient/partition.go b/client/milvusclient/partition.go index f5fa235631..90db9df53a 100644 --- a/client/milvusclient/partition.go +++ b/client/milvusclient/partition.go @@ -23,7 +23,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) // CreatePartition is the API for creating a partition for a collection. diff --git a/client/milvusclient/partition_test.go b/client/milvusclient/partition_test.go index 670bd5dc32..ddbeb9db2b 100644 --- a/client/milvusclient/partition_test.go +++ b/client/milvusclient/partition_test.go @@ -26,7 +26,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type PartitionSuite struct { diff --git a/client/milvusclient/rbac.go b/client/milvusclient/rbac.go index 48d51d2da6..ed31494546 100644 --- a/client/milvusclient/rbac.go +++ b/client/milvusclient/rbac.go @@ -25,7 +25,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) func (c *Client) ListUsers(ctx context.Context, opt ListUserOption, callOpts ...grpc.CallOption) ([]string, error) { diff --git a/client/milvusclient/rbac_options.go b/client/milvusclient/rbac_options.go index 3c50683b33..45bf88130b 100644 --- a/client/milvusclient/rbac_options.go +++ b/client/milvusclient/rbac_options.go @@ -20,7 +20,7 @@ import ( "github.com/samber/lo" "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" - "github.com/milvus-io/milvus/pkg/v3/util/crypto" + "github.com/milvus-io/milvus/client/v2/internal/crypto" ) type ListUserOption interface { diff --git a/client/milvusclient/rbac_test.go b/client/milvusclient/rbac_test.go index 97fe0206ea..916f1a7f20 100644 --- a/client/milvusclient/rbac_test.go +++ b/client/milvusclient/rbac_test.go @@ -26,8 +26,8 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" - "github.com/milvus-io/milvus/pkg/v3/util/crypto" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/crypto" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type UserSuite struct { diff --git a/client/milvusclient/rbac_v2.go b/client/milvusclient/rbac_v2.go index aeae5addd2..87ec1686eb 100644 --- a/client/milvusclient/rbac_v2.go +++ b/client/milvusclient/rbac_v2.go @@ -24,7 +24,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) func (c *Client) CreatePrivilegeGroup(ctx context.Context, option CreatePrivilegeGroupOption, callOptions ...grpc.CallOption) error { diff --git a/client/milvusclient/read.go b/client/milvusclient/read.go index a3dad22331..86a3211032 100644 --- a/client/milvusclient/read.go +++ b/client/milvusclient/read.go @@ -28,8 +28,8 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/schemapb" "github.com/milvus-io/milvus/client/v2/column" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" - "github.com/milvus-io/milvus/pkg/v3/util/typeutil" + "github.com/milvus-io/milvus/client/v2/internal/merr" + "github.com/milvus-io/milvus/client/v2/internal/typeutil" ) func (c *Client) Search(ctx context.Context, option SearchOption, callOptions ...grpc.CallOption) ([]ResultSet, error) { diff --git a/client/milvusclient/read_test.go b/client/milvusclient/read_test.go index da9040ea0c..f8fef989d3 100644 --- a/client/milvusclient/read_test.go +++ b/client/milvusclient/read_test.go @@ -14,7 +14,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/schemapb" "github.com/milvus-io/milvus/client/v2/entity" "github.com/milvus-io/milvus/client/v2/index" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type ReadSuite struct { diff --git a/client/milvusclient/replicate.go b/client/milvusclient/replicate.go index a5ee58ee2a..720014d6ac 100644 --- a/client/milvusclient/replicate.go +++ b/client/milvusclient/replicate.go @@ -8,7 +8,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) // UpdateReplicateConfiguration updates the replicate configuration to the Milvus cluster. diff --git a/client/milvusclient/replicate_test.go b/client/milvusclient/replicate_test.go index 6ea8dbb9d0..58604d91be 100644 --- a/client/milvusclient/replicate_test.go +++ b/client/milvusclient/replicate_test.go @@ -26,7 +26,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type ReplicateSuite struct { diff --git a/client/milvusclient/resource_group.go b/client/milvusclient/resource_group.go index e2000b36f7..a380b10d6a 100644 --- a/client/milvusclient/resource_group.go +++ b/client/milvusclient/resource_group.go @@ -26,7 +26,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus-proto/go-api/v3/rgpb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) func (c *Client) ListResourceGroups(ctx context.Context, opt ListResourceGroupsOption, callOptions ...grpc.CallOption) ([]string, error) { diff --git a/client/milvusclient/resource_group_test.go b/client/milvusclient/resource_group_test.go index 905ce7f098..17ceeb63b7 100644 --- a/client/milvusclient/resource_group_test.go +++ b/client/milvusclient/resource_group_test.go @@ -31,7 +31,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus-proto/go-api/v3/rgpb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type ResourceGroupSuite struct { diff --git a/client/milvusclient/snapshot.go b/client/milvusclient/snapshot.go index 33194c20d2..f97dbf30dd 100644 --- a/client/milvusclient/snapshot.go +++ b/client/milvusclient/snapshot.go @@ -22,7 +22,7 @@ import ( "google.golang.org/grpc" "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) // CreateSnapshot creates a snapshot for the specified collection diff --git a/client/milvusclient/snapshot_test.go b/client/milvusclient/snapshot_test.go index 7a1636e9ed..bd3a774b24 100644 --- a/client/milvusclient/snapshot_test.go +++ b/client/milvusclient/snapshot_test.go @@ -27,7 +27,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type SnapshotSuite struct { diff --git a/client/milvusclient/telemetry.go b/client/milvusclient/telemetry.go index 5bd3738e92..7f6e91f018 100644 --- a/client/milvusclient/telemetry.go +++ b/client/milvusclient/telemetry.go @@ -32,7 +32,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/commonpb" "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/common" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) // TelemetryConfig holds configurable settings for client telemetry diff --git a/client/milvusclient/write.go b/client/milvusclient/write.go index e71be8a67c..cb687e7847 100644 --- a/client/milvusclient/write.go +++ b/client/milvusclient/write.go @@ -25,7 +25,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus/client/v2/column" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type InsertResult struct { diff --git a/client/milvusclient/write_options.go b/client/milvusclient/write_options.go index f45b1af61b..1c5699b9c1 100644 --- a/client/milvusclient/write_options.go +++ b/client/milvusclient/write_options.go @@ -28,8 +28,8 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/schemapb" "github.com/milvus-io/milvus/client/v2/column" "github.com/milvus-io/milvus/client/v2/entity" + "github.com/milvus-io/milvus/client/v2/internal/typeutil" "github.com/milvus-io/milvus/client/v2/row" - "github.com/milvus-io/milvus/pkg/v3/util/typeutil" ) type InsertOption interface { diff --git a/client/milvusclient/write_test.go b/client/milvusclient/write_test.go index 84b5b8b887..af79f90e1f 100644 --- a/client/milvusclient/write_test.go +++ b/client/milvusclient/write_test.go @@ -30,7 +30,7 @@ import ( "github.com/milvus-io/milvus-proto/go-api/v3/milvuspb" "github.com/milvus-io/milvus-proto/go-api/v3/schemapb" "github.com/milvus-io/milvus/client/v2/entity" - "github.com/milvus-io/milvus/pkg/v3/util/merr" + "github.com/milvus-io/milvus/client/v2/internal/merr" ) type WriteSuite struct { diff --git a/client/row/cache.go b/client/row/cache.go index 5d3c70be0d..9c7e720987 100644 --- a/client/row/cache.go +++ b/client/row/cache.go @@ -19,7 +19,7 @@ package row import ( "reflect" - "github.com/milvus-io/milvus/pkg/v3/util/typeutil" + "github.com/milvus-io/milvus/client/v2/internal/typeutil" ) var cachedCandidates *typeutil.ConcurrentMap[reflect.Type, *ReceiverCandidate]