mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-08-19 05:36:58 +00:00
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.
53 lines
1.8 KiB
Go
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
|
|
}
|