summaryrefslogtreecommitdiff
path: root/Database/Fsck.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-02-22 14:08:26 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-02-22 14:08:26 -0400
commit6173c44d0738ca8c9381189a819edecf1d39df3d (patch)
treedd65d733c77287507079f5276dfb1d137f69b674 /Database/Fsck.hs
parent0ed5bd4460eb0da9c6903082434848e395d8d54c (diff)
complete work around for sqlite SELECT ErrorBusy on new connection bug
Diffstat (limited to 'Database/Fsck.hs')
-rw-r--r--Database/Fsck.hs12
1 files changed, 5 insertions, 7 deletions
diff --git a/Database/Fsck.hs b/Database/Fsck.hs
index 627403448..582fdb3d6 100644
--- a/Database/Fsck.hs
+++ b/Database/Fsck.hs
@@ -72,16 +72,15 @@ openDb u = do
let tmpdb = tmpdbdir </> "db"
liftIO $ do
createDirectoryIfMissing True tmpdbdir
- h <- H.initDb tmpdb $ void $
+ H.initDb tmpdb $ void $
runMigrationSilent migrateFsck
- H.closeDb h
setAnnexDirPerm tmpdbdir
setAnnexFilePerm tmpdb
liftIO $ do
void $ tryIO $ removeDirectoryRecursive dbdir
rename tmpdbdir dbdir
lockFileShared =<< fromRepo (gitAnnexFsckDbLock u)
- h <- liftIO $ H.openDb db
+ h <- liftIO $ H.openDb db "fscked"
return $ FsckHandle h u
closeDb :: FsckHandle -> Annex ()
@@ -90,14 +89,13 @@ closeDb (FsckHandle h u) = do
unlockFile =<< fromRepo (gitAnnexFsckDbLock u)
addDb :: FsckHandle -> Key -> IO ()
-addDb (FsckHandle h _) k = H.queueDb h 1000 $
- unlessM (inDb' sk) $
- insert_ $ Fscked sk
+addDb (FsckHandle h _) k = H.queueDb h 1000 $
+ void $ insertUnique $ Fscked sk
where
sk = toSKey k
inDb :: FsckHandle -> Key -> IO Bool
-inDb (FsckHandle h _) = H.queryDb h False . inDb' . toSKey
+inDb (FsckHandle h _) = H.queryDb h . inDb' . toSKey
inDb' :: SKey -> SqlPersistM Bool
inDb' sk = do