aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-06-10 23:37:54 -0700
committerChris Lu <chris.lu@gmail.com>2021-06-10 23:37:54 -0700
commit9357911a9513dce09461b632b2ea2ba674555b9d (patch)
tree7841d7c5b64fa43ddbdea69cf2116a8e003fe9d1
parentb71c3cfba48452170919c9e321ba44be9d4443d1 (diff)
downloadseaweedfs-9357911a9513dce09461b632b2ea2ba674555b9d.tar.xz
seaweedfs-9357911a9513dce09461b632b2ea2ba674555b9d.zip
remove all bucket metadata
fix https://github.com/chrislusf/seaweedfs/issues/2118
-rw-r--r--weed/filer/abstract_sql/abstract_sql_store.go3
-rw-r--r--weed/filer/filer_delete_entry.go2
-rw-r--r--weed/filer/filerstore.go1
-rw-r--r--weed/filer/filerstore_wrapper.go8
4 files changed, 13 insertions, 1 deletions
diff --git a/weed/filer/abstract_sql/abstract_sql_store.go b/weed/filer/abstract_sql/abstract_sql_store.go
index ab8f6bcbd..bb8ced81a 100644
--- a/weed/filer/abstract_sql/abstract_sql_store.go
+++ b/weed/filer/abstract_sql/abstract_sql_store.go
@@ -32,6 +32,9 @@ type AbstractSqlStore struct {
dbsLock sync.Mutex
}
+func (store *AbstractSqlStore) CanDropWholeBucket() bool {
+ return store.SupportBucketTable
+}
func (store *AbstractSqlStore) OnBucketCreation(bucket string) {
store.dbsLock.Lock()
defer store.dbsLock.Unlock()
diff --git a/weed/filer/filer_delete_entry.go b/weed/filer/filer_delete_entry.go
index 3ef3cfff9..35187d034 100644
--- a/weed/filer/filer_delete_entry.go
+++ b/weed/filer/filer_delete_entry.go
@@ -71,7 +71,7 @@ func (f *Filer) doBatchDeleteFolderMetaAndData(ctx context.Context, entry *Entry
lastFileName := ""
includeLastFile := false
- if !isDeletingBucket {
+ if !isDeletingBucket || !f.Store.CanDropWholeBucket() {
for {
entries, _, err := f.ListDirectoryEntries(ctx, entry.FullPath, lastFileName, includeLastFile, PaginationSize, "", "", "")
if err != nil {
diff --git a/weed/filer/filerstore.go b/weed/filer/filerstore.go
index a5b2f25de..1ded11b4a 100644
--- a/weed/filer/filerstore.go
+++ b/weed/filer/filerstore.go
@@ -43,4 +43,5 @@ type FilerStore interface {
type BucketAware interface {
OnBucketCreation(bucket string)
OnBucketDeletion(bucket string)
+ IsDropBucketAltogether() bool
}
diff --git a/weed/filer/filerstore_wrapper.go b/weed/filer/filerstore_wrapper.go
index 5175a87a1..e4761f565 100644
--- a/weed/filer/filerstore_wrapper.go
+++ b/weed/filer/filerstore_wrapper.go
@@ -23,6 +23,7 @@ type VirtualFilerStore interface {
AddPathSpecificStore(path string, storeId string, store FilerStore)
OnBucketCreation(bucket string)
OnBucketDeletion(bucket string)
+ CanDropWholeBucket() bool
}
type FilerStoreWrapper struct {
@@ -42,6 +43,13 @@ func NewFilerStoreWrapper(store FilerStore) *FilerStoreWrapper {
}
}
+func (fsw *FilerStoreWrapper) CanDropWholeBucket() bool {
+ if ba, ok := fsw.defaultStore.(BucketAware); ok {
+ return ba.IsDropBucketAltogether()
+ }
+ return false
+}
+
func (fsw *FilerStoreWrapper) OnBucketCreation(bucket string) {
for _, store := range fsw.storeIdToStore {
if ba, ok := store.(BucketAware); ok {