aboutsummaryrefslogtreecommitdiff
path: root/weed/filer/filechunk_section.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/filer/filechunk_section.go')
-rw-r--r--weed/filer/filechunk_section.go15
1 files changed, 11 insertions, 4 deletions
diff --git a/weed/filer/filechunk_section.go b/weed/filer/filechunk_section.go
index 60c919569..5804c7160 100644
--- a/weed/filer/filechunk_section.go
+++ b/weed/filer/filechunk_section.go
@@ -32,10 +32,17 @@ func (section *FileChunkSection) addChunk(chunk *filer_pb.FileChunk) error {
if section.visibleIntervals != nil {
MergeIntoVisibles(section.visibleIntervals, start, stop, chunk)
- }
-
- if section.visibleIntervals != nil {
- section.chunks, _ = SeparateGarbageChunks(section.visibleIntervals, section.chunks)
+ garbageFileIds := FindGarbageChunks(section.visibleIntervals, start, stop)
+ for _, garbageFileId := range garbageFileIds {
+ length := len(section.chunks)
+ for i, t := range section.chunks {
+ if t.FileId == garbageFileId {
+ section.chunks[i] = section.chunks[length-1]
+ section.chunks = section.chunks[:length-1]
+ break
+ }
+ }
+ }
}
if section.chunkViews != nil {