aboutsummaryrefslogtreecommitdiff
path: root/weed/server/filer_grpc_server_rename.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/server/filer_grpc_server_rename.go')
-rw-r--r--weed/server/filer_grpc_server_rename.go11
1 files changed, 8 insertions, 3 deletions
diff --git a/weed/server/filer_grpc_server_rename.go b/weed/server/filer_grpc_server_rename.go
index 391efb793..fa86737ac 100644
--- a/weed/server/filer_grpc_server_rename.go
+++ b/weed/server/filer_grpc_server_rename.go
@@ -15,13 +15,18 @@ func (fs *FilerServer) AtomicRenameEntry(ctx context.Context, req *filer_pb.Atom
glog.V(1).Infof("AtomicRenameEntry %v", req)
+ oldParent := util.FullPath(filepath.ToSlash(req.OldDirectory))
+ newParent := util.FullPath(filepath.ToSlash(req.NewDirectory))
+
+ if err := fs.filer.CanRename(oldParent, newParent); err != nil {
+ return nil, err
+ }
+
ctx, err := fs.filer.BeginTransaction(ctx)
if err != nil {
return nil, err
}
- oldParent := util.FullPath(filepath.ToSlash(req.OldDirectory))
-
oldEntry, err := fs.filer.FindEntry(ctx, oldParent.Child(req.OldName))
if err != nil {
fs.filer.RollbackTransaction(ctx)
@@ -29,7 +34,7 @@ func (fs *FilerServer) AtomicRenameEntry(ctx context.Context, req *filer_pb.Atom
}
var events MoveEvents
- moveErr := fs.moveEntry(ctx, oldParent, oldEntry, util.FullPath(filepath.ToSlash(req.NewDirectory)), req.NewName, &events)
+ moveErr := fs.moveEntry(ctx, oldParent, oldEntry, newParent, req.NewName, &events)
if moveErr != nil {
fs.filer.RollbackTransaction(ctx)
return nil, fmt.Errorf("%s/%s move error: %v", req.OldDirectory, req.OldName, moveErr)