diff --git a/internal/proxynode/paramtable.go b/internal/proxynode/paramtable.go index a3ca31df19609f26c3e8bd695c98816176451fcf..307c4771374c854afd4685f413b580120e9f613e 100644 --- a/internal/proxynode/paramtable.go +++ b/internal/proxynode/paramtable.go @@ -177,6 +177,7 @@ func (pt *ParamTable) initQueryNodeIDList() []UniqueID { } ret = append(ret, UniqueID(v)) } + pt.QueryNodeIDList = ret return ret } diff --git a/internal/querynode/load_service.go b/internal/querynode/load_service.go index 0039042260968944b9f302d75ebda9e10fe259f4..73043849ff7d0b1c4dc745cb6ab3ca9969c61da2 100644 --- a/internal/querynode/load_service.go +++ b/internal/querynode/load_service.go @@ -114,7 +114,12 @@ func (s *loadService) loadSegmentInternal(collectionID UniqueID, partitionID Uni return err } - targetFields := s.segLoader.getTargetFields(paths, srcFieldIDs, fieldIDs) + //fmt.Println("srcFieldIDs in internal:", srcFieldIDs) + //fmt.Println("dstFieldIDs in internal:", fieldIDs) + targetFields, err := s.segLoader.checkTargetFields(paths, srcFieldIDs, fieldIDs) + if err != nil { + return err + } err = s.segLoader.loadSegmentFieldsData(segment, targetFields) if err != nil { return err diff --git a/internal/querynode/load_service_test.go b/internal/querynode/load_service_test.go index a8f2145daa43f293eb924b7dfb93ac9900de0bad..8ec4ee440ee841c21233407f8c42d9181fc095c8 100644 --- a/internal/querynode/load_service_test.go +++ b/internal/querynode/load_service_test.go @@ -1142,7 +1142,7 @@ func TestSegmentLoad_Search_Vector(t *testing.T) { paths, srcFieldIDs, err := generateInsertBinLog(collectionID, partitionID, segmentID, keyPrefix) assert.NoError(t, err) - fieldsMap := node.loadService.segLoader.getTargetFields(paths, srcFieldIDs, fieldIDs) + fieldsMap, _ := node.loadService.segLoader.checkTargetFields(paths, srcFieldIDs, fieldIDs) assert.Equal(t, len(fieldsMap), 2) segment, err := node.replica.getSegmentByID(segmentID) diff --git a/internal/querynode/segment_loader.go b/internal/querynode/segment_loader.go index 883c96e1758d1e6cf57bcda804adce5a70589c7e..b2a18961c332d8709dccd25ba7e7943192047cce 100644 --- a/internal/querynode/segment_loader.go +++ b/internal/querynode/segment_loader.go @@ -8,6 +8,7 @@ import ( "github.com/zilliztech/milvus-distributed/internal/kv" minioKV "github.com/zilliztech/milvus-distributed/internal/kv/minio" "github.com/zilliztech/milvus-distributed/internal/msgstream" + "github.com/zilliztech/milvus-distributed/internal/proto/commonpb" "github.com/zilliztech/milvus-distributed/internal/proto/datapb" "github.com/zilliztech/milvus-distributed/internal/proto/internalpb2" "github.com/zilliztech/milvus-distributed/internal/storage" @@ -53,11 +54,11 @@ func (loader *segmentLoader) getInsertBinlogPaths(segmentID UniqueID) ([]*intern } pathResponse, err := loader.dataClient.GetInsertBinlogPaths(insertBinlogPathRequest) - if err != nil { + if err != nil || pathResponse.Status.ErrorCode != commonpb.ErrorCode_SUCCESS { return nil, nil, err } - if len(pathResponse.FieldIDs) != len(pathResponse.Paths) { + if len(pathResponse.FieldIDs) != len(pathResponse.Paths) || len(pathResponse.FieldIDs) <= 0 { return nil, nil, errors.New("illegal InsertBinlogPathsResponse") } @@ -82,7 +83,7 @@ func (loader *segmentLoader) filterOutVectorFields(fieldIDs []int64, vectorField return targetFields } -func (loader *segmentLoader) getTargetFields(paths []*internalpb2.StringList, srcFieldIDS []int64, dstFields []int64) map[int64]*internalpb2.StringList { +func (loader *segmentLoader) checkTargetFields(paths []*internalpb2.StringList, srcFieldIDs []int64, dstFieldIDs []int64) (map[int64]*internalpb2.StringList, error) { targetFields := make(map[int64]*internalpb2.StringList) containsFunc := func(s []int64, e int64) bool { @@ -94,13 +95,14 @@ func (loader *segmentLoader) getTargetFields(paths []*internalpb2.StringList, sr return false } - for i, fieldID := range srcFieldIDS { - if containsFunc(dstFields, fieldID) { - targetFields[fieldID] = paths[i] + for i, fieldID := range dstFieldIDs { + if !containsFunc(srcFieldIDs, fieldID) { + return nil, errors.New("uncompleted fields") } + targetFields[fieldID] = paths[i] } - return targetFields + return targetFields, nil } func (loader *segmentLoader) loadSegmentFieldsData(segment *Segment, targetFields map[int64]*internalpb2.StringList) error { diff --git a/tests/python/test_index.py b/tests/python/test_index.py index ee7b36c5062cf05981c8cbf22c125cb18b142b75..cad7695c9530e04202b575951b1c0f4c567ee4c7 100644 --- a/tests/python/test_index.py +++ b/tests/python/test_index.py @@ -524,7 +524,6 @@ class TestIndexBase: connect.drop_index(collection, field_name) -@pytest.mark.skip("r0.3-test") class TestIndexBinary: @pytest.fixture( scope="function", @@ -594,6 +593,7 @@ class TestIndexBinary: ids = connect.bulk_insert(binary_collection, default_binary_entities, partition_tag=default_tag) connect.create_index(binary_collection, binary_field_name, get_jaccard_index) + @pytest.mark.skip("r0.3-test") @pytest.mark.timeout(BUILD_TIMEOUT) def test_create_index_search_with_query_vectors(self, connect, binary_collection, get_jaccard_index, get_nq): '''