diff options
author | 2015-02-22 14:08:26 -0400 | |
---|---|---|
committer | 2015-02-22 14:08:26 -0400 | |
commit | 6173c44d0738ca8c9381189a819edecf1d39df3d (patch) | |
tree | dd65d733c77287507079f5276dfb1d137f69b674 /Database/Fsck.hs | |
parent | 0ed5bd4460eb0da9c6903082434848e395d8d54c (diff) |
complete work around for sqlite SELECT ErrorBusy on new connection bug
Diffstat (limited to 'Database/Fsck.hs')
-rw-r--r-- | Database/Fsck.hs | 12 |
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 |