Skip to content

Commit a05a37a

Browse files
authored
enhance: GCS native support (GCS implemented using Google Cloud Storage libraries) (milvus-io#36214)
Native support for Google cloud storage using the Google Cloud Storage libraries. Authentication is performed using GCS service account credentials JSON. Currently, Milvus supports Google Cloud Storage using S3-compatible APIs via the AWS SDK. This approach has the following limitations: 1. Overhead: Translating requests between S3-compatible APIs and GCS can introduce additional overhead. 2. Compatibility Limitations: Some features of the original S3 API may not fully translate or work as expected with GCS. To address these limitations, This enhancement is needed. Related Issue: milvus-io#36212
1 parent 5686a9a commit a05a37a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+2005
-115
lines changed

.env

+1
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ MINIO_ADDRESS=minio:9000
1616
PULSAR_ADDRESS=pulsar://pulsar:6650
1717
ETCD_ENDPOINTS=etcd:2379
1818
AZURITE_CONNECTION_STRING="DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://azurite:10000/devstoreaccount1;"
19+
ENABLE_GCP_NATIVE=ON
1920

.github/workflows/main.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ jobs:
141141
- name: Start Service
142142
shell: bash
143143
run: |
144-
docker compose up -d azurite
144+
docker compose up -d azurite gcpnative
145145
- name: UT
146146
run: |
147147
chmod +x build/builder.sh
@@ -193,7 +193,7 @@ jobs:
193193
- name: Start Service
194194
shell: bash
195195
run: |
196-
docker compose up -d pulsar etcd minio azurite
196+
docker compose up -d pulsar etcd minio azurite gcpnative
197197
- name: UT
198198
run: |
199199
chmod +x build/builder.sh

DEVELOPMENT.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,8 @@ ${CMAKE_EXTRA_ARGS} \
306306
-DUSE_ASAN=${USE_ASAN} \
307307
-DUSE_DYNAMIC_SIMD=${USE_DYNAMIC_SIMD} \
308308
-DCPU_ARCH=${CPU_ARCH} \
309-
-DINDEX_ENGINE=${INDEX_ENGINE} "
309+
-DINDEX_ENGINE=${INDEX_ENGINE} \
310+
-DENABLE_GCP_NATIVE=${ENABLE_GCP_NATIVE} "
310311
if [ -z "$BUILD_WITHOUT_AZURE" ]; then
311312
CMAKE_CMD=${CMAKE_CMD}"-DAZURE_BUILD_DIR=${AZURE_BUILD_DIR} \
312313
-DVCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET} "

configs/milvus.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,17 @@ minio:
133133
# aliyun (ecs): https://www.alibabacloud.com/help/en/elastic-compute-service/latest/attach-an-instance-ram-role
134134
useIAM: false
135135
# Cloud Provider of S3. Supports: "aws", "gcp", "aliyun".
136+
# Cloud Provider of Google Cloud Storage. Supports: "gcpnative".
136137
# You can use "aws" for other cloud provider supports S3 API with signature v4, e.g.: minio
137138
# You can use "gcp" for other cloud provider supports S3 API with signature v2
138139
# You can use "aliyun" for other cloud provider uses virtual host style bucket
140+
# You can use "gcpnative" for the Google Cloud Platform provider. Uses service account credentials
141+
# for authentication.
139142
# When useIAM enabled, only "aws", "gcp", "aliyun" is supported for now
140143
cloudProvider: aws
144+
# The JSON content contains the gcs service account credentials.
145+
# Used only for the "gcpnative" cloud provider.
146+
gcpCredentialJSON:
141147
# Custom endpoint for fetch IAM role credentials. when useIAM is true & cloudProvider is "aws".
142148
# Leave it empty if you want to use AWS default endpoint
143149
iamEndpoint:

deployments/docker/dev/docker-compose-apple-silicon.yml

+6
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ services:
6767
- "16686:16686" # frontent
6868
- "14268:14268" # jaeger.thirft
6969

