From 6248ad7b2a55d63114851e74279190f424f042ba Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 10 Dec 2013 15:40:01 -0400 Subject: Improve repair of git-annex index file. Fixes a test case I received where a corrupted repo was repaired, but the git-annex branch was not. The root of the problem was that the MissingObject returned by the repair code was not necessarily a complete set of all objects that might have been deleted during the repair. So, stop trying to return that at all, and instead make the index file checking code explicitly verify that each object the index uses is present. --- Assistant/Threads/SanityChecker.hs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'Assistant') diff --git a/Assistant/Threads/SanityChecker.hs b/Assistant/Threads/SanityChecker.hs index f417606b5..2e6a28759 100644 --- a/Assistant/Threads/SanityChecker.hs +++ b/Assistant/Threads/SanityChecker.hs @@ -29,7 +29,6 @@ import Git.Repair import Git.Index import Data.Time.Clock.POSIX -import qualified Data.Set as S {- This thread runs once at startup, and most other threads wait for it - to finish. (However, the webapp thread does not, to prevent the UI @@ -41,7 +40,7 @@ sanityCheckerStartupThread startupdelay = namedThreadUnchecked "SanityCheckerSta {- A corrupt index file can prevent the assistant from working at - all, so detect and repair. -} - ifM (not <$> liftAnnex (inRepo (checkIndex S.empty))) + ifM (not <$> liftAnnex (inRepo checkIndexFast)) ( do notice ["corrupt index file found at startup; removing and restaging"] liftAnnex $ inRepo $ nukeFile . indexFile -- cgit v1.2.3