diff options
| author | Chris Lu <chris.lu@gmail.com> | 2019-01-01 02:33:57 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2019-01-01 02:33:57 -0800 |
| commit | 525db94d9a3826bdf1566c712f695a3c171225e7 (patch) | |
| tree | 90394eeaa5524a6a2355167db5c09e3d9deba2b8 /weed/filesys/wfs_deletion.go | |
| parent | ffb5d3f93a69d36b13bd6ee0b52aa595521774ee (diff) | |
| download | seaweedfs-525db94d9a3826bdf1566c712f695a3c171225e7.tar.xz seaweedfs-525db94d9a3826bdf1566c712f695a3c171225e7.zip | |
async file chunk deletion
Diffstat (limited to 'weed/filesys/wfs_deletion.go')
| -rw-r--r-- | weed/filesys/wfs_deletion.go | 46 |
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 + } +} |
