diff --git a/internal/datacoord/index_meta.go b/internal/datacoord/index_meta.go index ac8d03bb3f3b8..dedf65d643cd6 100644 --- a/internal/datacoord/index_meta.go +++ b/internal/datacoord/index_meta.go @@ -245,13 +245,15 @@ func (m *indexMeta) updateIndexTasksMetrics() { } func checkParams(fieldIndex *model.Index, req *indexpb.CreateIndexRequest) bool { - if len(fieldIndex.TypeParams) != len(req.TypeParams) { + metaTypeParams := DeleteParams(fieldIndex.TypeParams, []string{common.MmapEnabledKey}) + reqTypeParams := DeleteParams(req.TypeParams, []string{common.MmapEnabledKey}) + if len(metaTypeParams) != len(reqTypeParams) { return false } notEq := false - for _, param1 := range fieldIndex.TypeParams { + for _, param1 := range metaTypeParams { exist := false - for _, param2 := range req.TypeParams { + for _, param2 := range reqTypeParams { if param2.Key == param1.Key && param2.Value == param1.Value { exist = true } diff --git a/internal/datacoord/index_meta_test.go b/internal/datacoord/index_meta_test.go index 55a7c0dacddb1..7d238459429ae 100644 --- a/internal/datacoord/index_meta_test.go +++ b/internal/datacoord/index_meta_test.go @@ -376,6 +376,10 @@ func TestMeta_HasSameReq(t *testing.T) { Key: common.DimKey, Value: "128", }, + { + Key: common.MmapEnabledKey, + Value: "true", + }, } indexParams = []*commonpb.KeyValuePair{ { diff --git a/internal/datacoord/index_service.go b/internal/datacoord/index_service.go index 568f280d8a9ca..4708289a99803 100644 --- a/internal/datacoord/index_service.go +++ b/internal/datacoord/index_service.go @@ -28,6 +28,7 @@ import ( "github.com/milvus-io/milvus/internal/metastore/model" "github.com/milvus-io/milvus/internal/util/indexparamcheck" "github.com/milvus-io/milvus/internal/util/vecindexmgr" + "github.com/milvus-io/milvus/pkg/common" pkgcommon "github.com/milvus-io/milvus/pkg/common" "github.com/milvus-io/milvus/pkg/log" "github.com/milvus-io/milvus/pkg/metrics" @@ -243,13 +244,15 @@ func (s *Server) CreateIndex(ctx context.Context, req *indexpb.CreateIndexReques return merr.Status(err), nil } } + // exclude the mmap.enable param, because it will be conflict with the index's mmap.enable param + typeParams := DeleteParams(req.GetTypeParams(), []string{common.MmapEnabledKey}) index := &model.Index{ CollectionID: req.GetCollectionID(), FieldID: req.GetFieldID(), IndexID: indexID, IndexName: req.GetIndexName(), - TypeParams: req.GetTypeParams(), + TypeParams: typeParams, IndexParams: req.GetIndexParams(), CreateTime: req.GetTimestamp(), IsAutoIndex: req.GetIsAutoIndex(), @@ -340,7 +343,7 @@ func UpdateParams(index *model.Index, from []*commonpb.KeyValuePair, updates []* }) } -func DeleteParams(index *model.Index, from []*commonpb.KeyValuePair, deletes []string) []*commonpb.KeyValuePair { +func DeleteParams(from []*commonpb.KeyValuePair, deletes []string) []*commonpb.KeyValuePair { params := make(map[string]string) for _, param := range from { params[param.GetKey()] = param.GetValue() @@ -431,7 +434,7 @@ func (s *Server) AlterIndex(ctx context.Context, req *indexpb.AlterIndexRequest) index.IndexParams = newIndexParams } else if len(req.GetDeleteKeys()) > 0 { // delete user index params - newUserIndexParams := DeleteParams(index, index.UserIndexParams, req.GetDeleteKeys()) + newUserIndexParams := DeleteParams(index.UserIndexParams, req.GetDeleteKeys()) log.Info("alter index user deletekeys", zap.String("indexName", index.IndexName), zap.Any("params", newUserIndexParams), @@ -439,7 +442,7 @@ func (s *Server) AlterIndex(ctx context.Context, req *indexpb.AlterIndexRequest) index.UserIndexParams = newUserIndexParams // delete index params - newIndexParams := DeleteParams(index, index.IndexParams, req.GetDeleteKeys()) + newIndexParams := DeleteParams(index.IndexParams, req.GetDeleteKeys()) log.Info("alter index index deletekeys", zap.String("indexName", index.IndexName), zap.Any("params", newIndexParams),