use bloom filter in second pass of sync --all --content
This is needed because when preferred content matches on files, the second pass would otherwise want to drop all keys. Using a bloom filter avoids this, and in the case of a false positive, a key will be left undropped that preferred content would allow dropping. Chances of that happening are a mere 1 in 1 million.
This commit is contained in:
parent
a0a8127956
commit
adba0595bd
4 changed files with 46 additions and 21 deletions
|
@ -12,6 +12,7 @@ module Utility.Bloom (
|
|||
safeSuggestSizing,
|
||||
Hashable(..),
|
||||
cheapHashes,
|
||||
elemB,
|
||||
notElemB,
|
||||
|
||||
newMB,
|
||||
|
@ -34,6 +35,9 @@ import Control.Monad.ST (ST)
|
|||
notElemB :: a -> Bloom a -> Bool
|
||||
notElemB = Bloom.notElem
|
||||
|
||||
elemB :: a -> Bloom a -> Bool
|
||||
elemB = Bloom.elem
|
||||
|
||||
newMB :: (a -> [Bloom.Hash]) -> Int -> ST s (MBloom.MBloom s a)
|
||||
newMB = MBloom.new
|
||||
|
||||
|
@ -48,6 +52,9 @@ unsafeFreezeMB = Bloom.unsafeFreeze
|
|||
notElemB :: a -> Bloom a -> Bool
|
||||
notElemB = Bloom.notElemB
|
||||
|
||||
elemB :: a -> Bloom a -> Bool
|
||||
elemB = Bloom.elem
|
||||
|
||||
newMB :: (a -> [Bloom.Hash]) -> Int -> ST s (Bloom.MBloom s a)
|
||||
newMB = Bloom.newMB
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue