mirror of
				https://github.com/infiniflow/ragflow.git
				synced 2025-11-04 03:39:41 +00: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:
 | 
			
		||||
        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 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)}")
 | 
			
		||||
    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},)
 | 
			
		||||
 | 
			
		||||
@ -413,7 +413,10 @@ class ESConnection(DocStoreConnection):
 | 
			
		||||
            chunk_ids = condition["id"]
 | 
			
		||||
            if not isinstance(chunk_ids, list):
 | 
			
		||||
                chunk_ids = [chunk_ids]
 | 
			
		||||
            qry = Q("ids", values=chunk_ids)
 | 
			
		||||
            if not chunk_ids:  # when chunk_ids is empty, delete all
 | 
			
		||||
                qry = Q("match_all")
 | 
			
		||||
            else:
 | 
			
		||||
                qry = Q("ids", values=chunk_ids)
 | 
			
		||||
        else:
 | 
			
		||||
            qry = Q("bool")
 | 
			
		||||
            for k, v in condition.items():
 | 
			
		||||
 | 
			
		||||
@ -168,7 +168,8 @@ class TestChunksDeletion:
 | 
			
		||||
            ),
 | 
			
		||||
            (lambda r: {"chunk_ids": r[:1]}, 0, "", 4),
 | 
			
		||||
            (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(
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user