diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2021-03-11 11:01:44 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-11 11:01:44 -0800 |
| commit | d084334ffdd7bfbd43152d91d1d0ab900251a0ba (patch) | |
| tree | f33fd5dd8080cf6480263f6997c521bcb3035172 | |
| parent | 0e35836cc160676d2be861c000da8f395f2cb0fa (diff) | |
| parent | bb3af2d70b73a02e79e47ba13ba6178d7fe3b562 (diff) | |
| download | seaweedfs-d084334ffdd7bfbd43152d91d1d0ab900251a0ba.tar.xz seaweedfs-d084334ffdd7bfbd43152d91d1d0ab900251a0ba.zip | |
Merge pull request #1883 from kmlebedev/passDelNonEmptyFolder
s3 delete-objects pass OK for fail to delete non-empty folder
| -rw-r--r-- | weed/filer/filer_delete_entry.go | 6 | ||||
| -rw-r--r-- | weed/s3api/s3api_object_handlers.go | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/weed/filer/filer_delete_entry.go b/weed/filer/filer_delete_entry.go index 50a669f40..bedf2f4d1 100644 --- a/weed/filer/filer_delete_entry.go +++ b/weed/filer/filer_delete_entry.go @@ -11,6 +11,10 @@ import ( type HardLinkId []byte +const ( + MsgFailDelNonEmptyFolder = "fail to delete non-empty folder" +) + func (f *Filer) DeleteEntryMetaAndData(ctx context.Context, p util.FullPath, isRecursive, ignoreRecursiveError, shouldDeleteChunks, isFromOtherCluster bool, signatures []int32) (err error) { if p == "/" { return nil @@ -77,7 +81,7 @@ func (f *Filer) doBatchDeleteFolderMetaAndData(ctx context.Context, entry *Entry if lastFileName == "" && !isRecursive && len(entries) > 0 { // only for first iteration in the loop glog.Errorf("deleting a folder %s has children: %+v ...", entry.FullPath, entries[0].Name()) - return nil, nil, fmt.Errorf("fail to delete non-empty folder: %s", entry.FullPath) + return nil, nil, fmt.Errorf("%s: %s", MsgFailDelNonEmptyFolder, entry.FullPath) } for _, sub := range entries { diff --git a/weed/s3api/s3api_object_handlers.go b/weed/s3api/s3api_object_handlers.go index 36e57b0c8..610daef9f 100644 --- a/weed/s3api/s3api_object_handlers.go +++ b/weed/s3api/s3api_object_handlers.go @@ -5,6 +5,7 @@ import ( "encoding/json" "encoding/xml" "fmt" + "github.com/chrislusf/seaweedfs/weed/filer" "io" "io/ioutil" "net/http" @@ -205,6 +206,8 @@ func (s3a *S3ApiServer) DeleteMultipleObjectsHandler(w http.ResponseWriter, r *h if err == nil { directoriesWithDeletion[parentDirectoryPath]++ deletedObjects = append(deletedObjects, object) + } else if strings.Contains(err.Error(), filer.MsgFailDelNonEmptyFolder) { + deletedObjects = append(deletedObjects, object) } else { delete(directoriesWithDeletion, parentDirectoryPath) deleteErrors = append(deleteErrors, DeleteError{ |
