seaweedfs/weed/filesys/wfs_deletion.go

74 lines
1.7 KiB
Go
Raw Normal View History

2019-01-01 18:33:57 +08:00
package filesys
import (
"context"
2019-06-21 12:57:17 +08:00
"google.golang.org/grpc"
2019-06-21 12:57:17 +08:00
"github.com/chrislusf/seaweedfs/weed/filer2"
"github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/operation"
2019-01-01 18:33:57 +08:00
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
)
func (wfs *WFS) deleteFileChunks(chunks []*filer_pb.FileChunk) {
2019-01-06 14:51:50 +08:00
if len(chunks) == 0 {
return
}
var fileIds []string
for _, chunk := range chunks {
2019-06-23 11:04:56 +08:00
fileIds = append(fileIds, chunk.GetFileIdString())
2019-01-06 14:51:50 +08:00
}
wfs.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error {
wfs.deleteFileIds(wfs.option.GrpcDialOption, client, fileIds)
2019-01-06 14:51:50 +08:00
return nil
})
2019-01-01 18:33:57 +08:00
}
2019-06-21 12:57:17 +08:00
func (wfs *WFS) deleteFileIds(grpcDialOption grpc.DialOption, client filer_pb.SeaweedFilerClient, fileIds []string) error {
2019-06-21 12:57:17 +08:00
var vids []string
for _, fileId := range fileIds {
vids = append(vids, filer2.VolumeId(fileId))
}
lookupFunc := func(vids []string) (map[string]operation.LookupResult, error) {
m := make(map[string]operation.LookupResult)
glog.V(4).Infof("remove file lookup volume id locations: %v", vids)
resp, err := client.LookupVolume(context.Background(), &filer_pb.LookupVolumeRequest{
2019-06-21 12:57:17 +08:00
VolumeIds: vids,
})
if err != nil {
return m, err
}
for _, vid := range vids {
lr := operation.LookupResult{
VolumeId: vid,
Locations: nil,
}
2020-01-20 04:07:26 +08:00
locations, found := resp.LocationsMap[vid]
if !found {
continue
}
2019-06-21 12:57:17 +08:00
for _, loc := range locations.Locations {
lr.Locations = append(lr.Locations, operation.Location{
Url: wfs.AdjustedUrl(loc.Url),
2019-06-21 12:57:17 +08:00
PublicUrl: loc.PublicUrl,
})
}
m[vid] = lr
}
return m, err
}
_, err := operation.DeleteFilesWithLookupVolumeId(grpcDialOption, fileIds, lookupFunc)
return err
}