milvus-io / milvus

A cloud-native vector database, storage for next generation AI applications
https://milvus.io
Apache License 2.0
30.41k stars 2.92k forks source link

[Bug]: [benchmark][standalone][multipleChunkedEnable] hybrid_search raises error ` query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 59]` in concurrent DQL & DML scene #37147

Closed wangting0128 closed 4 days ago

wangting0128 commented 2 weeks ago

Is there an existing issue for this?

Environment

- Milvus version:master-20241025-ad2df904-amd64
- Deployment mode(standalone or cluster):standalone
- MQ type(rocksmq, pulsar or kafka):rocksmq    
- SDK version(e.g. pymilvus v2.0.0rc2):2.5.0rc97
- OS(Ubuntu or CentOS): 
- CPU/Memory: 
- GPU: 
- Others:

Current Behavior

argo task: memory-opt-scenes-mn2cd test case name: test_bitmap_locust_dql_dml_standalone

server:

NAME                                                              READY   STATUS      RESTARTS          AGE     IP              NODE         NOMINATED NODE   READINESS GATES
memory-opt-scenes-mn2cd-2-etcd-0                                  1/1     Running     0                 3h48m   10.104.17.193   4am-node23   <none>           <none>
memory-opt-scenes-mn2cd-2-milvus-standalone-7bcd7987cf-xt7n6      1/1     Running     2 (3h48m ago)     3h48m   10.104.30.88    4am-node38   <none>           <none>
memory-opt-scenes-mn2cd-2-minio-6fd4bf75df-gb5vq                  1/1     Running     0                 3h48m   10.104.17.192   4am-node23   <none>           <none> 

client error log:

[2024-10-25 03:27:52,200 - ERROR - fouram]: RPC error: [hybrid_search], <MilvusException: (code=65535, message=fail to search on QueryNode 1: worker(1) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 59] : Assert "ptr"  => entry mismatch at /workspace/source/internal/core/src/segcore/SegmentInterface.h:212
[2024-10-25 03:27:52,270 - ERROR - fouram]: RPC error: [hybrid_search], <MilvusException: (code=65535, message=fail to search on QueryNode 1: worker(1) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 65] : Assert "ptr"  => entry mismatch at /workspace/source/internal/core/src/segcore/SegmentInterface.h:212
[2024-10-25 03:27:52,604 - ERROR - fouram]: RPC error: [hybrid_search], <MilvusException: (code=65535, message=fail to search on QueryNode 1: worker(1) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 113] : Assert "ptr"  => entry mismatch at /workspace/source/internal/core/src/segcore/SegmentInterface.h:212
[2024-10-25 03:27:52,721 - ERROR - fouram]: RPC error: [hybrid_search], <MilvusException: (code=65535, message=fail to search on QueryNode 1: worker(1) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 107] : Assert "ptr"  => entry mismatch at /workspace/source/internal/core/src/segcore/SegmentInterface.h:212
[2024-10-25 03:27:52,785 - ERROR - fouram]: RPC error: [hybrid_search], <MilvusException: (code=65535, message=fail to search on QueryNode 1: worker(1) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 125] : Assert "ptr"  => entry mismatch at /workspace/source/internal/core/src/segcore/SegmentInterface.h:212
[2024-10-25 03:27:54,441 - ERROR - fouram]: RPC error: [hybrid_search], <MilvusException: (code=65535, message=fail to search on QueryNode 1: worker(1) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 283] : Assert "ptr"  => entry mismatch at /workspace/source/internal/core/src/segcore/SegmentInterface.h:212
[2024-10-25 03:27:56,977 - ERROR - fouram]: RPC error: [hybrid_search], <MilvusException: (code=65535, message=fail to search on QueryNode 1: worker(1) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 392] : Assert "ptr"  => entry mismatch at /workspace/source/internal/core/src/segcore/SegmentInterface.h:212
[2024-10-25 03:27:58,684 - ERROR - fouram]: RPC error: [hybrid_search], <MilvusException: (code=65535, message=fail to search on QueryNode 1: worker(1) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 495] : Assert "ptr"  => entry mismatch at /workspace/source/internal/core/src/segcore/SegmentInterface.h:212
[2024-10-25 03:28:10,184 - ERROR - fouram]: RPC error: [search], <MilvusException: (code=2200, message=incomplete query result, missing id %!s(int64=453463308527584890), len(searchIDs) = 100, len(queryIDs) = 13, collection=453463308525896323: inconsistent requery result)>, <Time:{'RPC start': '2024-10-25 03:27:48.693335', 'RPC error': '2024-10-25 03:28:10.184001'}> (decorators.py:140)
[2024-10-25 03:28:10,188 - ERROR - fouram]: RPC error: [search], <MilvusException: (code=2200, message=incomplete query result, missing id %!s(int64=453463308525984853), len(searchIDs) = 100, len(queryIDs) = 12, collection=453463308525896323: inconsistent requery result)>, <Time:{'RPC start': '2024-10-25 03:27:48.706424', 'RPC error': '2024-10-25 03:28:10.188507'}> (decorators.py:140)
[2024-10-25 03:28:10,250 - ERROR - fouram]: RPC error: [search], <MilvusException: (code=2200, message=incomplete query result, missing id %!s(int64=453463308527584890), len(searchIDs) = 100, len(queryIDs) = 20, collection=453463308525896323: inconsistent requery result)>, <Time:{'RPC start': '2024-10-25 03:27:49.029308', 'RPC error': '2024-10-25 03:28:10.250593'}> (decorators.py:140)
[2024-10-25 03:28:11,940 - ERROR - fouram]: RPC error: [search], <MilvusException: (code=2200, message=incomplete query result, missing id %!s(int64=453463308527584890), len(searchIDs) = 100, len(queryIDs) = 16, collection=453463308525896323: inconsistent requery result)>, <Time:{'RPC start': '2024-10-25 03:27:50.732770', 'RPC error': '2024-10-25 03:28:11.940129'}> (decorators.py:140)
[2024-10-25 03:28:12,560 - ERROR - fouram]: RPC error: [hybrid_search], <MilvusException: (code=65535, message=fail to search on QueryNode 1: worker(1) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 914] : Assert "ptr"  => entry mismatch at /workspace/source/internal/core/src/segcore/SegmentInterface.h:212
[2024-10-25 03:28:12,818 - ERROR - fouram]: RPC error: [search], <MilvusException: (code=2200, message=incomplete query result, missing id %!s(int64=453463308527584890), len(searchIDs) = 100, len(queryIDs) = 11, collection=453463308525896323: inconsistent requery result)>, <Time:{'RPC start': '2024-10-25 03:27:51.694807', 'RPC error': '2024-10-25 03:28:12.818634'}> (decorators.py:140)
[2024-10-25 03:28:13,405 - ERROR - fouram]: RPC error: [search], <MilvusException: (code=2200, message=incomplete query result, missing id %!s(int64=453463308527584890), len(searchIDs) = 100, len(queryIDs) = 9, collection=453463308525896323: inconsistent requery result)>, <Time:{'RPC start': '2024-10-25 03:27:52.272400', 'RPC error': '2024-10-25 03:28:13.405480'}> (decorators.py:140)
[2024-10-25 03:28:13,754 - ERROR - fouram]: RPC error: [search], <MilvusException: (code=2200, message=incomplete query result, missing id %!s(int64=453463308527584890), len(searchIDs) = 100, len(queryIDs) = 8, collection=453463308525896323: inconsistent requery result)>, <Time:{'RPC start': '2024-10-25 03:27:52.607858', 'RPC error': '2024-10-25 03:28:13.754053'}> (decorators.py:140)
[2024-10-25 03:28:13,853 - ERROR - fouram]: RPC error: [search], <MilvusException: (code=2200, message=incomplete query result, missing id %!s(int64=453463308527584890), len(searchIDs) = 100, len(queryIDs) = 19, collection=453463308525896323: inconsistent requery result)>, <Time:{'RPC start': '2024-10-25 03:27:52.696048', 'RPC error': '2024-10-25 03:28:13.853192'}> (decorators.py:140)

