From 513ac58504a2782d65a313e4154bbc7e8a505995 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sun, 3 Aug 2025 14:26:15 -0700 Subject: [PATCH] Filer: fix filer range read (#7078) * fix filer range read Only return true if we're reading the ENTIRE chunk from the beginning. // This prevents bandwidth amplification when range requests happen to align // with chunk boundaries but don't actually want the full chunk. * Update weed/filer/filechunks.go Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- weed/filer/filechunks.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/weed/filer/filechunks.go b/weed/filer/filechunks.go index 7252169d8..43261a970 100644 --- a/weed/filer/filechunks.go +++ b/weed/filer/filechunks.go @@ -178,7 +178,10 @@ func (cv *ChunkView) Clone() IntervalValue { } func (cv *ChunkView) IsFullChunk() bool { - return cv.ViewSize == cv.ChunkSize + // IsFullChunk returns true if the view covers the entire chunk from the beginning. + // This prevents bandwidth amplification when range requests happen to align + // with chunk boundaries but don't actually want the full chunk. + return cv.OffsetInChunk == 0 && cv.ViewSize == cv.ChunkSize } func ViewFromChunks(ctx context.Context, lookupFileIdFn wdclient.LookupFileIdFunctionType, chunks []*filer_pb.FileChunk, offset int64, size int64) (chunkViews *IntervalList[*ChunkView]) {