From e5ad2223a1545354b3b658b799aff7abda3a585b Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Wed, 21 Nov 2018 16:25:13 -0800 Subject: [PATCH] add missing intervals fix https://github.com/chrislusf/seaweedfs/issues/774 --- weed/filer2/filechunks.go | 3 ++- weed/filer2/filechunks_test.go | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/weed/filer2/filechunks.go b/weed/filer2/filechunks.go index 538d10afa..3d540cc84 100644 --- a/weed/filer2/filechunks.go +++ b/weed/filer2/filechunks.go @@ -127,6 +127,7 @@ func mergeIntoVisibles(visibles, newVisibles []*visibleInterval, chunk *filer_pb return append(visibles, newV) } + logPrintf(" before", visibles) for _, v := range visibles { if v.start < chunk.Offset && chunk.Offset < v.stop { newVisibles = append(newVisibles, newVisibleInterval( @@ -145,7 +146,7 @@ func mergeIntoVisibles(visibles, newVisibles []*visibleInterval, chunk *filer_pb v.modifiedTime, )) } - if chunkStop < v.start || v.stop <= chunk.Offset { + if chunkStop <= v.start || v.stop <= chunk.Offset { newVisibles = append(newVisibles, v) } } diff --git a/weed/filer2/filechunks_test.go b/weed/filer2/filechunks_test.go index 12e495f32..eadf4d27f 100644 --- a/weed/filer2/filechunks_test.go +++ b/weed/filer2/filechunks_test.go @@ -166,6 +166,23 @@ func TestIntervalMerging(t *testing.T) { {start: 11534336, stop: 14376529, fileId: "7,0299ad723803"}, }, }, + // case 8: real bug + { + Chunks: []*filer_pb.FileChunk{ + {Offset: 0, Size: 77824, FileId: "4,0b3df938e301", Mtime: 123}, + {Offset: 471040, Size: 472225-471040, FileId: "6,0b3e0650019c", Mtime: 130}, + {Offset: 77824, Size: 208896-77824, FileId: "4,0b3f0c7202f0", Mtime: 140}, + {Offset: 208896, Size: 339968-208896, FileId: "2,0b4031a72689", Mtime: 150}, + {Offset: 339968, Size: 471040-339968, FileId: "3,0b416a557362", Mtime: 160}, + }, + Expected: []*visibleInterval{ + {start: 0, stop: 77824, fileId: "4,0b3df938e301"}, + {start: 77824, stop: 208896, fileId: "4,0b3f0c7202f0"}, + {start: 208896, stop: 339968, fileId: "2,0b4031a72689"}, + {start: 339968, stop: 471040, fileId: "3,0b416a557362"}, + {start: 471040, stop: 472225, fileId: "6,0b3e0650019c"}, + }, + }, } for i, testcase := range testcases {