Expected Behavior

No response

Steps To Reproduce

concurrent test and calculation of RT and QPS

        :purpose:  `primary key: INT64 autoID`
            1. building `BITMAP` index on all supported 12 scalar fields
            2. 2 fields of different vector types
            3. verify DQL & DML requests

        :test steps:
            1. create collection with fields:
                'float_vector': 128dim
                'sparse_float_vector': sparse_range=[1, 100] <- the range of non-zero values of a sparse vector
                'id': primary key type is INT64

                all scalar fields: varchar max_length=100, array max_capacity=13
            2. build indexes:
                IVF_SQ8: 'float_vector'
                SPARSE_WAND: 'sparse_float_vector'
                BITMAP: all scalar fields
            3. insert 2 million data
            4. flush collection
            5. build indexes again using the same params
            6. load collection
            7. concurrent request:
                - search
                - query
                - hybrid_search
                - load
                - insert
                - delete: delete all inserted data
                - flush: ignore RateLimiter

Milvus Log

No response

Anything else?

test result:

[2024-10-25 06:27:49,697 -  INFO - fouram]: Type     Name                                                                          # reqs      # fails |    Avg     Min     Max    Med |   req/s  failures/s (stats.py:789)
[2024-10-25 06:27:49,697 -  INFO - fouram]: --------|----------------------------------------------------------------------------|-------|-------------|-------|-------|-------|-------|--------|----------- (stats.py:789)
[2024-10-25 06:27:49,697 -  INFO - fouram]: grpc     delete                                                                           537     0(0.00%) |   5668       1   70785      9 |    0.05        0.00 (stats.py:789)
[2024-10-25 06:27:49,697 -  INFO - fouram]: grpc     flush                                                                            575     0(0.00%) | 115020     507  690441  55000 |    0.05        0.00 (stats.py:789)
[2024-10-25 06:27:49,697 -  INFO - fouram]: grpc     hybrid_search                                                                    597 597(100.00%) |      0       0       0      0 |    0.06        0.06 (stats.py:789)
[2024-10-25 06:27:49,697 -  INFO - fouram]: grpc     insert                                                                           597     0(0.00%) |   5832       3   60038     26 |    0.06        0.00 (stats.py:789)
[2024-10-25 06:27:49,697 -  INFO - fouram]: grpc     load                                                                             626     0(0.00%) |  11621       3  120007     70 |    0.06        0.00 (stats.py:789)
[2024-10-25 06:27:49,697 -  INFO - fouram]: grpc     query                                                                            651  563(86.48%) |     75       0    8881      0 |    0.06        0.05 (stats.py:789)
[2024-10-25 06:27:49,697 -  INFO - fouram]: grpc     search                                                                           587 587(100.00%) |      0       0       0      0 |    0.05        0.05 (stats.py:789)
[2024-10-25 06:27:49,697 -  INFO - fouram]: --------|----------------------------------------------------------------------------|-------|-------------|-------|-------|-------|-------|--------|----------- (stats.py:789)
[2024-10-25 06:27:49,697 -  INFO - fouram]:          Aggregated                                                                      4170 1747(41.89%) |  19181       0  690441      5 |    0.39        0.16 (stats.py:789)
[2024-10-25 06:27:49,697 -  INFO - fouram]:  (stats.py:790)
[2024-10-25 06:27:49,701 -  INFO - fouram]: [PerfTemplate] Report data: 
{'server': {'deploy_tool': 'helm',
            'deploy_mode': 'standalone',
            'config_name': 'standalone_16c64m',
            'config': {'standalone': {'resources': {'limits': {'cpu': '16.0', 'memory': '64Gi'}, 'requests': {'cpu': '9.0', 'memory': '33Gi'}}},
                       'cluster': {'enabled': False},
                       'etcd': {'replicaCount': 1, 'metrics': {'enabled': True, 'podMonitor': {'enabled': True}}},
                       'minio': {'mode': 'standalone', 'metrics': {'podMonitor': {'enabled': True}}},
                       'pulsar': {'enabled': False},
                       'metrics': {'serviceMonitor': {'enabled': True}},
                       'log': {'level': 'debug'},
                       'extraConfigFiles': {'user.yaml': 'queryNode:\n  segcore:\n    multipleChunkedEnable: true\n'},
                       'image': {'all': {'repository': 'harbor.milvus.io/milvus/milvus', 'tag': 'master-20241025-ad2df904-amd64'}}},
            'host': 'memory-opt-scenes-mn2cd-2-milvus.qa-milvus.svc.cluster.local',
            'port': '19530',
            'uri': ''},
 'client': {'test_case_type': 'ConcurrentClientBase',
            'test_case_name': 'test_bitmap_locust_dql_dml_standalone',
            'test_case_params': {'dataset_params': {'metric_type': 'L2',
                                                    'dim': 128,
                                                    'max_length': 100,
                                                    'scalars_index': {'int8_1': {'index_type': 'BITMAP'},
                                                                      'int16_1': {'index_type': 'BITMAP'},
                                                                      'int32_1': {'index_type': 'BITMAP'},
                                                                      'int64_1': {'index_type': 'BITMAP'},
                                                                      'varchar_1': {'index_type': 'BITMAP'},
                                                                      'bool_1': {'index_type': 'BITMAP'},
                                                                      'array_int8_1': {'index_type': 'BITMAP'},
                                                                      'array_int16_1': {'index_type': 'BITMAP'},
                                                                      'array_int32_1': {'index_type': 'BITMAP'},
                                                                      'array_int64_1': {'index_type': 'BITMAP'},
                                                                      'array_varchar_1': {'index_type': 'BITMAP'},
                                                                      'array_bool_1': {'index_type': 'BITMAP'}},
                                                    'vectors_index': {'sparse_float_vector': {'index_type': 'SPARSE_INVERTED_INDEX',
                                                                                              'index_param': {'drop_ratio_build': 0.2},
                                                                                              'metric_type': 'IP'}},
                                                    'scalars_params': {'array_int8_1': {'params': {'max_capacity': 13},
                                                                                        'other_params': {'dataset': 'random_algorithm',
                                                                                                         'algorithm_params': {'algorithm_name': 'random_range',
                                                                                                                              'specify_range': [-128, 128],
                                                                                                                              'max_capacity': 13}}},
                                                                       'array_int16_1': {'params': {'max_capacity': 13},
                                                                                         'other_params': {'dataset': 'random_algorithm',
                                                                                                          'algorithm_params': {'algorithm_name': 'random_range',
                                                                                                                               'specify_range': [-200, 200],
                                                                                                                               'max_capacity': 13}}},
                                                                       'array_int32_1': {'params': {'max_capacity': 13},
                                                                                         'other_params': {'dataset': 'random_algorithm',
                                                                                                          'algorithm_params': {'algorithm_name': 'specify_scope',
                                                                                                                               'specify_range': [-300, 300],
                                                                                                                               'max_capacity': 13}}},
                                                                       'array_int64_1': {'params': {'max_capacity': 13},
                                                                                         'other_params': {'dataset': 'random_algorithm',
                                                                                                          'algorithm_params': {'algorithm_name': 'fixed_value_range',
                                                                                                                               'specify_range': [-400, 432],
                                                                                                                               'batch': 50,
                                                                                                                               'max_capacity': 13}}},
                                                                       'array_varchar_1': {'params': {'max_capacity': 13},
                                                                                           'other_params': {'dataset': 'random_algorithm',
                                                                                                            'algorithm_params': {'algorithm_name': 'random_range',
                                                                                                                                 'specify_range': [-1500, 1500],
                                                                                                                                 'max_capacity': 13}}},
                                                                       'array_bool_1': {'params': {'max_capacity': 13}},
                                                                       'int8_1': {'other_params': {'dataset': 'random_algorithm',
                                                                                                   'algorithm_params': {'algorithm_name': 'random_range',
                                                                                                                        'specify_range': [-128, 128],
                                                                                                                        'max_capacity': 13}}},
                                                                       'int16_1': {'other_params': {'dataset': 'random_algorithm',
                                                                                                    'algorithm_params': {'algorithm_name': 'random_range',
                                                                                                                         'specify_range': [-200, 200],
                                                                                                                         'max_capacity': 13}}},
                                                                       'int32_1': {'other_params': {'dataset': 'random_algorithm',
                                                                                                    'algorithm_params': {'algorithm_name': 'specify_scope',
                                                                                                                         'specify_range': [-300, 300],
                                                                                                                         'max_capacity': 13}}},
                                                                       'int64_1': {'other_params': {'dataset': 'random_algorithm',
                                                                                                    'algorithm_params': {'algorithm_name': 'fixed_value_range',
                                                                                                                         'specify_range': [-400, 432],
                                                                                                                         'batch': 50,
                                                                                                                         'max_capacity': 13}}},
                                                                       'varchar_1': {'other_params': {'dataset': 'random_algorithm',
                                                                                                      'algorithm_params': {'algorithm_name': 'random_range',
                                                                                                                           'specify_range': [-1500, 1500],
                                                                                                                           'max_capacity': 13}}}},
                                                    'dataset_name': 'sift',
                                                    'dataset_size': 2000000,
                                                    'ni_per': 5000},
                                 'collection_params': {'other_fields': ['sparse_float_vector', 'int8_1', 'int16_1', 'int32_1', 'int64_1', 'varchar_1', 'bool_1',
                                                                        'array_int8_1', 'array_int16_1', 'array_int32_1', 'array_int64_1', 'array_varchar_1',
                                                                        'array_bool_1'],
                                                       'shards_num': 1,
                                                       'auto_id': True},
                                 'resource_groups_params': {'reset': False},
                                 'database_user_params': {'reset_rbac': False, 'reset_db': False},
                                 'index_params': {'index_type': 'IVF_SQ8', 'index_param': {'nlist': 1024}},
                                 'concurrent_params': {'concurrent_number': 20, 'during_time': '3h', 'interval': 20, 'spawn_rate': None},
                                 'concurrent_tasks': [{'type': 'search',
                                                       'weight': 1,
                                                       'params': {'nq': 10,
                                                                  'top_k': 10,
                                                                  'search_param': {'nprobe': 16},
                                                                  'expr': 'int8_1 == 100',
                                                                  'guarantee_timestamp': None,
                                                                  'partition_names': None,
                                                                  'output_fields': ['id', 'float_vector', 'int64_1'],
                                                                  'ignore_growing': False,
                                                                  'group_by_field': None,
                                                                  'timeout': 60,
                                                                  'random_data': True,
                                                                  'check_task': 'check_search_output',
                                                                  'check_items': {'nq': 10}}},
                                                      {'type': 'query',
                                                       'weight': 1,
                                                       'params': {'ids': None,
                                                                  'expr': 'int64_1 > -1',
                                                                  'output_fields': ['*'],
                                                                  'offset': None,
                                                                  'limit': 10,
                                                                  'ignore_growing': False,
                                                                  'partition_names': None,
                                                                  'timeout': 60,
                                                                  'consistency_level': None,
                                                                  'random_data': False,
                                                                  'random_count': 0,
                                                                  'random_range': [0, 1],
                                                                  'field_name': 'id',
                                                                  'field_type': 'int64',
                                                                  'check_task': 'check_query_output',
                                                                  'check_items': {'expect_length': 10}}},
                                                      {'type': 'hybrid_search',
                                                       'weight': 1,
                                                       'params': {'nq': 10,
                                                                  'top_k': 1,
                                                                  'reqs': [{'search_param': {'nprobe': 128},
                                                                            'anns_field': 'float_vector',
                                                                            'expr': '(array_contains_any(array_int32_1, [0]) || array_contains(array_int64_1, '
                                                                                    '1)) || ((varchar_1 like "1%") and (bool_1 == True))',
                                                                            'top_k': 100},
                                                                           {'search_param': {'drop_ratio_search': 0.1},
                                                                            'anns_field': 'sparse_float_vector',
                                                                            'expr': 'not (int16_1 == int8_1) && ARRAY_CONTAINS_ANY(array_int64_1, [-1, 0, '
                                                                                    '1])'}],
                                                                  'rerank': {'RRFRanker': []},
                                                                  'output_fields': ['*'],
                                                                  'ignore_growing': False,
                                                                  'guarantee_timestamp': None,
                                                                  'partition_names': None,
                                                                  'timeout': 120,
                                                                  'random_data': True,
                                                                  'check_task': 'check_search_output',
                                                                  'check_items': {'output_fields': ['sparse_float_vector', 'int8_1', 'int16_1', 'int32_1',
                                                                                                    'int64_1', 'varchar_1', 'bool_1', 'array_int8_1',
                                                                                                    'array_int16_1', 'array_int32_1', 'array_int64_1',
                                                                                                    'array_varchar_1', 'array_bool_1', 'id', 'float_vector'],
                                                                                  'nq': 10}}},
                                                      {'type': 'load',
                                                       'weight': 1,
                                                       'params': {'replica_number': 1, 'timeout': 180, 'check_task': 'check_response', 'check_items': None}},
                                                      {'type': 'insert',
                                                       'weight': 1,
                                                       'params': {'nb': 10,
                                                                  'timeout': 30,
                                                                  'random_id': True,
                                                                  'random_vector': True,
                                                                  'varchar_filled': False,
                                                                  'start_id': 2000000,
                                                                  'shuffle_id': False,
                                                                  'check_task': 'check_response',
                                                                  'check_items': None}},
                                                      {'type': 'delete',
                                                       'weight': 1,
                                                       'params': {'expr': '',
                                                                  'delete_length': 10,
                                                                  'timeout': 30,
                                                                  'check_task': 'check_response',
                                                                  'check_items': None}},
                                                      {'type': 'flush',
                                                       'weight': 1,
                                                       'params': {'timeout': 600,
                                                                  'check_task': 'check_ignore_expected_errors',
                                                                  'check_items': [{'message': 'request is rejected by grpc RateLimiter middleware, please '
                                                                                              'retry later'},
                                                                                  {'message': 'wait for flush timeout'}]}}]},
            'run_id': 2024102551731872,
            'datetime': '2024-10-25 02:59:33.383302',
            'client_version': '2.5.0'},
 'result': {'test_result': {'index': {'RT': 928.5232,
                                      'sparse_float_vector': {'RT': 244.8948},
                                      'int8_1': {'RT': 101.311},
                                      'int16_1': {'RT': 0.6061},
                                      'int32_1': {'RT': 0.517},
                                      'int64_1': {'RT': 0.5269},
                                      'varchar_1': {'RT': 0.5139},
                                      'bool_1': {'RT': 0.5116},
                                      'array_int8_1': {'RT': 0.5183},
                                      'array_int16_1': {'RT': 0.5213},
                                      'array_int32_1': {'RT': 0.5343},
                                      'array_int64_1': {'RT': 0.5222},
                                      'array_varchar_1': {'RT': 0.5107},
                                      'array_bool_1': {'RT': 0.5112}},
                            'insert': {'total_time': 157.9593, 'VPS': 12661.4894, 'batch_time': 0.3949, 'batch': 5000},
                            'flush': {'RT': 3.0366},
                            'load': {'RT': 5.2977},
                            'Locust': {'Aggregated': {'Requests': 4170,
                                                      'Fails': 1747,
                                                      'RPS': 0.39,
                                                      'fail_s': 0.42,
                                                      'RT_max': 690441.5,
                                                      'RT_avg': 19181.56,
                                                      'TP50': 6,
                                                      'TP99': 446000.0},
                                       'delete': {'Requests': 537,
                                                  'Fails': 0,
                                                  'RPS': 0.05,
                                                  'fail_s': 0.0,
                                                  'RT_max': 70785.83,
                                                  'RT_avg': 5668.75,
                                                  'TP50': 9,
                                                  'TP99': 53000.0},
                                       'flush': {'Requests': 575,
                                                 'Fails': 0,
                                                 'RPS': 0.05,
                                                 'fail_s': 0.0,
                                                 'RT_max': 690441.5,
                                                 'RT_avg': 115020.61,
                                                 'TP50': 55000.0,
                                                 'TP99': 630000.0},
                                       'hybrid_search': {'Requests': 597,
                                                         'Fails': 597,
                                                         'RPS': 0.06,
                                                         'fail_s': 1.0,
                                                         'RT_max': 0,
                                                         'RT_avg': 0.0,
                                                         'TP50': 0,
                                                         'TP99': 0},
                                       'insert': {'Requests': 597,
                                                  'Fails': 0,
                                                  'RPS': 0.06,
                                                  'fail_s': 0.0,
                                                  'RT_max': 60038.93,
                                                  'RT_avg': 5832.49,
                                                  'TP50': 26,
                                                  'TP99': 60000.0},
                                       'load': {'Requests': 626,
                                                'Fails': 0,
                                                'RPS': 0.06,
                                                'fail_s': 0.0,
                                                'RT_max': 120007.31,
                                                'RT_avg': 11621.74,
                                                'TP50': 70,
                                                'TP99': 80000.0},
                                       'query': {'Requests': 651,
                                                 'Fails': 563,
                                                 'RPS': 0.06,
                                                 'fail_s': 0.86,
                                                 'RT_max': 8881.64,
                                                 'RT_avg': 75.17,
                                                 'TP50': 0,
                                                 'TP99': 3500.0},
                                       'search': {'Requests': 587,
                                                  'Fails': 587,
                                                  'RPS': 0.05,
                                                  'fail_s': 1.0,
                                                  'RT_max': 0,
                                                  'RT_avg': 0.0,
                                                  'TP50': 0,
                                                  'TP99': 0}}}}} 
