bug fix for time range and topk check in search

This commit is contained in:
peng.xu 2019-10-21 14:58:39 +08:00
parent 26b3adfcc3
commit c4a5c5c69b
5 changed files with 19 additions and 3 deletions

View File

@ -7,3 +7,4 @@ DB_ERROR_CODE = 10003
TABLE_NOT_FOUND_CODE = 20001
INVALID_ARGUMENT_CODE = 20002
INVALID_DATE_RANGE_CODE = 20003
INVALID_TOPK_CODE = 20004

View File

@ -58,6 +58,12 @@ def TableNotFoundErrorHandler(err):
return resp_handler(err, status_pb2.TABLE_NOT_EXISTS)
@server.errorhandler(exceptions.InvalidTopKError)
def InvalidTopKErrorHandler(err):
logger.error(err)
return resp_handler(err, status_pb2.ILLEGAL_TOPK)
@server.errorhandler(exceptions.InvalidArgumentError)
def InvalidArgumentErrorHandler(err):
logger.error(err)

View File

@ -26,6 +26,10 @@ class TableNotFoundError(BaseException):
code = codes.TABLE_NOT_FOUND_CODE
class InvalidTopKError(BaseException):
code = codes.INVALID_TOPK_CODE
class InvalidArgumentError(BaseException):
code = codes.INVALID_ARGUMENT_CODE

View File

@ -20,6 +20,7 @@ logger = logging.getLogger(__name__)
class ServiceHandler(milvus_pb2_grpc.MilvusServiceServicer):
MAX_NPROBE = 2048
MAX_TOPK = 2048
def __init__(self, tracer, router, max_workers=multiprocessing.cpu_count(), **kwargs):
self.table_meta = {}
@ -246,6 +247,10 @@ class ServiceHandler(milvus_pb2_grpc.MilvusServiceServicer):
raise exceptions.InvalidArgumentError(
message='Invalid nprobe: {}'.format(nprobe), metadata=metadata)
if topk > self.MAX_TOPK or topk <= 0:
raise exceptions.InvalidTopKError(
message='Invalid topk: {}'.format(topk), metadata=metadata)
table_meta = self.table_meta.get(table_name, None)
if not table_meta:

View File

@ -2,12 +2,12 @@ import datetime
from mishards import exceptions
def format_date(self, start, end):
def format_date(start, end):
return ((start.year - 1900) * 10000 + (start.month - 1) * 100 + start.day,
(end.year - 1900) * 10000 + (end.month - 1) * 100 + end.day)
def range_to_date(self, range_obj, metadata=None):
def range_to_date(range_obj, metadata=None):
try:
start = datetime.datetime.strptime(range_obj.start_date, '%Y-%m-%d')
end = datetime.datetime.strptime(range_obj.end_date, '%Y-%m-%d')
@ -17,4 +17,4 @@ def range_to_date(self, range_obj, metadata=None):
range_obj.start_date, range_obj.end_date),
metadata=metadata)
return self.format_date(start, end)
return format_date(start, end)