diff options
| author | chrislu <chris.lu@gmail.com> | 2024-01-29 22:46:23 -0800 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2024-01-29 22:46:23 -0800 |
| commit | ac50d8a8226bcdef78220003d3cade708ce1eb1e (patch) | |
| tree | 45dcab7750ae04db365c4e798b7d29c412cdeafe /weed/server/filer_grpc_server_dlm.go | |
| parent | 0b2e5ddc7ca6e9a75c50fd2c1c2eebd899af3fc4 (diff) | |
| download | seaweedfs-ac50d8a8226bcdef78220003d3cade708ce1eb1e.tar.xz seaweedfs-ac50d8a8226bcdef78220003d3cade708ce1eb1e.zip | |
re-lock if the lock owner is not found
Diffstat (limited to 'weed/server/filer_grpc_server_dlm.go')
| -rw-r--r-- | weed/server/filer_grpc_server_dlm.go | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/weed/server/filer_grpc_server_dlm.go b/weed/server/filer_grpc_server_dlm.go index 0d7c801f5..a7cef4032 100644 --- a/weed/server/filer_grpc_server_dlm.go +++ b/weed/server/filer_grpc_server_dlm.go @@ -3,6 +3,7 @@ package weed_server import ( "context" "fmt" + "github.com/seaweedfs/seaweedfs/weed/cluster/lock_manager" "github.com/seaweedfs/seaweedfs/weed/glog" "github.com/seaweedfs/seaweedfs/weed/pb" "github.com/seaweedfs/seaweedfs/weed/pb/filer_pb" @@ -81,13 +82,7 @@ func (fs *FilerServer) DistributedUnlock(ctx context.Context, req *filer_pb.Unlo func (fs *FilerServer) FindLockOwner(ctx context.Context, req *filer_pb.FindLockOwnerRequest) (*filer_pb.FindLockOwnerResponse, error) { owner, movedTo, err := fs.filer.Dlm.FindLockOwner(req.Name) - if owner == "" { - glog.V(0).Infof("find lock %s moved to %v: %v", req.Name, movedTo, err) - } - if err != nil { - return nil, status.Error(codes.Internal, err.Error()) - } - if !req.IsMoved && movedTo != "" { + if !req.IsMoved && movedTo != "" && err == lock_manager.LockNotFound { err = pb.WithFilerClient(false, 0, movedTo, fs.grpcDialOption, func(client filer_pb.SeaweedFilerClient) error { secondResp, err := client.FindLockOwner(context.Background(), &filer_pb.FindLockOwnerRequest{ Name: req.Name, @@ -103,6 +98,15 @@ func (fs *FilerServer) FindLockOwner(ctx context.Context, req *filer_pb.FindLock return nil, err } } + + if owner == "" { + glog.V(0).Infof("find lock %s moved to %v: %v", req.Name, movedTo, err) + return nil, status.Error(codes.NotFound, err.Error()) + } + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + return &filer_pb.FindLockOwnerResponse{ Owner: owner, }, nil |
