Files
seaweedfs/weed/server/filer_grpc_server_mount_peer.go
T
Chris LuandGitHub 7f67995c24 chore(filer): remove -mount.p2p flag; registry is always on (#9183)
The filer-side mount peer registry (tier 1 of peer chunk sharing) was
gated behind -mount.p2p (default true). Idle cost is negligible — a
tiny in-memory map plus a 60s sweeper — so the opt-out is not worth the
surface area.

Removes the flag from weed filer, weed server (-filer.mount.p2p), and
weed mini, and always constructs the registry in NewFilerServer. Also
drops the now-dead nil guards in MountRegister/MountList/sweeper and
the TestMountRegister_DisabledIsNoOp case.
2026-04-21 23:00:11 -07:00

53 lines
1.8 KiB
Go

package weed_server
import (
"context"
"time"
"github.com/seaweedfs/seaweedfs/weed/glog"
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
)
// mountPeerRegistrySweepInterval is how often the filer evicts expired mount
// registry entries. Eviction is also done lazily on List; the sweep keeps
// memory bounded on long-running filers with high churn.
const mountPeerRegistrySweepInterval = 60 * time.Second
// runMountPeerRegistrySweeper runs for the lifetime of the FilerServer.
func (fs *FilerServer) runMountPeerRegistrySweeper() {
ticker := time.NewTicker(mountPeerRegistrySweepInterval)
defer ticker.Stop()
for range ticker.C {
if evicted := fs.mountPeerRegistry.Sweep(); evicted > 0 {
glog.V(2).Infof("peer registry: evicted %d stale entries", evicted)
}
}
}
// MountRegister records (or refreshes) the caller as a live mount server in
// the filer's peer registry. Returns an empty response; the caller is
// expected to heartbeat before the TTL expires.
func (fs *FilerServer) MountRegister(ctx context.Context, req *filer_pb.MountRegisterRequest) (*filer_pb.MountRegisterResponse, error) {
ttl := time.Duration(req.TtlSeconds) * time.Second
fs.mountPeerRegistry.Register(req.PeerAddr, req.DataCenter, req.Rack, ttl)
return &filer_pb.MountRegisterResponse{}, nil
}
// MountList returns the current set of live mounts for callers building
// their HRW seed view.
func (fs *FilerServer) MountList(ctx context.Context, req *filer_pb.MountListRequest) (*filer_pb.MountListResponse, error) {
entries := fs.mountPeerRegistry.List()
resp := &filer_pb.MountListResponse{
Mounts: make([]*filer_pb.MountInfo, 0, len(entries)),
}
for _, e := range entries {
resp.Mounts = append(resp.Mounts, &filer_pb.MountInfo{
PeerAddr: e.PeerAddr,
DataCenter: e.DataCenter,
Rack: e.Rack,
LastSeenNs: e.LastSeenNs,
})
}
return resp, nil
}