diff options
author | Joey Hess <joey@kitenet.net> | 2013-12-10 15:40:01 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-12-10 15:40:01 -0400 |
commit | 6248ad7b2a55d63114851e74279190f424f042ba (patch) | |
tree | 68de8099f9f9f8db82eb11243e8baf90b42b7495 /Assistant/Threads | |
parent | 3890862075dee3e31338fdc85ab6a43324793c97 (diff) |
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.
Diffstat (limited to 'Assistant/Threads')
-rw-r--r-- | Assistant/Threads/SanityChecker.hs | 3 |
1 files changed, 1 insertions, 2 deletions
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 |