From 2f4d803db17a03d41eb79f0bad079e0002d029a5 Mon Sep 17 00:00:00 2001 From: Hao Zhang <46111074+Hank-MIA@users.noreply.github.com> Date: Sun, 25 May 2025 21:02:51 -0500 Subject: [PATCH] Delete Corresponding Minio Bucket When Deleting a Knowledge Base (#7841) ### What problem does this PR solve? Delete Corresponding Minio Bucket When Deleting a Knowledge Base [issue #4113 ](https://github.com/infiniflow/ragflow/issues/4113) ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) - [x] New Feature (non-breaking change which adds functionality) --- api/apps/kb_app.py | 3 +++ rag/utils/minio_conn.py | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/api/apps/kb_app.py b/api/apps/kb_app.py index 3267c8060..206af56c1 100644 --- a/api/apps/kb_app.py +++ b/api/apps/kb_app.py @@ -34,6 +34,7 @@ from api import settings from rag.nlp import search from api.constants import DATASET_NAME_LIMIT from rag.settings import PAGERANK_FLD +from rag.utils.storage_factory import STORAGE_IMPL @manager.route('/create', methods=['post']) # noqa: F821 @@ -226,6 +227,8 @@ def rm(): for kb in kbs: settings.docStoreConn.delete({"kb_id": kb.id}, search.index_name(kb.tenant_id), kb.id) settings.docStoreConn.deleteIdx(search.index_name(kb.tenant_id), kb.id) + if hasattr(STORAGE_IMPL, 'remove_bucket'): + STORAGE_IMPL.remove_bucket(kb.id) return get_json_result(data=True) except Exception as e: return server_error_response(e) diff --git a/rag/utils/minio_conn.py b/rag/utils/minio_conn.py index 03b90a5cf..80a723a5c 100644 --- a/rag/utils/minio_conn.py +++ b/rag/utils/minio_conn.py @@ -118,3 +118,13 @@ class RAGFlowMinio: time.sleep(1) return + def remove_bucket(self, bucket): + try: + if self.conn.bucket_exists(bucket): + objects_to_delete = self.conn.list_objects(bucket, recursive=True) + for obj in objects_to_delete: + self.conn.remove_object(bucket, obj.object_name) + self.conn.remove_bucket(bucket) + except Exception: + logging.exception(f"Fail to remove bucket {bucket}") +