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:
Junker der Provinzandzouyixiong authored and GitHub committed 2026-10-21 20:46:23 -07:00
1 parent 7ff77a4f3b
commit ee2718b14c
2 files changed
+27 -2

No files matched your search

+8 -2
View File
@@ -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) {
+19
View File
@@ -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))
})
}
}