wangting0128 commented 2 weeks ago

e2e case, same error

image: 2.5-20241029-eaed5b4b-amd64 test case name: test_query_function_calls

server: queryNode.segcore.multipleChunkedEnable=true

NAME                                                            READY   STATUS             RESTARTS         AGE     IP              NODE         NOMINATED NODE   READINESS GATES
fouramf-e2e-9r5h5-etcd-0                                        1/1     Running            0                3h50m   10.104.24.217   4am-node29   <none>           <none>
fouramf-e2e-9r5h5-etcd-1                                        1/1     Running            0                3h50m   10.104.23.144   4am-node27   <none>           <none>
fouramf-e2e-9r5h5-etcd-2                                        1/1     Running            0                3h50m   10.104.19.167   4am-node28   <none>           <none>
fouramf-e2e-9r5h5-milvus-datanode-565755d4dc-rrqkq              1/1     Running            0                3h50m   10.104.16.145   4am-node21   <none>           <none>
fouramf-e2e-9r5h5-milvus-indexnode-dfdd757d-7pbl5               1/1     Running            0                3h50m   10.104.1.233    4am-node10   <none>           <none>
fouramf-e2e-9r5h5-milvus-mixcoord-759c57f97c-kkpfm              1/1     Running            2 (3h49m ago)    3h50m   10.104.9.155    4am-node14   <none>           <none>
fouramf-e2e-9r5h5-milvus-proxy-746689757c-844sn                 1/1     Running            2 (3h49m ago)    3h50m   10.104.9.156    4am-node14   <none>           <none>
fouramf-e2e-9r5h5-milvus-querynode-7bcb4c4d76-v5c78             1/1     Running            0                3h50m   10.104.15.246   4am-node20   <none>           <none>
fouramf-e2e-9r5h5-minio-0                                       1/1     Running            0                3h50m   10.104.19.166   4am-node28   <none>           <none>
fouramf-e2e-9r5h5-minio-1                                       1/1     Running            0                3h50m   10.104.24.218   4am-node29   <none>           <none>
fouramf-e2e-9r5h5-minio-2                                       1/1     Running            0                3h50m   10.104.21.217   4am-node24   <none>           <none>
fouramf-e2e-9r5h5-minio-3                                       1/1     Running            0                3h50m   10.104.20.116   4am-node22   <none>           <none>
fouramf-e2e-9r5h5-pulsar-bookie-0                               1/1     Running            0                3h50m   10.104.18.230   4am-node25   <none>           <none>
fouramf-e2e-9r5h5-pulsar-bookie-1                               1/1     Running            0                3h50m   10.104.24.220   4am-node29   <none>           <none>
fouramf-e2e-9r5h5-pulsar-bookie-2                               1/1     Running            0                3h50m   10.104.19.170   4am-node28   <none>           <none>
fouramf-e2e-9r5h5-pulsar-bookie-init-8nz7d                      0/1     Completed          0                3h50m   10.104.15.212   4am-node20   <none>           <none>
fouramf-e2e-9r5h5-pulsar-broker-0                               1/1     Running            0                3h50m   10.104.5.130    4am-node12   <none>           <none>
fouramf-e2e-9r5h5-pulsar-proxy-0                                1/1     Running            0                3h50m   10.104.1.229    4am-node10   <none>           <none>
fouramf-e2e-9r5h5-pulsar-pulsar-init-k2pjp                      0/1     Completed          0                3h50m   10.104.6.48     4am-node13   <none>           <none>
fouramf-e2e-9r5h5-pulsar-recovery-0                             1/1     Running            0                3h50m   10.104.17.152   4am-node23   <none>           <none>
fouramf-e2e-9r5h5-pulsar-zookeeper-0                            1/1     Running            0                3h50m   10.104.23.145   4am-node27   <none>           <none>
fouramf-e2e-9r5h5-pulsar-zookeeper-1                            1/1     Running            0                3h49m   10.104.16.101   4am-node21   <none>           <none>
fouramf-e2e-9r5h5-pulsar-zookeeper-2                            1/1     Running            0                3h48m   10.104.34.222   4am-node37   <none>           <none>

