Clean up tsi bloom filter invalidation.

pull/8796/head
Ben Johnson 2017-08-30 14:56:30 -06:00 committed by Jason Wilder
parent 6af936ee61
commit 3c2487b97a
1 changed files with 11 additions and 17 deletions

View File

@ -727,6 +727,7 @@ func (fs *FileSet) FilterNamesTags(names [][]byte, tagsSlice []models.Tags) ([][
} }
} }
println("dbg/NEW", len(newNames))
return newNames, newTagsSlice return newNames, newTagsSlice
} }
@ -941,27 +942,23 @@ func (fs *FileSet) buildFilters() error {
return nil return nil
} }
// Build filters for each level where the filter is non-existent. // Move past log files (level=0).
files := fs.files files := fs.files
for len(files) > 0 && files[0].Level() == 0 {
files = files[1:]
}
// Build filters for each level where the filter is non-existent.
for level := range fs.levels { for level := range fs.levels {
// Clear filter if level doesn't exist. // Clear filter if no files remain or next file is at a higher level.
if level == 0 || len(files) == 0 || files[0].Level() > level { if len(files) == 0 || files[0].Level() > level {
fs.filters[level] = nil fs.filters[level] = nil
for len(files) > 0 {
if files[0].Level() > level {
break
}
files = files[1:]
}
continue continue
} }
// Skip files at this level if filter already exists. // Skip files at this level if filter already exists.
if fs.filters[level] != nil { if fs.filters[level] != nil {
for len(files) > 0 { for len(files) > 0 && files[0].Level() == level {
if files[0].Level() > level {
break
}
files = files[1:] files = files[1:]
} }
continue continue
@ -969,10 +966,7 @@ func (fs *FileSet) buildFilters() error {
// Build new filter from files at this level. // Build new filter from files at this level.
fs.filters[level] = bloom.NewFilter(fs.levels[level].M, fs.levels[level].K) fs.filters[level] = bloom.NewFilter(fs.levels[level].M, fs.levels[level].K)
for len(files) > 0 { for len(files) > 0 && files[0].Level() == level {
if files[0].Level() != level {
break
}
if err := fs.filters[level].Merge(files[0].Filter()); err != nil { if err := fs.filters[level].Merge(files[0].Filter()); err != nil {
return err return err
} }