From 84f2004f043c406a83ba63c4adffd850ac8f5811 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Tue, 17 Mar 2026 01:41:41 -0700 Subject: [PATCH] Fix EC locate_needle: use get_actual_size for full needle size --- seaweed-volume/src/storage/erasure_coding/ec_volume.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/seaweed-volume/src/storage/erasure_coding/ec_volume.rs b/seaweed-volume/src/storage/erasure_coding/ec_volume.rs index 06b99ddba..838f1b080 100644 --- a/seaweed-volume/src/storage/erasure_coding/ec_volume.rs +++ b/seaweed-volume/src/storage/erasure_coding/ec_volume.rs @@ -318,9 +318,12 @@ impl EcVolume { } let shard_size = self.shard_file_size(); + // Pass the actual on-disk size (header+body+checksum+timestamp+padding) + // to locate_data, matching Go: types.Size(needle.GetActualSize(size, version)) + let actual = get_actual_size(size, self.version); let intervals = ec_locate::locate_data( offset.to_actual_offset(), - size, + Size(actual as i32), shard_size, self.data_shards, );