diff --git a/Command/Unused.hs b/Command/Unused.hs index bf98e53bcd..c2179447d0 100644 --- a/Command/Unused.hs +++ b/Command/Unused.hs @@ -189,7 +189,12 @@ bloomBitsHashes :: Annex (Int, Int) bloomBitsHashes = do capacity <- bloomCapacity accuracy <- bloomAccuracy - return $ suggestSizing capacity (1/ fromIntegral accuracy) + case safeSuggestSizing capacity (1 / fromIntegral accuracy) of + Left e -> do + warning $ "bloomfilter " ++ e ++ "; falling back to sane value" + -- precaulculated value for 500000 (1/1000) + return (8388608,10) + Right v -> return v {- Creates a bloom filter, and runs an action, such as withKeysReferenced, - to populate it. diff --git a/Utility/Bloom.hs b/Utility/Bloom.hs index e3000de3d7..b0988a8c42 100644 --- a/Utility/Bloom.hs +++ b/Utility/Bloom.hs @@ -9,7 +9,7 @@ module Utility.Bloom ( Bloom, - suggestSizing, + safeSuggestSizing, Hashable, cheapHashes, notElemB, @@ -25,7 +25,7 @@ import qualified Data.BloomFilter as Bloom #else import qualified Data.BloomFilter as Bloom #endif -import Data.BloomFilter.Easy (suggestSizing, Bloom) +import Data.BloomFilter.Easy (safeSuggestSizing, Bloom) import Data.BloomFilter.Hash (Hashable, cheapHashes) import Control.Monad.ST.Safe (ST) diff --git a/debian/changelog b/debian/changelog index 710f72a34f..c2e0ea5088 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,6 +20,8 @@ git-annex (5.20140832) UNRELEASED; urgency=medium the repository, rather than just the file's base name. Note that if you're relying on such things to keep files separate with WORM, you should really be using a better backend. + * Rather than crashing when there's a problem with the requested bloomfilter + capacity/accuracy, fall back to a reasonable default bloom filter size. -- Joey Hess Thu, 04 Sep 2014 16:17:22 -0400