From 17c669faa14767cd717c2b8182609ee6cdb25d0a Mon Sep 17 00:00:00 2001 From: Yuchen Gao Date: Sun, 24 Apr 2022 23:18:26 +0800 Subject: [PATCH] Fix an issue where query coord calls MinioChunkManager during init It causes Milvus not runnable with local storage. issue: #15604 /kind enhancement Signed-off-by: Yuchen Gao --- internal/querycoord/query_coord.go | 8 +------- internal/querynode/query_shard_service.go | 9 +-------- internal/storage/minio_chunk_manager.go | 2 ++ internal/storage/minio_chunk_manager_test.go | 1 + 4 files changed, 5 insertions(+), 15 deletions(-) diff --git a/internal/querycoord/query_coord.go b/internal/querycoord/query_coord.go index aa6c6d6796bc..7574731969fb 100644 --- a/internal/querycoord/query_coord.go +++ b/internal/querycoord/query_coord.go @@ -190,13 +190,7 @@ func (qc *QueryCoord) Init() error { // we only try best to reload the leader addresses reloadShardLeaderAddress(qc.meta, qc.cluster) - qc.chunkManager, initError = storage.NewMinioChunkManager(qc.loopCtx, - storage.Address(Params.MinioCfg.Address), - storage.AccessKeyID(Params.MinioCfg.AccessKeyID), - storage.SecretAccessKeyID(Params.MinioCfg.SecretAccessKey), - storage.UseSSL(Params.MinioCfg.UseSSL), - storage.BucketName(Params.MinioCfg.BucketName), - storage.CreateBucket(true)) + qc.chunkManager, initError = qc.factory.NewVectorStorageChunkManager(qc.loopCtx) if initError != nil { log.Error("query coordinator init cluster failed", zap.Error(initError)) diff --git a/internal/querynode/query_shard_service.go b/internal/querynode/query_shard_service.go index c022b06af5d8..1c081fc8172a 100644 --- a/internal/querynode/query_shard_service.go +++ b/internal/querynode/query_shard_service.go @@ -55,14 +55,7 @@ func newQueryShardService(ctx context.Context, historical *historical, streaming enabled, _ := Params.Load("localStorage.enabled") localCacheEnabled, _ := strconv.ParseBool(enabled) localChunkManager := storage.NewLocalChunkManager(storage.RootPath(path)) - remoteChunkManager, _ := storage.NewMinioChunkManager( - ctx, - storage.Address(Params.MinioCfg.Address), - storage.AccessKeyID(Params.MinioCfg.AccessKeyID), - storage.SecretAccessKeyID(Params.MinioCfg.SecretAccessKey), - storage.UseSSL(Params.MinioCfg.UseSSL), - storage.BucketName(Params.MinioCfg.BucketName), - storage.CreateBucket(true)) + remoteChunkManager, _ := factory.NewVectorStorageChunkManager(ctx) qss := &queryShardService{ ctx: queryShardServiceCtx, diff --git a/internal/storage/minio_chunk_manager.go b/internal/storage/minio_chunk_manager.go index b563cd23969a..9d3370ee3f52 100644 --- a/internal/storage/minio_chunk_manager.go +++ b/internal/storage/minio_chunk_manager.go @@ -45,6 +45,7 @@ type MinioChunkManager struct { var _ ChunkManager = (*MinioChunkManager)(nil) // NewMinioChunkManager create a new local manager object. +// Deprecated: Do not call this directly! Use factory.NewVectorStorageChunkManager instead. func NewMinioChunkManager(ctx context.Context, opts ...Option) (*MinioChunkManager, error) { c := newDefaultConfig() for _, opt := range opts { @@ -53,6 +54,7 @@ func NewMinioChunkManager(ctx context.Context, opts ...Option) (*MinioChunkManag return newMinioChunkManagerWithConfig(ctx, c) } + func newMinioChunkManagerWithConfig(ctx context.Context, c *config) (*MinioChunkManager, error) { minIOClient, err := minio.New(c.address, &minio.Options{ Creds: credentials.NewStaticV4(c.accessKeyID, c.secretAccessKeyID, ""), diff --git a/internal/storage/minio_chunk_manager_test.go b/internal/storage/minio_chunk_manager_test.go index 546bb9005091..9fb401eb001c 100644 --- a/internal/storage/minio_chunk_manager_test.go +++ b/internal/storage/minio_chunk_manager_test.go @@ -26,6 +26,7 @@ import ( "github.com/stretchr/testify/require" ) +// TODO: NewMinioChunkManager is deprecated. Rewrite this unittest. func newMinIOChunkManager(ctx context.Context, bucketName string) (*MinioChunkManager, error) { endPoint, _ := Params.Load("_MinioAddress") accessKeyID, _ := Params.Load("minio.accessKeyID")