diff --git a/shards/mishards/service_handler.py b/shards/mishards/service_handler.py index 28c1a31ed5..5ba801f9b5 100644 --- a/shards/mishards/service_handler.py +++ b/shards/mishards/service_handler.py @@ -29,11 +29,17 @@ class ServiceHandler(milvus_pb2_grpc.MilvusServiceServicer): def _reduce(self, source_ids, ids, source_diss, diss, k, reverse): sort_f = (lambda x, y: x >= y) if reverse else (lambda x, y: x <= y) + if len(ids) == 0: + return source_ids, source_diss + + if len(source_ids) == 0: + return ids, diss + src_last = len(source_diss) - 1 - if sort_f(source_diss[src_last], diss[0]): + if sort_f(source_diss[src_last], diss[0]) and len(source_ids) >= k: return source_ids, source_diss last = len(diss) - 1 - if sort_f(diss[last], source_diss[0]): + if sort_f(diss[last], source_diss[0]) and len(ids) >= k: return ids, diss source_diss.extend(diss)