diff --git a/weed/filer2/filechunks.go b/weed/filer2/filechunks.go index 27ff2f461..473aeb54e 100644 --- a/weed/filer2/filechunks.go +++ b/weed/filer2/filechunks.go @@ -109,7 +109,7 @@ var bufPool = sync.Pool{ }, } -func mergeIntoVisibles(visibles []*visibleInterval, chunk *filer_pb.FileChunk) (newVisibles []*visibleInterval) { +func mergeIntoVisibles(visibles, newVisibles []*visibleInterval, chunk *filer_pb.FileChunk, ) ([]*visibleInterval) { newV := newVisibleInterval( chunk.Offset, @@ -160,7 +160,7 @@ func mergeIntoVisibles(visibles []*visibleInterval, chunk *filer_pb.FileChunk) ( } } - return + return newVisibles } func nonOverlappingVisibleIntervals(chunks []*filer_pb.FileChunk) (visibles []*visibleInterval) { @@ -169,8 +169,12 @@ func nonOverlappingVisibleIntervals(chunks []*filer_pb.FileChunk) (visibles []*v return chunks[i].Mtime < chunks[j].Mtime }) + var newVislbles []*visibleInterval for _, chunk := range chunks { - visibles = mergeIntoVisibles(visibles, chunk) + newVislbles = mergeIntoVisibles(visibles, newVislbles, chunk) + t := visibles[:0] + visibles = newVislbles + newVislbles = t } logPrintf("visibles", visibles)