提交 5bd75f93 编写于 作者: B BossZou 提交者: JinHai-CN

Web fix 2690 (#2691)

* Remove body parser in show partitions endpoints (fix #2690)
Signed-off-by: Nyhz <413554850@qq.com>

* Remove surplus output and comments
Signed-off-by: Nyhz <413554850@qq.com>

* Remove surplus output and comments
Signed-off-by: Nyhz <413554850@qq.com>

* Remove space line
Signed-off-by: Nyhz <413554850@qq.com>

* Remove surplus ut
Signed-off-by: Nyhz <413554850@qq.com>

* laten sleep time in case test_delete_vector_collection_count_no_flush
Signed-off-by: Nyhz <413554850@qq.com>
上级 6996e215
......@@ -14,6 +14,7 @@ Please mark all change in change log and use the issue from GitHub
- \#2637 Suit the range of HNSW parameters
- \#2642 Create index failed and server crashed
- \#2649 Search parameter of annoy has conflict with document
- \#2690 Remove body parser in show-partitions endpoints
- \#2692 Milvus hangs during multi-thread concurrent search
## Feature
......
......@@ -461,7 +461,7 @@ class WebController : public oatpp::web::server::api::ApiController {
ADD_CORS(ShowPartitions)
ENDPOINT("GET", "/collections/{collection_name}/partitions", ShowPartitions, PATH(String, collection_name),
QUERIES(const QueryParams&, query_params), BODY_STRING(String, body)) {
QUERIES(const QueryParams&, query_params)) {
TimeRecorder tr(std::string(WEB_LOG_PREFIX) + "GET \'/collections/" + collection_name->std_str() +
"/partitions\'");
tr.RecordSection("Received request.");
......@@ -473,7 +473,7 @@ class WebController : public oatpp::web::server::api::ApiController {
auto handler = WebRequestHandler();
std::shared_ptr<OutgoingResponse> response;
auto status_dto = handler.ShowPartitions(collection_name, query_params, body, partition_list_dto);
auto status_dto = handler.ShowPartitions(collection_name, query_params, partition_list_dto);
switch (status_dto->code->getValue()) {
case StatusCode::SUCCESS:
response = createDtoResponse(Status::CODE_200, partition_list_dto);
......
......@@ -1315,7 +1315,7 @@ WebRequestHandler::CreatePartition(const OString& collection_name, const Partiti
}
StatusDto::ObjectWrapper
WebRequestHandler::ShowPartitions(const OString& collection_name, const OQueryParams& query_params, const OString& body,
WebRequestHandler::ShowPartitions(const OString& collection_name, const OQueryParams& query_params,
PartitionListDto::ObjectWrapper& partition_list_dto) {
int64_t offset = 0;
auto status = ParseQueryInteger(query_params, "offset", offset);
......@@ -1334,35 +1334,6 @@ WebRequestHandler::ShowPartitions(const OString& collection_name, const OQueryPa
Status(SERVER_UNEXPECTED_ERROR, "Query param 'offset' or 'page_size' should equal or bigger than 0"));
}
if (nullptr != body.get() && body->getSize() > 0) {
auto body_json = nlohmann::json::parse(body->c_str());
if (!body_json.contains("filter")) {
RETURN_STATUS_DTO(BODY_FIELD_LOSS, "Field \'filter\' is required.")
}
auto filter_json = body_json["filter"];
if (filter_json.contains("partition_tag")) {
std::string tag = filter_json["partition_tag"];
bool exists = false;
status = request_handler_.HasPartition(context_ptr_, collection_name->std_str(), tag, exists);
if (!status.ok()) {
ASSIGN_RETURN_STATUS_DTO(status)
}
auto partition_dto = PartitionFieldsDto::createShared();
if (exists) {
partition_list_dto->count = 1;
partition_dto->partition_tag = tag.c_str();
} else {
partition_list_dto->count = 0;
}
partition_list_dto->partitions = partition_list_dto->partitions->createShared();
partition_list_dto->partitions->pushBack(partition_dto);
ASSIGN_RETURN_STATUS_DTO(status)
} else {
RETURN_STATUS_DTO(BODY_FIELD_LOSS, "Unknown field.")
}
}
bool all_required = false;
auto required = query_params.get("all_required");
if (nullptr != required.get()) {
......
......@@ -192,7 +192,7 @@ class WebRequestHandler {
CreatePartition(const OString& collection_name, const PartitionRequestDto::ObjectWrapper& param);
StatusDto::ObjectWrapper
ShowPartitions(const OString& collection_name, const OQueryParams& query_params, const OString& body,
ShowPartitions(const OString& collection_name, const OQueryParams& query_params,
PartitionListDto::ObjectWrapper& partition_list_dto);
StatusDto::ObjectWrapper
......
......@@ -947,29 +947,6 @@ TEST_F(WebControllerTest, PARTITION) {
ASSERT_EQ(OStatus::CODE_404.code, response->getStatusCode());
}
TEST_F(WebControllerTest, PARTITION_FILTER) {
const OString collection_name = "test_controller_partition_" + OString(RandomName().c_str());
GenCollection(client_ptr, conncetion_ptr, collection_name, 64, 100, "L2");
nlohmann::json body_json;
body_json["filter"]["partition_tag"] = "tag_not_exists_";
auto response = client_ptr->showPartitions(collection_name, "0", "10", body_json.dump().c_str());
ASSERT_EQ(OStatus::CODE_200.code, response->getStatusCode());
auto result_dto = response->readBodyToDto<milvus::server::web::PartitionListDto>(object_mapper.get());
ASSERT_EQ(result_dto->count->getValue(), 0);
auto par_param = milvus::server::web::PartitionRequestDto::createShared();
par_param->partition_tag = "tag01";
response = client_ptr->createPartition(collection_name, par_param);
ASSERT_EQ(OStatus::CODE_201.code, response->getStatusCode());
body_json["filter"]["partition_tag"] = "tag01";
response = client_ptr->showPartitions(collection_name, "0", "10", body_json.dump().c_str());
ASSERT_EQ(OStatus::CODE_200.code, response->getStatusCode());
result_dto = response->readBodyToDto<milvus::server::web::PartitionListDto>(object_mapper.get());
ASSERT_EQ(result_dto->count->getValue(), 1);
}
TEST_F(WebControllerTest, SHOW_SEGMENTS) {
OString collection_name = OString("test_milvus_web_segments_test_") + RandomName().c_str();
......
......@@ -118,7 +118,7 @@ class TestDeleteBase:
assert status.OK()
status = connect.delete_entity_by_id(collection, ids)
assert status.OK()
time.sleep(2)
time.sleep(5)
status, res = connect.count_entities(collection)
assert status.OK()
assert res == 0
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册