70+
gcpnative:
71+
image: fsouza/fake-gcs-server
72+
command: -scheme http -public-host storage.gcs.127.0.0.1.nip.io:4443
73+
ports:
74+
- "4443:4443"
75+
7076
networks:
7177
default:
7278
name: milvus_dev

deployments/docker/dev/docker-compose.yml

+6
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@ services:
102102
depends_on:
103103
- zookeeper
104104

105+
gcpnative:
106+
image: fsouza/fake-gcs-server
107+
command: -scheme http -public-host storage.gcs.127.0.0.1.nip.io:4443
108+
ports:
109+
- "4443:4443"
110+
105111
networks:
106112
default:
107113
name: milvus_dev

docker-compose.yml

+11
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ services:
3131
MINIO_ADDRESS: ${MINIO_ADDRESS}
3232
CONAN_USER_HOME: /home/milvus
3333
AZURE_STORAGE_CONNECTION_STRING: ${AZURITE_CONNECTION_STRING}
34+
ENABLE_GCP_NATIVE: ${ENABLE_GCP_NATIVE}
3435
volumes: &builder-volumes
3536
- .:/go/src/github.com/milvus-io/milvus:delegated
3637
- ${DOCKER_VOLUME_DIRECTORY:-.docker}/${IMAGE_ARCH}-${OS_NAME}-ccache:/ccache:delegated
@@ -43,6 +44,7 @@ services:
4344
- minio
4445
- pulsar
4546
- azurite
47+
- gcpnative
4648
# Command
4749
command: &builder-command >
4850
/bin/bash -c "
@@ -71,6 +73,7 @@ services:
7173
MINIO_ADDRESS: ${MINIO_ADDRESS}
7274
CONAN_USER_HOME: /home/milvus
7375
AZURE_STORAGE_CONNECTION_STRING: ${AZURITE_CONNECTION_STRING}
76+
ENABLE_GCP_NATIVE: ${ENABLE_GCP_NATIVE}
7477
volumes: &builder-volumes-gpu
7578
- .:/go/src/github.com/milvus-io/milvus:delegated
7679
- ${DOCKER_VOLUME_DIRECTORY:-.docker-gpu}/${OS_NAME}-ccache:/ccache:delegated
@@ -83,6 +86,7 @@ services:
8386
- minio
8487
- pulsar
8588
- azurite
89+
- gcpnative
8690
# Command
8791
command: &builder-command-gpu >
8892
/bin/bash -c "
@@ -134,6 +138,13 @@ services:
134138
jaeger:
135139
image: jaegertracing/all-in-one:latest
136140

141+
gcpnative:
142+
image: fsouza/fake-gcs-server
143+
command: -scheme http -public-host storage.gcs.127.0.0.1.nip.io:4443 -external-url "http://storage.gcs.127.0.0.1.nip.io:4443"
144+
hostname: storage.gcs.127.0.0.1.nip.io
145+
ports:
146+
- "4443:4443"
147+
137148
networks:
138149
default:
139150
name: milvus_dev

go.mod

