diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-08-07 14:18:53 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-08-07 14:18:53 -0700 |
| commit | 270770d7d7bc78b46813d43a0b7ef34c601c8aa3 (patch) | |
| tree | 596bf53dde2c8ecae3a4ce5963ec440c99b3066f /weed/server | |
| parent | 679f800caafff8b31c645755d4316da543f5e99d (diff) | |
| download | seaweedfs-270770d7d7bc78b46813d43a0b7ef34c601c8aa3.tar.xz seaweedfs-270770d7d7bc78b46813d43a0b7ef34c601c8aa3.zip | |
refactor
Diffstat (limited to 'weed/server')
| -rw-r--r-- | weed/server/volume_grpc_read_write.go | 38 | ||||
| -rw-r--r-- | weed/server/volume_grpc_remote.go | 49 |
2 files changed, 49 insertions, 38 deletions
diff --git a/weed/server/volume_grpc_read_write.go b/weed/server/volume_grpc_read_write.go index 42941250d..607fd3926 100644 --- a/weed/server/volume_grpc_read_write.go +++ b/weed/server/volume_grpc_read_write.go @@ -38,41 +38,3 @@ func (vs *VolumeServer) WriteNeedleBlob(ctx context.Context, req *volume_server_ return resp, nil } - -func (vs *VolumeServer) FetchAndWriteNeedle(ctx context.Context, req *volume_server_pb.FetchAndWriteNeedleRequest) (resp *volume_server_pb.FetchAndWriteNeedleResponse, err error) { - resp = &volume_server_pb.FetchAndWriteNeedleResponse{} - v := vs.store.GetVolume(needle.VolumeId(req.VolumeId)) - if v == nil { - return nil, fmt.Errorf("not found volume id %d", req.VolumeId) - } - - remoteConf := &filer_pb.RemoteConf{ - Type: req.RemoteType, - Name: req.RemoteName, - S3AccessKey: req.S3AccessKey, - S3SecretKey: req.S3SecretKey, - S3Region: req.S3Region, - S3Endpoint: req.S3Endpoint, - } - - client, getClientErr := remote_storage.GetRemoteStorage(remoteConf) - if getClientErr != nil { - return nil, fmt.Errorf("get remote client: %v", getClientErr) - } - - remoteStorageLocation := &filer_pb.RemoteStorageLocation{ - Name: req.RemoteName, - Bucket: req.RemoteBucket, - Path: req.RemoteKey, - } - data, ReadRemoteErr := client.ReadFile(remoteStorageLocation, req.Offset, req.Size) - if ReadRemoteErr != nil { - return nil, fmt.Errorf("read from remote %+v: %v", remoteStorageLocation, ReadRemoteErr) - } - - if err = v.WriteNeedleBlob(types.NeedleId(req.NeedleId), data, types.Size(req.Size)); err != nil { - return nil, fmt.Errorf("write blob needle %d size %d: %v", req.NeedleId, req.Size, err) - } - - return resp, nil -} diff --git a/weed/server/volume_grpc_remote.go b/weed/server/volume_grpc_remote.go new file mode 100644 index 000000000..0b6cd465b --- /dev/null +++ b/weed/server/volume_grpc_remote.go @@ -0,0 +1,49 @@ +package weed_server + +import ( + "context" + "fmt" + "github.com/chrislusf/seaweedfs/weed/pb/filer_pb" + "github.com/chrislusf/seaweedfs/weed/pb/volume_server_pb" + "github.com/chrislusf/seaweedfs/weed/remote_storage" + "github.com/chrislusf/seaweedfs/weed/storage/needle" + "github.com/chrislusf/seaweedfs/weed/storage/types" +) + +func (vs *VolumeServer) FetchAndWriteNeedle(ctx context.Context, req *volume_server_pb.FetchAndWriteNeedleRequest) (resp *volume_server_pb.FetchAndWriteNeedleResponse, err error) { + resp = &volume_server_pb.FetchAndWriteNeedleResponse{} + v := vs.store.GetVolume(needle.VolumeId(req.VolumeId)) + if v == nil { + return nil, fmt.Errorf("not found volume id %d", req.VolumeId) + } + + remoteConf := &filer_pb.RemoteConf{ + Type: req.RemoteType, + Name: req.RemoteName, + S3AccessKey: req.S3AccessKey, + S3SecretKey: req.S3SecretKey, + S3Region: req.S3Region, + S3Endpoint: req.S3Endpoint, + } + + client, getClientErr := remote_storage.GetRemoteStorage(remoteConf) + if getClientErr != nil { + return nil, fmt.Errorf("get remote client: %v", getClientErr) + } + + remoteStorageLocation := &filer_pb.RemoteStorageLocation{ + Name: req.RemoteName, + Bucket: req.RemoteBucket, + Path: req.RemoteKey, + } + data, ReadRemoteErr := client.ReadFile(remoteStorageLocation, req.Offset, req.Size) + if ReadRemoteErr != nil { + return nil, fmt.Errorf("read from remote %+v: %v", remoteStorageLocation, ReadRemoteErr) + } + + if err = v.WriteNeedleBlob(types.NeedleId(req.NeedleId), data, types.Size(req.Size)); err != nil { + return nil, fmt.Errorf("write blob needle %d size %d: %v", req.NeedleId, req.Size, err) + } + + return resp, nil +} |
