mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-11-07 20:47:46 +01:00
Add Unix Domain Socket (UDS) handler to Volume server for RDMA sidecar (sra-volume) to query needle locations without HTTP overhead. Protocol (per UDS_LOCATE_API_SPEC.md): - Request: 24 bytes (fid[16] + version[4] + flags[4]) - Response: 32 bytes (status[1] + pad[3] + volume_id[4] + offset[8] + length[8] + reserved[8]) Changes: - weed/server/volume_server_uds.go: UDS server implementation - Parses fid via needle.ParseFileIdFromString() - Looks up volume via store.GetVolume() - Queries needle offset via Volume.GetNeedle() - Returns (volumeId, offset, length) or NotFound/Error - weed/storage/volume.go: Added GetNeedle() method - Exposes nm.Get() for UDS handler - weed/command/volume.go: Added -uds.listen flag - Example: weed volume -dir=/data -uds.listen=/tmp/sra-volume.sock - UDS server starts/stops with volume lifecycle - weed/server/volume_server_uds_test.go: 8 tests - Protocol size verification - Request/response serialization - Connection and fid parsing tests Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>