aboutsummaryrefslogtreecommitdiff
path: root/weed/storage/volume_read.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/storage/volume_read.go')
-rw-r--r--weed/storage/volume_read.go12
1 files changed, 2 insertions, 10 deletions
diff --git a/weed/storage/volume_read.go b/weed/storage/volume_read.go
index 626704fe1..9a209ced5 100644
--- a/weed/storage/volume_read.go
+++ b/weed/storage/volume_read.go
@@ -165,16 +165,8 @@ func (v *Volume) readNeedleDataInto(n *needle.Needle, readOption *ReadOption, wr
toWrite := min(count, int(offset+size-x))
if toWrite > 0 {
crc = crc.Update(buf[0:toWrite])
- // the crc.Value() function is to be deprecated. this double checking is for backward compatibility
- // with seaweed version using crc.Value() instead of uint32(crc), which appears in commit 056c480eb
- // and switch appeared in version 3.09.
- if offset == 0 && size == int64(n.DataSize) && int64(count) == size && (n.Checksum != crc && uint32(n.Checksum) != crc.Value()) {
- // This check works only if the buffer is big enough to hold the whole needle data
- // and we ask for all needle data.
- // Otherwise we cannot check the validity of partially aquired data.
- stats.VolumeServerHandlerCounter.WithLabelValues(stats.ErrorCRC).Inc()
- return fmt.Errorf("ReadNeedleData checksum %v expected %v for Needle: %v,%v", crc, n.Checksum, v.Id, n)
- }
+ // Note: CRC validation happens after the loop completes (see below)
+ // to avoid performance overhead in the hot read path
if _, err = writer.Write(buf[0:toWrite]); err != nil {
return fmt.Errorf("ReadNeedleData write: %w", err)
}