From ee2718b14c208e04da04c590552d504f9515ed29 Mon Sep 17 00:00:00 2001 From: Junker der Provinz Date: Thu, 22 Oct 2026 05:46:23 +0200 Subject: [PATCH] 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> --- weed/server/filer_grpc_server_dlm.go | 10 ++++++++-- weed/server/filer_grpc_server_dlm_test.go | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/weed/server/filer_grpc_server_dlm.go b/weed/server/filer_grpc_server_dlm.go index 08427350a0..dc2864818d 100644 --- a/weed/server/filer_grpc_server_dlm.go +++ b/weed/server/filer_grpc_server_dlm.go @@ -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) { diff --git a/weed/server/filer_grpc_server_dlm_test.go b/weed/server/filer_grpc_server_dlm_test.go index 5713a9959e..7c82e9faac 100644 --- a/weed/server/filer_grpc_server_dlm_test.go +++ b/weed/server/filer_grpc_server_dlm_test.go @@ -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)) + }) + } +}