+16-3
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ require (
4848
golang.org/x/crypto v0.25.0
4949
golang.org/x/exp v0.0.0-20230728194245-b0cb94b80691
5050
golang.org/x/net v0.27.0
51-
golang.org/x/oauth2 v0.20.0
51+
golang.org/x/oauth2 v0.21.0
5252
golang.org/x/sync v0.7.0
5353
golang.org/x/text v0.16.0
5454
google.golang.org/grpc v1.65.0
@@ -75,7 +75,12 @@ require (
7575
)
7676

7777
require (
78+
cloud.google.com/go v0.115.0 // indirect
79+
cloud.google.com/go/auth v0.6.1 // indirect
80+
cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect
7881
cloud.google.com/go/compute/metadata v0.3.0 // indirect
82+
cloud.google.com/go/iam v1.1.8 // indirect
83+
cloud.google.com/go/storage v1.43.0 // indirect
7984
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
8085
github.com/99designs/keyring v1.2.1 // indirect
8186
github.com/AthenZ/athenz v1.10.39 // indirect
@@ -111,6 +116,7 @@ require (
111116
github.com/dustin/go-humanize v1.0.1 // indirect
112117
github.com/dvsekhvalnov/jose2go v1.6.0 // indirect
113118
github.com/expr-lang/expr v1.15.7 // indirect
119+
github.com/felixge/httpsnoop v1.0.4 // indirect
114120
github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect
115121
github.com/fsnotify/fsnotify v1.4.9 // indirect
116122
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
@@ -127,9 +133,13 @@ require (
127133
github.com/gogo/protobuf v1.3.2 // indirect
128134
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
129135
github.com/golang-jwt/jwt/v5 v5.2.1 // indirect
136+
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
130137
github.com/golang/snappy v0.0.4 // indirect
131138
github.com/google/flatbuffers v2.0.8+incompatible // indirect
139+
github.com/google/s2a-go v0.1.7 // indirect
132140
github.com/google/uuid v1.6.0 // indirect
141+
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
142+
github.com/googleapis/gax-go/v2 v2.12.5 // indirect
133143
github.com/gorilla/websocket v1.4.2 // indirect
134144
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
135145
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
@@ -215,6 +225,8 @@ require (
215225
go.etcd.io/etcd/client/v2 v2.305.5 // indirect
216226
go.etcd.io/etcd/pkg/v3 v3.5.5 // indirect
217227
go.etcd.io/etcd/raft/v3 v3.5.5 // indirect
228+
go.opencensus.io v0.24.0 // indirect
229+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
218230
go.opentelemetry.io/otel/exporters/jaeger v1.13.0 // indirect
219231
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0 // indirect
220232
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 // indirect
@@ -232,8 +244,9 @@ require (
232244
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
233245
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
234246
gonum.org/v1/gonum v0.11.0 // indirect
235-
google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect
236-
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect
247+
google.golang.org/api v0.187.0 // indirect
248+
google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d // indirect
249+
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 // indirect
237250
google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect
238251
gopkg.in/inf.v0 v0.9.1 // indirect
239252
gopkg.in/ini.v1 v1.67.0 // indirect

go.sum

+31
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmW
1818
cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=
1919
cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=
2020
cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=
21+
cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14=
22+
cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU=
23+
cloud.google.com/go/auth v0.6.1 h1:T0Zw1XM5c1GlpN2HYr2s+m3vr1p2wy+8VN+Z1FKxW38=
24+
cloud.google.com/go/auth v0.6.1/go.mod h1:eFHG7zDzbXHKmjJddFG/rBlcGp6t25SwRUiEQSlO4x4=
25+
cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4=
26+
cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
2127
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
2228
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
2329
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
@@ -29,6 +35,8 @@ cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1h
2935
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
3036
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
3137
cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
38+
cloud.google.com/go/iam v1.1.8 h1:r7umDwhj+BQyz0ScZMp4QrGXjSTI3ZINnpgU2nlB/K0=
39+
cloud.google.com/go/iam v1.1.8/go.mod h1:GvE6lyMmfxXauzNq8NbgJbeVQNspG+tcdL/W8QO1+zE=
3240
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
3341
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
3442
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
@@ -38,6 +46,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
3846
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
3947
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
4048
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
49+
cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs=
50+
cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0=
4151
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
4252
gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8=
4353
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs=
@@ -242,6 +252,8 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv
242252
github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg=
243253
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
244254
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
255+
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
256+
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
245257
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
246258
github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
247259
github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c=
@@ -338,6 +350,7 @@ github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4er
338350
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
339351
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
340352
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
353+
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
341354
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
342355
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
343356
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
@@ -415,12 +428,18 @@ github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLe
415428
github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
416429
github.com/google/pprof v0.0.0-20211008130755-947d60d73cc0/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
417430
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
431+
github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
432+
github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
418433
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
419434
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
420435
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
421436
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
437+
github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
438+
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
422439
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
423440
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
441+
github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA=
442+
github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E=
424443
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
425444
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
426445
github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
@@ -936,9 +955,13 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
936955
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
937956
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
938957
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
958+
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
959+
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
939960
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0/go.mod h1:E5NNboN0UqSAki0Atn9kVwaN7I+l25gGxDqBueo/74E=
940961
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg=
941962
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0=
963+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk=
964+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw=
942965
go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU=
943966
go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo=
944967
go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4=
@@ -1121,6 +1144,8 @@ golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ
11211144
golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
11221145
golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo=
11231146
golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
1147+
golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
1148+
golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
11241149
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
11251150
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
11261151
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1335,6 +1360,8 @@ google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjR
13351360
google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=
13361361
google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=
13371362
google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8=
1363+
google.golang.org/api v0.187.0 h1:Mxs7VATVC2v7CY+7Xwm4ndkX71hpElcvx0D1Ji/p1eo=
1364+
google.golang.org/api v0.187.0/go.mod h1:KIHlTc4x7N7gKKuVsdmfBXN13yEEWXWFURWY6SBp2gk=
13381365
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
13391366
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
13401367
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -1391,8 +1418,12 @@ google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+n
13911418
google.golang.org/genproto v0.0.0-20220503193339-ba3ae3f07e29/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
13921419
google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ=
13931420
google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY=
1421+
google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d h1:PksQg4dV6Sem3/HkBX+Ltq8T0ke0PKIRBNBatoDTVls=
1422+
google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:s7iA721uChleev562UJO2OYB0PPT9CMFjV+Ce7VJH5M=
13941423
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw=
13951424
google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU=
1425+
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 h1:MuYw1wJzT+ZkybKfaOXKp5hJiZDn2iHaXRw0mRYdHSc=
1426+
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4/go.mod h1:px9SlOOZBg1wM1zdnr8jEL4CNGUBZ+ZKYtNPApNQc4c=
13961427
google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q=
13971428
google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
13981429
google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=

internal/core/src/CMakeLists.txt

+4
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ if(DEFINED AZURE_BUILD_DIR)
8484
set(LINK_TARGETS ${LINK_TARGETS} azure_blob_chunk_manager)
8585
endif()
8686

87+
if (ENABLE_GCP_NATIVE)
88+
set(LINK_TARGETS ${LINK_TARGETS} gcp-native-storage)
89+
endif()
90+
8791
target_link_libraries(milvus_core ${LINK_TARGETS})
8892

8993
install(TARGETS milvus_core DESTINATION "${CMAKE_INSTALL_LIBDIR}")

internal/core/src/clustering/analyze_c.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ get_storage_config(const milvus::proto::clustering::StorageConfig& config) {
4545
storage_config.region = config.region();
4646
storage_config.useVirtualHost = config.use_virtual_host();
4747
storage_config.requestTimeoutMs = config.request_timeout_ms();
48+
storage_config.gcp_credential_json =
49+
std::string(config.gcpcredentialjson());
4850
return storage_config;
4951
}
5052

internal/core/src/common/EasyAssert.h

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ enum ErrorCode {
6565
MemAllocateSizeNotMatch = 2035,
6666
MmapError = 2036,
6767
OutOfRange = 2037,
68+
GcpNativeError = 2038,
6869
KnowhereError = 2100,
6970

7071
// timeout or cancel related.

internal/core/src/common/type_c.h

+1
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ typedef struct CStorageConfig {
9292
bool useIAM;
9393
bool useVirtualHost;
9494
int64_t requestTimeoutMs;
95+
const char* gcp_credential_json;
9596
} CStorageConfig;
9697

9798
typedef struct CMmapConfig {

0 commit comments

Comments
 (0)