diff options
author | Joey Hess <joeyh@joeyh.name> | 2015-07-31 16:42:15 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2015-07-31 16:42:15 -0400 |
commit | ce4c9013b9d32435765838b036ab52eb4ac6b51e (patch) | |
tree | 55642367dafb548d26c7b1e639c9c28c35dc2b13 /Database/Fsck.hs | |
parent | dbe6b403da47172346b2536b50a379e6d9b76e31 (diff) |
fsck: Commit incremental fsck database after every 1000 files fscked, or every 5 minutes, whichever comes first.
Previously, commits were made every 1000 files fscked.
Also, improve docs
Diffstat (limited to 'Database/Fsck.hs')
-rw-r--r-- | Database/Fsck.hs | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Database/Fsck.hs b/Database/Fsck.hs index d9416927b..20b4878e3 100644 --- a/Database/Fsck.hs +++ b/Database/Fsck.hs @@ -34,6 +34,7 @@ import Annex.LockFile import Database.Persist.TH import Database.Esqueleto hiding (Key) +import Data.Time.Clock data FsckHandle = FsckHandle H.DbHandle UUID @@ -84,11 +85,18 @@ closeDb (FsckHandle h u) = do unlockFile =<< fromRepo (gitAnnexFsckDbLock u) addDb :: FsckHandle -> Key -> IO () -addDb (FsckHandle h _) k = H.queueDb h 1000 $ +addDb (FsckHandle h _) k = H.queueDb h checkcommit $ void $ insertUnique $ Fscked sk where sk = toSKey k + -- commit queue after 1000 files or 5 minutes, whichever comes first + checkcommit sz lastcommittime + | sz > 1000 = return True + | otherwise = do + now <- getCurrentTime + return $ diffUTCTime lastcommittime now > 300 + inDb :: FsckHandle -> Key -> IO Bool inDb (FsckHandle h _) = H.queryDb h . inDb' . toSKey |