mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-23 14:30:46 +02:00
filer: reduce forwarded lock log noise (#11933)
Forwarding a lock to its owner filer is routine in a multi-filer setup, so the forward and acquire messages move from V(0) to V(3). The acquire message is only logged when the forwarded response holds a renew token and no application error. Transport failures still log at V(0). Co-authored-by: zouyixiong <3390062+zouyixiong@users.noreply.github.com>
This commit is contained in:
1 parent
7ff77a4f3b
commit
ee2718b14c
2 files changed
+27
-2
No files matched your search
@@ -32,7 +32,7 @@ func (fs *FilerServer) DistributedLock(ctx context.Context, req *filer_pb.LockRe
|
||||
if mErr := fs.checkMovedMarker(ctx, req.IsMoved, movedTo); mErr != nil {
|
||||
err = mErr
|
||||
} else if !req.IsMoved && movedTo != "" && movedTo != fs.option.Host {
|
||||
glog.V(0).Infof("FILER LOCK: Forwarding to correct filer - from=%s to=%s", fs.option.Host, movedTo)
|
||||
glog.V(3).Infof("FILER LOCK: Forwarding to correct filer - from=%s to=%s", fs.option.Host, movedTo)
|
||||
err = pb.WithFilerClient(false, 0, movedTo, fs.grpcDialOption, func(client filer_pb.SeaweedFilerClient) error {
|
||||
secondResp, err := client.DistributedLock(ctx, &filer_pb.LockRequest{
|
||||
Name: req.Name,
|
||||
@@ -46,7 +46,9 @@ func (fs *FilerServer) DistributedLock(ctx context.Context, req *filer_pb.LockRe
|
||||
resp.LockOwner = secondResp.LockOwner
|
||||
resp.Error = secondResp.Error
|
||||
resp.Generation = secondResp.Generation
|
||||
glog.V(0).Infof("FILER LOCK: Forwarded lock acquired - name=%s renewToken=%s", req.Name, resp.RenewToken)
|
||||
if forwardedLockAcquired(secondResp) {
|
||||
glog.V(3).Infof("FILER LOCK: Forwarded lock acquired - name=%s renewToken=%s", req.Name, resp.RenewToken)
|
||||
}
|
||||
} else {
|
||||
glog.V(0).Infof("FILER LOCK: Forward failed - name=%s err=%v", req.Name, err)
|
||||
}
|
||||
@@ -70,6 +72,10 @@ func (fs *FilerServer) DistributedLock(ctx context.Context, req *filer_pb.LockRe
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func forwardedLockAcquired(resp *filer_pb.LockResponse) bool {
|
||||
return resp != nil && resp.Error == "" && resp.RenewToken != ""
|
||||
}
|
||||
|
||||
// Unlock is a grpc handler to handle FilerServer's UnlockRequest
|
||||
func (fs *FilerServer) DistributedUnlock(ctx context.Context, req *filer_pb.UnlockRequest) (resp *filer_pb.UnlockResponse, err error) {
|
||||
|
||||
|
||||
@@ -34,3 +34,22 @@ func TestFindLockOwnerExpiredLockReturnsNotFound(t *testing.T) {
|
||||
require.True(t, ok)
|
||||
require.Equal(t, codes.NotFound, st.Code())
|
||||
}
|
||||
|
||||
func TestForwardedLockAcquired(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
resp *filer_pb.LockResponse
|
||||
want bool
|
||||
}{
|
||||
{name: "nil response"},
|
||||
{name: "empty token", resp: &filer_pb.LockResponse{}},
|
||||
{name: "application error", resp: &filer_pb.LockResponse{RenewToken: "token", Error: "lock already owned"}},
|
||||
{name: "acquired", resp: &filer_pb.LockResponse{RenewToken: "token"}, want: true},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
require.Equal(t, tt.want, forwardedLockAcquired(tt.resp))
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user