milvus-io/milvus

[Bug]: [Nightly] Range search iterator with radius only will fail reporting range_filter < radius

NicoYuan1986 opened this issue · 6 comments

Is there an existing issue for this?

  • I have searched the existing issues

Environment

- Milvus version: 95ada1b
- Deployment mode(standalone or cluster): cluster
- MQ type(rocksmq, pulsar or kafka):     kafka
- SDK version(e.g. pymilvus v2.0.0rc2): 2.3.3.post1.dev8
- OS(Ubuntu or CentOS): 
- CPU/Memory: 
- GPU: 
- Others:

Current Behavior

Range search iterator with radius only will fail reporting range_filter < radius.

[2023-12-18T19:56:01.589Z] __________ TestSearchIterator.test_range_search_iterator_only_radius ___________
[2023-12-18T19:56:01.589Z] [gw3] linux -- Python 3.8.17 /usr/local/bin/python3
[2023-12-18T19:56:01.589Z] 
[2023-12-18T19:56:01.589Z] self = <test_search.TestSearchIterator object at 0x7fb15e512a30>
[2023-12-18T19:56:01.589Z] 
[2023-12-18T19:56:01.589Z]     @pytest.mark.tags(CaseLabel.L2)
[2023-12-18T19:56:01.589Z]     def test_range_search_iterator_only_radius(self):
[2023-12-18T19:56:01.589Z]         """
[2023-12-18T19:56:01.589Z]         target: test search iterator normal
[2023-12-18T19:56:01.589Z]         method: 1. search iterator
[2023-12-18T19:56:01.589Z]                 2. check the result, expect pk not repeat and meet the expr requirements
[2023-12-18T19:56:01.589Z]         expected: search successfully
[2023-12-18T19:56:01.589Z]         """
[2023-12-18T19:56:01.589Z]         # 1. initialize with data
[2023-12-18T19:56:01.589Z]         batch_size = 100
[2023-12-18T19:56:01.589Z]         collection_w = self.init_collection_general(prefix, True, is_index=False)[0]
[2023-12-18T19:56:01.589Z]         collection_w.create_index(field_name, {"metric_type": "L2"})
[2023-12-18T19:56:01.589Z]         collection_w.load()
[2023-12-18T19:56:01.589Z]         # 2. search iterator
[2023-12-18T19:56:01.589Z]         search_params = {"metric_type": "L2", "params": {"radius": 35.0}}
[2023-12-18T19:56:01.589Z] >       collection_w.search_iterator(vectors[:1], field_name, search_params, batch_size,
[2023-12-18T19:56:01.589Z]                                      check_task=CheckTasks.check_search_iterator,
[2023-12-18T19:56:01.589Z]                                      check_items={"metric_type": "L2",
[2023-12-18T19:56:01.589Z]                                                   "radius": 35.0})
[2023-12-18T19:56:01.589Z] 
[2023-12-18T19:56:01.589Z] testcases/test_search.py:9506: 
[2023-12-18T19:56:01.589Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[2023-12-18T19:56:01.589Z] utils/wrapper.py:33: in inner_wrapper
[2023-12-18T19:56:01.589Z]     res, result = func(*args, **kwargs)
[2023-12-18T19:56:01.589Z] base/collection_wrapper.py:188: in search_iterator
[2023-12-18T19:56:01.589Z]     check_result = ResponseChecker(res, func_name, check_task, check_items, check,
[2023-12-18T19:56:01.589Z] check/func_check.py:61: in run
[2023-12-18T19:56:01.589Z]     result = self.check_search_iterator(self.response, self.func_name, self.check_items)
[2023-12-18T19:56:01.589Z] check/func_check.py:366: in check_search_iterator
[2023-12-18T19:56:01.589Z]     res = search_iterator.next()
[2023-12-18T19:56:01.589Z] /usr/local/lib/python3.8/site-packages/pymilvus/orm/iterator.py:484: in next
[2023-12-18T19:56:01.589Z]     new_page = self.__try_search_fill()
[2023-12-18T19:56:01.589Z] /usr/local/lib/python3.8/site-packages/pymilvus/orm/iterator.py:502: in __try_search_fill
[2023-12-18T19:56:01.589Z]     new_page = self.__execute_next_search(next_params, next_expr, True)
[2023-12-18T19:56:01.589Z] /usr/local/lib/python3.8/site-packages/pymilvus/orm/iterator.py:521: in __execute_next_search
[2023-12-18T19:56:01.589Z]     res = self._conn.search(
[2023-12-18T19:56:01.589Z] /usr/local/lib/python3.8/site-packages/pymilvus/decorators.py:129: in handler
[2023-12-18T19:56:01.589Z]     raise e from e
[2023-12-18T19:56:01.589Z] /usr/local/lib/python3.8/site-packages/pymilvus/decorators.py:125: in handler
[2023-12-18T19:56:01.589Z]     return func(*args, **kwargs)
[2023-12-18T19:56:01.589Z] /usr/local/lib/python3.8/site-packages/pymilvus/decorators.py:164: in handler
[2023-12-18T19:56:01.589Z]     return func(self, *args, **kwargs)
[2023-12-18T19:56:01.589Z] /usr/local/lib/python3.8/site-packages/pymilvus/decorators.py:104: in handler
[2023-12-18T19:56:01.589Z]     raise e from e
[2023-12-18T19:56:01.589Z] /usr/local/lib/python3.8/site-packages/pymilvus/decorators.py:68: in handler
[2023-12-18T19:56:01.589Z]     return func(*args, **kwargs)
[2023-12-18T19:56:01.589Z] /usr/local/lib/python3.8/site-packages/pymilvus/client/grpc_handler.py:748: in search
[2023-12-18T19:56:01.589Z]     return self._execute_search(request, timeout, round_decimal=round_decimal, **kwargs)
[2023-12-18T19:56:01.589Z] /usr/local/lib/python3.8/site-packages/pymilvus/client/grpc_handler.py:709: in _execute_search
[2023-12-18T19:56:01.589Z]     raise e from e
[2023-12-18T19:56:01.589Z] /usr/local/lib/python3.8/site-packages/pymilvus/client/grpc_handler.py:702: in _execute_search
[2023-12-18T19:56:01.589Z]     check_status(response.status)
[2023-12-18T19:56:01.589Z] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
[2023-12-18T19:56:01.589Z] 
[2023-12-18T19:56:01.589Z] status = error_code: UnexpectedError
[2023-12-18T19:56:01.589Z] reason: "fail to search on QueryNode 3: worker(3) query failed: UnknownError: Assert \"ran...re/src/common/RangeSearchHelper.cpp:125\n => range_filter must be less than radius for L2/HAMMING/JACCARD"
[2023-12-18T19:56:01.589Z] code: 65535
[2023-12-18T19:56:01.589Z] 
[2023-12-18T19:56:01.589Z] 
[2023-12-18T19:56:01.589Z]     def check_status(status: Status):
[2023-12-18T19:56:01.589Z]         if status.code != 0 or status.error_code != 0:
[2023-12-18T19:56:01.589Z] >           raise MilvusException(status.code, status.reason, status.error_code)
[2023-12-18T19:56:01.589Z] E           pymilvus.exceptions.MilvusException: <MilvusException: (code=65535, message=fail to search on QueryNode 3: worker(3) query failed: UnknownError: Assert "range_filter < radius" at /go/src/github.com/milvus-io/milvus/internal/core/src/common/RangeSearchHelper.cpp:125
[2023-12-18T19:56:01.590Z] E            => range_filter must be less than radius for L2/HAMMING/JACCARD)>
[2023-12-18T19:56:01.590Z] 

Expected Behavior

pass

Steps To Reproduce

No response

Milvus Log

  1. link: https://jenkins.milvus.io:18080/blue/organizations/jenkins/Milvus%20Nightly%20CI/detail/master/591/pipeline/205
  2. log: artifacts-milvus-distributed-kafka-nightly-591-pymilvus-e2e-logs.tar.gz
  3. collection name: search_collection_KDtq5PRY
  4. failed time: [2023-12-18T19:55:16.842Z] [gw3] [ 99%] FAILED testcases/test_search.py::TestSearchIterator::test_range_search_iterator_only_radius

Anything else?

No response

/unassign