diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-05-10 23:25:39 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-05-10 23:25:39 -0700 |
| commit | 015dd3a147cc6f1ca0bfc02ddcd74453fc08ebf6 (patch) | |
| tree | 704ab04574378a771943da125bd5ba7b1e5687f8 | |
| parent | 20b8f2e5b4c4dc6961e22408b8e9bd72f14f3a21 (diff) | |
| download | seaweedfs-015dd3a147cc6f1ca0bfc02ddcd74453fc08ebf6.tar.xz seaweedfs-015dd3a147cc6f1ca0bfc02ddcd74453fc08ebf6.zip | |
batch file id deletion
| -rw-r--r-- | weed/filer2/filer_deletion.go | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/weed/filer2/filer_deletion.go b/weed/filer2/filer_deletion.go index e463e9e6a..a6b229771 100644 --- a/weed/filer2/filer_deletion.go +++ b/weed/filer2/filer_deletion.go @@ -34,19 +34,31 @@ func (f *Filer) loopProcessingDeletion() { lookupFunc := LookupByMasterClientFn(f.MasterClient) + DeletionBatchSize := 100000 // roughly 20 bytes cost per file id. + var deletionCount int for { deletionCount = 0 f.fileIdDeletionQueue.Consume(func(fileIds []string) { - deletionCount = len(fileIds) - deleteResults, err := operation.DeleteFilesWithLookupVolumeId(f.GrpcDialOption, fileIds, lookupFunc) - if err != nil { - glog.V(0).Infof("deleting fileIds len=%d error: %v", deletionCount, err) - } else { - glog.V(1).Infof("deleting fileIds len=%d", deletionCount) - } - if len(deleteResults) != deletionCount { - glog.V(0).Infof("delete %d fileIds actual %d", deletionCount, len(deleteResults)) + for len(fileIds) > 0 { + var toDeleteFileIds []string + if len(fileIds) > DeletionBatchSize { + toDeleteFileIds = fileIds[:DeletionBatchSize] + fileIds = fileIds[DeletionBatchSize:] + } else { + toDeleteFileIds = fileIds + fileIds = fileIds[:0] + } + deletionCount = len(toDeleteFileIds) + deleteResults, err := operation.DeleteFilesWithLookupVolumeId(f.GrpcDialOption, toDeleteFileIds, lookupFunc) + if err != nil { + glog.V(0).Infof("deleting fileIds len=%d error: %v", deletionCount, err) + } else { + glog.V(1).Infof("deleting fileIds len=%d", deletionCount) + } + if len(deleteResults) != deletionCount { + glog.V(0).Infof("delete %d fileIds actual %d", deletionCount, len(deleteResults)) + } } }) |