client log:

    @pytest.mark.tags(CaseLabel.L1)
    def test_query_function_calls(self):
        """
        target: test query data
        method: create collection and insert data
                query with mix call expr in string field and int field
        expected: query successfully
        """
        collection_w, vectors = self.init_collection_general(prefix, insert_data=True,
                                                             primary_field=ct.default_string_field_name)[0:2]
        res = vectors[0].iloc[:, 1:3].to_dict('records')
        output_fields = [default_float_field_name, default_string_field_name]
        for mixed_call_expr in [
            "not empty(varchar) && int64 >= 0",
            # function call is case-insensitive
            "not EmPty(varchar) && int64 >= 0",
            "not EMPTY(varchar) && int64 >= 0",
            "starts_with(varchar, varchar) && int64 >= 0",
        ]:
>           collection_w.query(
                mixed_call_expr,
                output_fields=output_fields,
                check_task=CheckTasks.check_query_results,
                check_items={exp_res: res},
            )

test_query.py:5678: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../utils/wrapper.py:33: in inner_wrapper
    res, result = func(*args, **kwargs)
../base/collection_wrapper.py:218: in query
    check_result = ResponseChecker(res, func_name, check_task, check_items, check,
../check/func_check.py:65: in run
    result = self.check_query_results(self.response, self.func_name, self.check_items)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

query_res = Error(code=65535, message=fail to Query on QueryNode 3: worker(3) query failed: Operator::GetOutput failed for [Operat...an() interface is not implemented for variable column at /workspace/source/internal/core/src/mmap/ChunkedColumn.h:304
)
func_name = 'query'
check_items = {'exp_res': [{'float': 0.0, 'varchar': '0'}, {'float': 1.0, 'varchar': '1'}, {'float': 2.0, 'varchar': '2'}, {'float': 3.0, 'varchar': '3'}, {'float': 4.0, 'varchar': '4'}, {'float': 5.0, 'varchar': '5'}, ...]}

    @staticmethod
    def check_query_results(query_res, func_name, check_items):
        """
        According to the check_items to check actual query result, which return from func_name.

        :param: query_res: A list that contains all results
        :type: list

        :param func_name: Query API name
        :type func_name: str

        :param check_items: The items expected to be checked, including exp_res, with_vec
                            The type of exp_res value is as same as query_res
                            The type of with_vec value is bool, True value means check vector field, False otherwise
        :type check_items: dict
        """
        if func_name != 'query':
            log.warning("The function name is {} rather than {}".format(func_name, "query"))
        if not isinstance(query_res, list):
>           raise Exception("The query result to check isn't list type object")
E           Exception: The query result to check isn't list type object

../check/func_check.py:432: Exception
------------------------------ Captured log setup ------------------------------
[2024-10-29 09:14:05 - INFO - ci_test]: [setup_class] Start setup class... (client_base.py:41)
[2024-10-29 09:14:05 - INFO - ci_test]: *********************************** setup *********************************** (client_base.py:47)
[2024-10-29 09:14:05 - INFO - ci_test]: pymilvus version: 2.5.0rc104 (client_base.py:48)
[2024-10-29 09:14:05 - INFO - ci_test]: [setup_method] Start setup test case test_query_function_calls. (client_base.py:49)
------------------------------ Captured log call -------------------------------
[2024-10-29 09:14:05 - INFO - ci_test]: Test case of search interface: initialize before test case (client_base.py:262)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_request)  : [Connections.has_connection] args: ['default'], kwargs: {} (api_request.py:62)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_response) : False  (api_request.py:37)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_request)  : [Connections.connect] args: ['default', '', '', 'default', ''], kwargs: {'host': 'fouramf-e2e-9r5h5-milvus.qa-milvus.svc.cluster.local', 'port': 19530} (api_request.py:62)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_response) : None  (api_request.py:37)
[2024-10-29 09:14:05 - INFO - ci_test]: server version: eaed5b4 (client_base.py:166)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_request)  : [FieldSchema] args: ['int64', <DataType.INT64: 5>, ''], kwargs: {'is_primary': False, 'is_partition_key': False, 'nullable': False} (api_request.py:62)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_response) : {'name': 'int64', 'description': '', 'type': <DataType.INT64: 5>}  (api_request.py:37)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_request)  : [FieldSchema] args: ['varchar', <DataType.VARCHAR: 21>, ''], kwargs: {'max_length': 65535, 'is_primary': False, 'is_partition_key': False, 'nullable': False} (api_request.py:62)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_response) : {'name': 'varchar', 'description': '', 'type': <DataType.VARCHAR: 21>, 'params': {'max_length': 65535}}  (api_request.py:37)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_request)  : [FieldSchema] args: ['float_vector', <DataType.FLOAT_VECTOR: 101>, ''], kwargs: {'dim': 128, 'is_primary': False, 'nullable': False} (api_request.py:62)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_response) : {'name': 'float_vector', 'description': '', 'type': <DataType.FLOAT_VECTOR: 101>, 'params': {'dim': 128}}  (api_request.py:37)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_request)  : [FieldSchema] args: ['float', <DataType.FLOAT: 10>, ''], kwargs: {'is_primary': False, 'nullable': False} (api_request.py:62)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_response) : {'name': 'float', 'description': '', 'type': <DataType.FLOAT: 10>}  (api_request.py:37)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_request)  : [FieldSchema] args: ['json_field', <DataType.JSON: 23>, ''], kwargs: {'is_primary': False, 'nullable': False} (api_request.py:62)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_response) : {'name': 'json_field', 'description': '', 'type': <DataType.JSON: 23>}  (api_request.py:37)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_request)  : [CollectionSchema] args: [[{'name': 'int64', 'description': '', 'type': <DataType.INT64: 5>}, {'name': 'float', 'description': '', 'type': <DataType.FLOAT: 10>}, {'name': 'varchar', 'description': '', 'type': <DataType.VARCHAR: 21>, 'params': {'max_length': 65535}}, {'name': 'json_field', 'description': '', 'type': <DataTyp......, kwargs: {'primary_field': 'varchar', 'auto_id': False, 'enable_dynamic_field': False} (api_request.py:62)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_response) : {'auto_id': False, 'description': '', 'fields': [{'name': 'int64', 'description': '', 'type': <DataType.INT64: 5>}, {'name': 'float', 'description': '', 'type': <DataType.FLOAT: 10>}, {'name': 'varchar', 'description': '', 'type': <DataType.VARCHAR: 21>, 'params': {'max_length': 65535}, 'is_primary'......  (api_request.py:37)
[2024-10-29 09:14:05 - INFO - ci_test]: init_collection_general: collection creation (client_base.py:306)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_request)  : [Connections.has_connection] args: ['default'], kwargs: {} (api_request.py:62)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_response) : True  (api_request.py:37)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_request)  : [Collection] args: ['query_yPgQI7Eb', {'auto_id': False, 'description': '', 'fields': [{'name': 'int64', 'description': '', 'type': <DataType.INT64: 5>}, {'name': 'float', 'description': '', 'type': <DataType.FLOAT: 10>}, {'name': 'varchar', 'description': '', 'type': <DataType.VARCHAR: 21>, 'params': {'max_length': 6......, kwargs: {'consistency_level': 'Strong'} (api_request.py:62)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_response) : <Collection>:
-------------
<name>: query_yPgQI7Eb
<description>: 
<schema>: {'auto_id': False, 'description': '', 'fields': [{'name': 'int64', 'description': '', 'type': <DataType.INT64: 5>}, {'name': 'float', 'description': '', 'type': <DataType.FLOAT: 10>}, {'name': 'varchar', 'description': '', ......  (api_request.py:37)
[2024-10-29 09:14:05 - INFO - ci_test]: inserting 2000 data into collection query_yPgQI7Eb (common_func.py:2705)
[2024-10-29 09:14:05 - DEBUG - ci_test]: Dynamic field is enabled: False (common_func.py:2710)
[2024-10-29 09:14:05 - DEBUG - ci_test]: (api_request)  : [Collection.insert] args: [      int64   float varchar                         json_field                                       float_vector
0         0     0.0       0        {'number': 0, 'float': 0.0}  [0.09061300659385457, 0.1337348786921125, 0.09...
1         1     1.0       1        {'number': 1, 'float': 1.0}  [0.0814......, kwargs: {'timeout': 180} (api_request.py:62)
[2024-10-29 09:14:06 - DEBUG - ci_test]: (api_response) : (insert count: 2000, delete count: 0, upsert count: 0, timestamp: 453559778265268228, success count: 2000, err count: 0  (api_request.py:37)
[2024-10-29 09:14:06 - INFO - ci_test]: inserted 2000 data into collection query_yPgQI7Eb (common_func.py:2775)
[2024-10-29 09:14:06 - DEBUG - ci_test]: (api_request)  : [Collection.flush] args: [], kwargs: {'timeout': 180} (api_request.py:62)
[2024-10-29 09:14:10 - DEBUG - ci_test]: (api_response) : None  (api_request.py:37)
[2024-10-29 09:14:10 - DEBUG - ci_test]: (api_request)  : [Collection.flush] args: [], kwargs: {'timeout': 180} (api_request.py:62)
[2024-10-29 09:14:18 - DEBUG - ci_test]: (api_response) : None  (api_request.py:37)
[2024-10-29 09:14:18 - DEBUG - ci_test]: (api_request)  : [Collection.create_index] args: ['float_vector', {'index_type': 'FLAT', 'params': {}, 'metric_type': 'COSINE'}, 1200], kwargs: {'index_name': ''} (api_request.py:62)
[2024-10-29 09:14:20 - DEBUG - ci_test]: (api_response) : Status(code=0, message=)  (api_request.py:37)
[2024-10-29 09:14:20 - DEBUG - ci_test]: (api_request)  : [Collection.load] args: [None, 1, 180], kwargs: {} (api_request.py:62)
[2024-10-29 09:14:21 - DEBUG - ci_test]: (api_response) : None  (api_request.py:37)
[2024-10-29 09:14:21 - DEBUG - ci_test]: (api_request)  : [Collection.query] args: ['not empty(varchar) && int64 >= 0', ['float', 'varchar'], None, 180], kwargs: {} (api_request.py:62)
[2024-10-29 09:14:22 - ERROR - pymilvus.decorators]: RPC error: [query], <MilvusException: (code=65535, message=fail to Query on QueryNode 3: worker(3) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 14972] :  => span() interface is not implemented for variable column at /workspace/source/internal/core/src/mmap/ChunkedColumn.h:304
)>, <Time:{'RPC start': '2024-10-29 09:14:21.872553', 'RPC error': '2024-10-29 09:14:22.739207'}> (decorators.py:140)
[2024-10-29 09:14:22 - ERROR - ci_test]: Traceback (most recent call last):
  File "/src/milvus/tests/python_client/utils/api_request.py", line 32, in inner_wrapper
    res = func(*args, **_kwargs)
  File "/src/milvus/tests/python_client/utils/api_request.py", line 63, in api_request
    return func(*arg, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/pymilvus/orm/collection.py", line 1076, in query
    return conn.query(
  File "/usr/local/lib/python3.8/dist-packages/pymilvus/decorators.py", line 141, in handler
    raise e from e
  File "/usr/local/lib/python3.8/dist-packages/pymilvus/decorators.py", line 137, in handler
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/pymilvus/decorators.py", line 176, in handler
    return func(self, *args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/pymilvus/decorators.py", line 116, in handler
    raise e from e
  File "/usr/local/lib/python3.8/dist-packages/pymilvus/decorators.py", line 86, in handler
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/pymilvus/client/grpc_handler.py", line 1541, in query
    check_status(response.status)
  File "/usr/local/lib/python3.8/dist-packages/pymilvus/client/utils.py", line 63, in check_status
    raise MilvusException(status.code, status.reason, status.error_code)
pymilvus.exceptions.MilvusException: <MilvusException: (code=65535, message=fail to Query on QueryNode 3: worker(3) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 14972] :  => span() interface is not implemented for variable column at /workspace/source/internal/core/src/mmap/ChunkedColumn.h:304
)>
 (api_request.py:45)
[2024-10-29 09:14:22 - ERROR - ci_test]: (api_response) : <MilvusException: (code=65535, message=fail to Query on QueryNode 3: worker(3) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 14972] :  => span() interface is not implemented for variable column at /workspace/source/internal/core/src/mmap/ChunkedColumn.h:304
...... (api_request.py:46)
liliu-z commented 1 week ago

/assign @wangting0128

wangting0128 commented 1 week ago

still exist

image: 2.5-20241031-6b9b6999-amd64

client log:

截屏2024-11-01 17 27 13

/unassign @wangting0128

NicoYuan1986 commented 1 week ago

also reproduced in nightly. 2.5(6b9b699) default config. link: https://jenkins.milvus.io:18080/blue/organizations/jenkins/Milvus%20Nightly%20CI(new)/detail/2.5/5/pipeline/153 log:

[pytest : test] [2024-11-01 03:52:28 - ERROR - pymilvus.decorators]: RPC error: [query], <MilvusException: (code=65535, message=fail to Query on QueryNode 1: worker(1) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 6644] : Assert "(value_proto.val_case() == milvus::proto::plan::GenericValue::kFloatVal)"  at /workspace/source/internal/core/src/exec/expression/Utils.h:130
[pytest : test] )>, <Time:{'RPC start': '2024-11-01 03:52:28.219347', 'RPC error': '2024-11-01 03:52:28.995034'}> (decorators.py:140)
[pytest : test] [2024-11-01 03:52:28 - ERROR - ci_test]: Traceback (most recent call last):
[pytest : test]   File "/milvus/tests/python_client/utils/api_request.py", line 32, in inner_wrapper
[pytest : test]     res = func(*args, **_kwargs)
[pytest : test]   File "/milvus/tests/python_client/utils/api_request.py", line 63, in api_request
[pytest : test]     return func(*arg, **kwargs)
[pytest : test]   File "/usr/local/lib/python3.8/site-packages/pymilvus/orm/collection.py", line 1076, in query
[pytest : test]     return conn.query(
[pytest : test]   File "/usr/local/lib/python3.8/site-packages/pymilvus/decorators.py", line 141, in handler
[pytest : test]     raise e from e
[pytest : test]   File "/usr/local/lib/python3.8/site-packages/pymilvus/decorators.py", line 137, in handler
[pytest : test]     return func(*args, **kwargs)
[pytest : test]   File "/usr/local/lib/python3.8/site-packages/pymilvus/decorators.py", line 176, in handler
[pytest : test]     return func(self, *args, **kwargs)
[pytest : test]   File "/usr/local/lib/python3.8/site-packages/pymilvus/decorators.py", line 116, in handler
[pytest : test]     raise e from e
[pytest : test]   File "/usr/local/lib/python3.8/site-packages/pymilvus/decorators.py", line 86, in handler
[pytest : test]     return func(*args, **kwargs)
[pytest : test]   File "/usr/local/lib/python3.8/site-packages/pymilvus/client/grpc_handler.py", line 1541, in query
[pytest : test]     check_status(response.status)
[pytest : test]   File "/usr/local/lib/python3.8/site-packages/pymilvus/client/utils.py", line 63, in check_status
[pytest : test]     raise MilvusException(status.code, status.reason, status.error_code)
[pytest : test] pymilvus.exceptions.MilvusException: <MilvusException: (code=65535, message=fail to Query on QueryNode 1: worker(1) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 6644] : Assert "(value_proto.val_case() == milvus::proto::plan::GenericValue::kFloatVal)"  at /workspace/source/internal/core/src/exec/expression/Utils.h:130
[pytest : test] )>
[pytest : test]  (api_request.py:45)
[pytest : test] [2024-11-01 03:52:28 - ERROR - ci_test]: (api_response) : <MilvusException: (code=65535, message=fail to Query on QueryNode 1: worker(1) query failed: Operator::GetOutput failed for [Operator:PhyFilterBitsNode, plan node id: 6644] : Assert "(value_proto.val_case() == milvus::proto::plan::GenericValue::kFloatVal)"  at /workspace/source/internal/core/src/exe...... (api_request.py:46)
liliu-z commented 5 days ago

@wangting0128 @NicoYuan1986 Can you help verify this, Looks similar to https://github.com/milvus-io/milvus/issues/37274

wangting0128 commented 4 days ago

verification passed

argo task:memory-opt-scenes-7vrcm image:master-20241108-a0315783-amd64