Files
seaweedfs/weed/server/filer_grpc_server_dlm_test.go
T
Junker der Provinzandzouyixiong ee2718b14c 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>
2026-10-21 20:46:23 -07:00

56 lines
1.5 KiB
Go

package weed_server
import (
"context"
"testing"
"time"
"github.com/seaweedfs/seaweedfs/weed/cluster/lock_manager"
"github.com/seaweedfs/seaweedfs/weed/filer"
"github.com/seaweedfs/seaweedfs/weed/pb"
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
"github.com/stretchr/testify/require"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
func TestFindLockOwnerExpiredLockReturnsNotFound(t *testing.T) {
fs := &FilerServer{
option: &FilerOption{Host: "filer1:8888"},
filer: &filer.Filer{
Dlm: lock_manager.NewDistributedLockManager("filer1:8888"),
},
}
fs.filer.Dlm.LockRing.SetSnapshot([]pb.ServerAddress{"filer1:8888"}, 0)
fs.filer.Dlm.InsertLock("expired-lock", time.Now().Add(-time.Second).UnixNano(), "token1", "owner1", 5, 2)
resp, err := fs.FindLockOwner(context.Background(), &filer_pb.FindLockOwnerRequest{
Name: "expired-lock",
})
require.Nil(t, resp)
require.Error(t, err)
st, ok := status.FromError(err)
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))
})
}
}