Browse Source
mount: outsideContainerClusterMode proxy through filer
mount: outsideContainerClusterMode proxy through filer
Running mount outside of the cluster would not need to expose all the volume servers to outside of the cluster. The chunk read and write will go through the filer.pull/1759/head
Chris Lu
4 years ago
17 changed files with 28 additions and 131 deletions
-
1weed/command/mount_std.go
-
6weed/filer/reader_at.go
-
5weed/filesys/dir.go
-
5weed/filesys/file.go
-
6weed/filesys/filehandle.go
-
13weed/filesys/wfs.go
-
84weed/filesys/wfs_deletion.go
-
7weed/filesys/wfs_filer_client.go
-
5weed/filesys/wfs_write.go
-
4weed/messaging/broker/broker_append.go
-
3weed/operation/delete_content.go
-
1weed/pb/filer_pb/filer_client.go
-
3weed/replication/sink/filersink/fetch_write.go
-
4weed/replication/source/filer_source.go
-
3weed/s3api/s3api_handlers.go
-
5weed/server/webdav_server.go
-
4weed/shell/commands.go
@ -1,84 +0,0 @@ |
|||
package filesys |
|||
|
|||
import ( |
|||
"context" |
|||
|
|||
"google.golang.org/grpc" |
|||
|
|||
"github.com/chrislusf/seaweedfs/weed/filer" |
|||
"github.com/chrislusf/seaweedfs/weed/glog" |
|||
"github.com/chrislusf/seaweedfs/weed/operation" |
|||
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb" |
|||
) |
|||
|
|||
func (wfs *WFS) deleteFileChunks(chunks []*filer_pb.FileChunk) { |
|||
if len(chunks) == 0 { |
|||
return |
|||
} |
|||
|
|||
var fileIds []string |
|||
for _, chunk := range chunks { |
|||
if !chunk.IsChunkManifest { |
|||
fileIds = append(fileIds, chunk.GetFileIdString()) |
|||
continue |
|||
} |
|||
dataChunks, manifestResolveErr := filer.ResolveOneChunkManifest(filer.LookupFn(wfs), chunk) |
|||
if manifestResolveErr != nil { |
|||
glog.V(0).Infof("failed to resolve manifest %s: %v", chunk.FileId, manifestResolveErr) |
|||
} |
|||
for _, dChunk := range dataChunks { |
|||
fileIds = append(fileIds, dChunk.GetFileIdString()) |
|||
} |
|||
fileIds = append(fileIds, chunk.GetFileIdString()) |
|||
} |
|||
|
|||
wfs.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error { |
|||
wfs.deleteFileIds(wfs.option.GrpcDialOption, client, fileIds) |
|||
return nil |
|||
}) |
|||
} |
|||
|
|||
func (wfs *WFS) deleteFileIds(grpcDialOption grpc.DialOption, client filer_pb.SeaweedFilerClient, fileIds []string) error { |
|||
|
|||
var vids []string |
|||
for _, fileId := range fileIds { |
|||
vids = append(vids, filer.VolumeId(fileId)) |
|||
} |
|||
|
|||
lookupFunc := func(vids []string) (map[string]operation.LookupResult, error) { |
|||
|
|||
m := make(map[string]operation.LookupResult) |
|||
|
|||
glog.V(4).Infof("deleteFileIds lookup volume id locations: %v", vids) |
|||
resp, err := client.LookupVolume(context.Background(), &filer_pb.LookupVolumeRequest{ |
|||
VolumeIds: vids, |
|||
}) |
|||
if err != nil { |
|||
return m, err |
|||
} |
|||
|
|||
for _, vid := range vids { |
|||
lr := operation.LookupResult{ |
|||
VolumeId: vid, |
|||
Locations: nil, |
|||
} |
|||
locations, found := resp.LocationsMap[vid] |
|||
if !found { |
|||
continue |
|||
} |
|||
for _, loc := range locations.Locations { |
|||
lr.Locations = append(lr.Locations, operation.Location{ |
|||
Url: wfs.AdjustedUrl(loc), |
|||
PublicUrl: loc.PublicUrl, |
|||
}) |
|||
} |
|||
m[vid] = lr |
|||
} |
|||
|
|||
return m, err |
|||
} |
|||
|
|||
_, err := operation.DeleteFilesWithLookupVolumeId(grpcDialOption, fileIds, lookupFunc) |
|||
|
|||
return err |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue