speed up keys database writes
There seems to be no reason to check the time here. I think it was inherited from code in Database.Fsck, which does have a reason to commit every few minutes. Removing that syscall speeds up a git-annex init in a repo with 100000 annexed files by about 3 seconds. Sponsored-by: Dartmouth College's Datalad project
This commit is contained in:
parent
0f54e5e0ae
commit
eb6f6ff9b8
4 changed files with 26 additions and 8 deletions
|
@ -27,7 +27,6 @@ import Git.FilePath
|
|||
|
||||
import Database.Persist.Sql hiding (Key)
|
||||
import Database.Persist.TH
|
||||
import Data.Time.Clock
|
||||
import Control.Monad
|
||||
import Data.Maybe
|
||||
|
||||
|
@ -77,12 +76,8 @@ newtype WriteHandle = WriteHandle H.DbQueue
|
|||
queueDb :: SqlPersistM () -> WriteHandle -> IO ()
|
||||
queueDb a (WriteHandle h) = H.queueDb h checkcommit a
|
||||
where
|
||||
-- commit queue after 1000 changes or 5 minutes, whichever comes first
|
||||
checkcommit sz lastcommittime
|
||||
| sz > 1000 = return True
|
||||
| otherwise = do
|
||||
now <- getCurrentTime
|
||||
return $ diffUTCTime now lastcommittime > 300
|
||||
-- commit queue after 1000 changes
|
||||
checkcommit sz _lastcommittime = pure (sz > 1000)
|
||||
|
||||
addAssociatedFile :: Key -> TopFilePath -> WriteHandle -> IO ()
|
||||
addAssociatedFile k f = queueDb $ do
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue