Pārlūkot izejas kodu

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)
tags/v0.19.1
Hao Zhang pirms 5 mēnešiem
vecāks
revīzija
2f4d803db1
Revīzijas autora e-pasta adrese nav piesaistīta nevienam kontam
2 mainītis faili ar 13 papildinājumiem un 0 dzēšanām
  1. 3
    0
      api/apps/kb_app.py
  2. 10
    0
      rag/utils/minio_conn.py

+ 3
- 0
api/apps/kb_app.py Parādīt failu

@@ -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)

+ 10
- 0
rag/utils/minio_conn.py Parādīt failu

@@ -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}")


Notiek ielāde…
Atcelt
Saglabāt