more robust handling of deferred commits
Still not robust enough. I have 3 fscks running concurrently, and am seeing: ("commit deferred",user error (SQLite3 returned ErrorBusy while attempting to perform step.)) and git-annex: user error (SQLite3 returned ErrorBusy while attempting to perform prepare "SELECT \"fscked\".\"key\"\nFROM \"fscked\"\nWHERE \"fscked\".\"key\" = ?\n": database is locked)
This commit is contained in:
parent
39a82a76c1
commit
17cb219231
2 changed files with 58 additions and 46 deletions
|
@ -65,8 +65,8 @@ openDb u = do
|
|||
unlessM (liftIO $ doesFileExist db) $ do
|
||||
let newdb = db ++ ".new"
|
||||
h <- liftIO $ H.openDb newdb
|
||||
void $ liftIO $ H.runDb h $
|
||||
runMigrationSilent migrateFsck
|
||||
void $ liftIO $ H.commitDb h $
|
||||
void $ runMigrationSilent migrateFsck
|
||||
liftIO $ H.closeDb h
|
||||
setAnnexFilePerm newdb
|
||||
liftIO $ renameFile newdb db
|
||||
|
@ -87,7 +87,7 @@ addDb (FsckHandle h _) k = H.queueDb h 1000 $
|
|||
sk = toSKey k
|
||||
|
||||
inDb :: FsckHandle -> Key -> IO Bool
|
||||
inDb (FsckHandle h _) = H.runDb h . inDb' . toSKey
|
||||
inDb (FsckHandle h _) = H.queryDb h . inDb' . toSKey
|
||||
|
||||
inDb' :: SKey -> SqlPersistM Bool
|
||||
inDb' sk = do
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue