mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
filer: recursively batch delete file chunks
fix https://github.com/chrislusf/seaweedfs/issues/1197
This commit is contained in:
parent
2a6db0fd43
commit
83836f4299
|
@ -63,13 +63,13 @@ func (f *Filer) doBatchDeleteFolderMetaAndData(ctx context.Context, entry *Entry
|
||||||
var dirChunks []*filer_pb.FileChunk
|
var dirChunks []*filer_pb.FileChunk
|
||||||
if sub.IsDirectory() {
|
if sub.IsDirectory() {
|
||||||
dirChunks, err = f.doBatchDeleteFolderMetaAndData(ctx, sub, isRecursive, ignoreRecursiveError, shouldDeleteChunks)
|
dirChunks, err = f.doBatchDeleteFolderMetaAndData(ctx, sub, isRecursive, ignoreRecursiveError, shouldDeleteChunks)
|
||||||
|
chunks = append(chunks, dirChunks...)
|
||||||
|
} else {
|
||||||
|
chunks = append(chunks, sub.Chunks...)
|
||||||
}
|
}
|
||||||
if err != nil && !ignoreRecursiveError {
|
if err != nil && !ignoreRecursiveError {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if shouldDeleteChunks {
|
|
||||||
chunks = append(chunks, dirChunks...)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(entries) < PaginationSize {
|
if len(entries) < PaginationSize {
|
||||||
|
@ -79,7 +79,7 @@ func (f *Filer) doBatchDeleteFolderMetaAndData(ctx context.Context, entry *Entry
|
||||||
|
|
||||||
f.cacheDelDirectory(string(entry.FullPath))
|
f.cacheDelDirectory(string(entry.FullPath))
|
||||||
|
|
||||||
glog.V(3).Infof("deleting directory %v", entry.FullPath)
|
glog.V(3).Infof("deleting directory %v delete %d chunks: %v", entry.FullPath, len(chunks), shouldDeleteChunks)
|
||||||
|
|
||||||
if storeDeletionErr := f.store.DeleteFolderChildren(ctx, entry.FullPath); storeDeletionErr != nil {
|
if storeDeletionErr := f.store.DeleteFolderChildren(ctx, entry.FullPath); storeDeletionErr != nil {
|
||||||
return nil, fmt.Errorf("filer store delete: %v", storeDeletionErr)
|
return nil, fmt.Errorf("filer store delete: %v", storeDeletionErr)
|
||||||
|
@ -91,7 +91,7 @@ func (f *Filer) doBatchDeleteFolderMetaAndData(ctx context.Context, entry *Entry
|
||||||
|
|
||||||
func (f *Filer) doDeleteEntryMetaAndData(ctx context.Context, entry *Entry, shouldDeleteChunks bool) (err error) {
|
func (f *Filer) doDeleteEntryMetaAndData(ctx context.Context, entry *Entry, shouldDeleteChunks bool) (err error) {
|
||||||
|
|
||||||
glog.V(3).Infof("deleting entry %v", entry.FullPath)
|
glog.V(3).Infof("deleting entry %v, delete chunks: %v", entry.FullPath, shouldDeleteChunks)
|
||||||
|
|
||||||
if storeDeletionErr := f.store.DeleteEntry(ctx, entry.FullPath); storeDeletionErr != nil {
|
if storeDeletionErr := f.store.DeleteEntry(ctx, entry.FullPath); storeDeletionErr != nil {
|
||||||
return fmt.Errorf("filer store delete: %v", storeDeletionErr)
|
return fmt.Errorf("filer store delete: %v", storeDeletionErr)
|
||||||
|
|
Loading…
Reference in a new issue