mirror of
https://git.mirrors.martin98.com/https://github.com/infiniflow/ragflow.git
synced 2025-07-31 22:11:59 +08:00
Fix: Handle the case of deleting empty blocks. Update the relevant message (#6643)
…gic to return the correct deletion message. Add handling for empty arrays to ensure no errors occur during the deletion operation. Update the test cases to verify the new logic. ### What problem does this PR solve? fix this bug:https://github.com/infiniflow/ragflow/issues/6607 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --------- Co-authored-by: wenju.li <wenju.li@deepctr.cn>
This commit is contained in:
parent
0d1c5fdd2f
commit
a73fbc61ff
@ -1170,6 +1170,8 @@ def rm_chunk(tenant_id, dataset_id, document_id):
|
|||||||
if chunk_number != 0:
|
if chunk_number != 0:
|
||||||
DocumentService.decrement_chunk_num(document_id, dataset_id, 1, chunk_number, 0)
|
DocumentService.decrement_chunk_num(document_id, dataset_id, 1, chunk_number, 0)
|
||||||
if "chunk_ids" in req and chunk_number != len(unique_chunk_ids):
|
if "chunk_ids" in req and chunk_number != len(unique_chunk_ids):
|
||||||
|
if len(unique_chunk_ids) == 0:
|
||||||
|
return get_result(message=f"deleted {chunk_number} chunks")
|
||||||
return get_error_data_result(message=f"rm_chunk deleted chunks {chunk_number}, expect {len(unique_chunk_ids)}")
|
return get_error_data_result(message=f"rm_chunk deleted chunks {chunk_number}, expect {len(unique_chunk_ids)}")
|
||||||
if duplicate_messages:
|
if duplicate_messages:
|
||||||
return get_result(message=f"Partially deleted {chunk_number} chunks with {len(duplicate_messages)} errors", data={"success_count": chunk_number, "errors": duplicate_messages},)
|
return get_result(message=f"Partially deleted {chunk_number} chunks with {len(duplicate_messages)} errors", data={"success_count": chunk_number, "errors": duplicate_messages},)
|
||||||
|
@ -413,6 +413,9 @@ class ESConnection(DocStoreConnection):
|
|||||||
chunk_ids = condition["id"]
|
chunk_ids = condition["id"]
|
||||||
if not isinstance(chunk_ids, list):
|
if not isinstance(chunk_ids, list):
|
||||||
chunk_ids = [chunk_ids]
|
chunk_ids = [chunk_ids]
|
||||||
|
if not chunk_ids: # when chunk_ids is empty, delete all
|
||||||
|
qry = Q("match_all")
|
||||||
|
else:
|
||||||
qry = Q("ids", values=chunk_ids)
|
qry = Q("ids", values=chunk_ids)
|
||||||
else:
|
else:
|
||||||
qry = Q("bool")
|
qry = Q("bool")
|
||||||
|
@ -168,7 +168,8 @@ class TestChunksDeletion:
|
|||||||
),
|
),
|
||||||
(lambda r: {"chunk_ids": r[:1]}, 0, "", 4),
|
(lambda r: {"chunk_ids": r[:1]}, 0, "", 4),
|
||||||
(lambda r: {"chunk_ids": r}, 0, "", 1),
|
(lambda r: {"chunk_ids": r}, 0, "", 1),
|
||||||
pytest.param({"chunk_ids": []}, 0, "", 0, marks=pytest.mark.skip(reason="issues/6607")),
|
pytest.param({"chunk_ids": []}, 0, "deleted 5 chunks", 0)
|
||||||
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_basic_scenarios(
|
def test_basic_scenarios(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user