aboutsummaryrefslogtreecommitdiff
path: root/weed/filesys/wfs_deletion.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/filesys/wfs_deletion.go')
-rw-r--r--weed/filesys/wfs_deletion.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/weed/filesys/wfs_deletion.go b/weed/filesys/wfs_deletion.go
new file mode 100644
index 000000000..c2fcb4f7a
--- /dev/null
+++ b/weed/filesys/wfs_deletion.go
@@ -0,0 +1,46 @@
+package filesys
+
+import (
+ "context"
+ "time"
+
+ "github.com/chrislusf/seaweedfs/weed/glog"
+ "github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
+)
+
+func (wfs *WFS) loopProcessingDeletion() {
+
+ ticker := time.NewTicker(2 * time.Second)
+
+ wfs.withFilerClient(func(client filer_pb.SeaweedFilerClient) error {
+ var fileIds []string
+ for {
+ select {
+ case fids := <-wfs.fileIdsDeletionChan:
+ fileIds = append(fileIds, fids...)
+ if len(fileIds) >= 256 {
+ glog.V(1).Infof("deleting fileIds len=%d", len(fileIds))
+ deleteFileIds(context.Background(), client, fileIds)
+ fileIds = fileIds[:0]
+ }
+ case <-ticker.C:
+ if len(fileIds) > 0 {
+ glog.V(1).Infof("timed deletion fileIds len=%d", len(fileIds))
+ deleteFileIds(context.Background(), client, fileIds)
+ fileIds = fileIds[:0]
+ }
+ }
+ }
+ })
+
+}
+
+func (wfs *WFS) asyncDeleteFileChunks(chunks []*filer_pb.FileChunk) {
+ if len(chunks) > 0 {
+ var fileIds []string
+ for _, chunk := range chunks {
+ fileIds = append(fileIds, chunk.FileId)
+ }
+ wfs.fileIdsDeletionChan <- fileIds
+ }
+}