aboutsummaryrefslogtreecommitdiff
path: root/weed/server/filer_grpc_server_dlm.go
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2024-01-29 22:46:23 -0800
committerchrislu <chris.lu@gmail.com>2024-01-29 22:46:23 -0800
commitac50d8a8226bcdef78220003d3cade708ce1eb1e (patch)
tree45dcab7750ae04db365c4e798b7d29c412cdeafe /weed/server/filer_grpc_server_dlm.go
parent0b2e5ddc7ca6e9a75c50fd2c1c2eebd899af3fc4 (diff)
downloadseaweedfs-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.go18
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