pingqiu and Claude Opus 4.5
e064c86d12
feat(volume): add UDS handler for RDMA sidecar integration
...
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 >
2026-02-08 01:11:40 -08:00