more OsPath conversion
Sponsored-by: Kevin Mueller
This commit is contained in:
parent
c309edb8fb
commit
a9f3a31a52
6 changed files with 41 additions and 39 deletions
|
@ -26,13 +26,12 @@ import qualified Data.ByteString.Short as S (toShort)
|
|||
import qualified Data.ByteString.Char8 as B8
|
||||
import System.Random
|
||||
import Control.Concurrent
|
||||
import qualified System.FilePath.ByteString as P
|
||||
#endif
|
||||
|
||||
benchmarkDbs :: CriterionMode -> Integer -> Annex ()
|
||||
#ifdef WITH_BENCHMARK
|
||||
benchmarkDbs mode n = withTmpDirIn "." (toOsPath "benchmark") $ \tmpdir -> do
|
||||
db <- benchDb (toRawFilePath tmpdir) n
|
||||
benchmarkDbs mode n = withTmpDirIn (literalOsPath ".") (literalOsPath "benchmark") $ \tmpdir -> do
|
||||
db <- benchDb tmpdir n
|
||||
liftIO $ runMode mode
|
||||
[ bgroup "keys database"
|
||||
[ getAssociatedFilesHitBench db
|
||||
|
@ -93,7 +92,7 @@ keyN n = mkKey $ \k -> k
|
|||
}
|
||||
|
||||
fileN :: Integer -> TopFilePath
|
||||
fileN n = asTopFilePath (toRawFilePath ("file" ++ show n))
|
||||
fileN n = asTopFilePath (toOsPath ("file" ++ show n))
|
||||
|
||||
keyMiss :: Key
|
||||
keyMiss = keyN 0 -- 0 is never stored
|
||||
|
@ -103,7 +102,7 @@ fileMiss = fileN 0 -- 0 is never stored
|
|||
|
||||
data BenchDb = BenchDb H.DbQueue Integer (MVar Integer)
|
||||
|
||||
benchDb :: RawFilePath -> Integer -> Annex BenchDb
|
||||
benchDb :: OsPath -> Integer -> Annex BenchDb
|
||||
benchDb tmpdir num = do
|
||||
liftIO $ putStrLn $ "setting up database with " ++ show num ++ " items"
|
||||
initDb db SQL.createTables
|
||||
|
@ -115,6 +114,6 @@ benchDb tmpdir num = do
|
|||
mv <- liftIO $ newMVar 1
|
||||
return (BenchDb h num mv)
|
||||
where
|
||||
db = tmpdir P.</> toRawFilePath (show num </> "db")
|
||||
db = tmpdir </> toOsPath (show num) </> literalOsPath "db"
|
||||
|
||||
#endif /* WITH_BENCHMARK */
|
||||
|
|
|
@ -20,7 +20,6 @@ import Database.RawFilePath
|
|||
import Database.Persist.Sqlite
|
||||
import Lens.Micro
|
||||
import qualified Data.Text as T
|
||||
import qualified System.FilePath.ByteString as P
|
||||
|
||||
{- Ensures that the database is freshly initialized. Deletes any
|
||||
- existing database. Pass the migration action for the database.
|
||||
|
@ -30,26 +29,26 @@ import qualified System.FilePath.ByteString as P
|
|||
- file causes Sqlite to always use the same permissions for additional
|
||||
- files it writes later on
|
||||
-}
|
||||
initDb :: P.RawFilePath -> SqlPersistM () -> Annex ()
|
||||
initDb :: OsPath -> SqlPersistM () -> Annex ()
|
||||
initDb db migration = do
|
||||
let dbdir = P.takeDirectory db
|
||||
let tmpdbdir = dbdir <> ".tmp"
|
||||
let tmpdb = tmpdbdir P.</> "db"
|
||||
let tmpdb' = T.pack (fromRawFilePath tmpdb)
|
||||
let dbdir = takeDirectory db
|
||||
let tmpdbdir = dbdir <> literalOsPath ".tmp"
|
||||
let tmpdb = tmpdbdir </> literalOsPath "db"
|
||||
let tmpdb' = fromOsPath tmpdb
|
||||
createAnnexDirectory tmpdbdir
|
||||
#if MIN_VERSION_persistent_sqlite(2,13,3)
|
||||
liftIO $ runSqliteInfo' tmpdb (enableWAL tmpdb') migration
|
||||
liftIO $ runSqliteInfo' tmpdb' (enableWAL tmpdb') migration
|
||||
#else
|
||||
liftIO $ runSqliteInfo (enableWAL tmpdb') migration
|
||||
#endif
|
||||
setAnnexDirPerm tmpdbdir
|
||||
-- Work around sqlite bug that prevents it from honoring
|
||||
-- less restrictive umasks.
|
||||
liftIO $ R.setFileMode tmpdb =<< defaultFileMode
|
||||
liftIO $ R.setFileMode tmpdb' =<< defaultFileMode
|
||||
setAnnexFilePerm tmpdb
|
||||
liftIO $ do
|
||||
void $ tryIO $ removeDirectoryRecursive (fromRawFilePath dbdir)
|
||||
R.rename tmpdbdir dbdir
|
||||
void $ tryIO $ removeDirectoryRecursive dbdir
|
||||
R.rename (fromOsPath tmpdbdir) (fromOsPath dbdir)
|
||||
|
||||
{- Make sure that the database uses WAL mode, to prevent readers
|
||||
- from blocking writers, and prevent a writer from blocking readers.
|
||||
|
@ -59,6 +58,6 @@ initDb db migration = do
|
|||
-
|
||||
- Note that once WAL mode is enabled, it will persist whenever the
|
||||
- database is opened. -}
|
||||
enableWAL :: T.Text -> SqliteConnectionInfo
|
||||
enableWAL :: RawFilePath -> SqliteConnectionInfo
|
||||
enableWAL db = over walEnabled (const True) $
|
||||
mkSqliteConnectionInfo db
|
||||
mkSqliteConnectionInfo (T.pack (fromRawFilePath db))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue