Skip to content

Commit 1cc5921

Browse files
committed
fix: toChecksumsFileForWriteBufferFiles
1 parent 7d47047 commit 1cc5921

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

src/Database/LSMTree/Internal/Paths.hs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,8 @@ module Database.LSMTree.Internal.Paths (
5252

5353
import Control.Applicative (Applicative (..))
5454
import Control.DeepSeq (NFData (..))
55-
import Data.Bifunctor (Bifunctor (..))
5655
import qualified Data.ByteString.Char8 as BS
5756
import Data.Foldable (toList)
58-
import Data.Function ((&))
5957
import qualified Data.Map as Map
6058
import Data.Maybe (fromMaybe)
6159
import Data.String (IsString (..))
@@ -322,16 +320,18 @@ writeBufferFilePathWithExt (WriteBufferFsPaths dir n) ext =
322320
-------------------------------------------------------------------------------}
323321

324322
toChecksumsFileForWriteBufferFiles :: (ForKOps CRC.CRC32C, ForBlob CRC.CRC32C) -> CRC.ChecksumsFile
325-
toChecksumsFileForWriteBufferFiles checksums =
326-
Map.fromList . toList $ checksums & bimap
327-
((toChecksumsFileName writeBufferKOpsExt,) . unForKOps)
328-
((toChecksumsFileName writeBufferBlobExt,) . unForBlob)
323+
toChecksumsFileForWriteBufferFiles (ForKOps kOpsChecksum, ForBlob blobChecksum) =
324+
Map.fromList
325+
[ (toChecksumsFileName writeBufferKOpsExt, kOpsChecksum)
326+
, (toChecksumsFileName writeBufferBlobExt, blobChecksum)
327+
]
329328
where
330-
toChecksumsFileName :: String -> CRC.ChecksumsFileName
331329
toChecksumsFileName = CRC.ChecksumsFileName . BS.pack
332330

333331
fromChecksumsFileForWriteBufferFiles :: CRC.ChecksumsFile -> Either String (ForKOps CRC.CRC32C, ForBlob CRC.CRC32C)
334332
fromChecksumsFileForWriteBufferFiles file = do
335-
forKOps <- maybe (Left $ "key not found: " <> writeBufferKOpsExt) Right (Map.lookup (CRC.ChecksumsFileName . fromString $ writeBufferKOpsExt) file)
336-
forBlob <- maybe (Left $ "key not found: " <> writeBufferBlobExt) Right (Map.lookup (CRC.ChecksumsFileName . fromString $ writeBufferBlobExt) file)
337-
pure (ForKOps forKOps, ForBlob forBlob)
333+
(,) <$> (ForKOps <$> fromChecksumFile writeBufferKOpsExt) <*> (ForBlob <$> fromChecksumFile writeBufferBlobExt)
334+
where
335+
fromChecksumFile key =
336+
maybe (Left $ "key not found: " <> key) Right $
337+
Map.lookup (CRC.ChecksumsFileName . fromString $ key) file

src/Database/LSMTree/Internal/Snapshot.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,8 @@ openWriteBuffer ::
305305
-> m (WriteBuffer, Ref (WriteBufferBlobs m h))
306306
openWriteBuffer reg resolve hfs hbio uc activeDir snapWriteBufferPaths = do
307307
-- Check the checksums
308+
-- TODO: This reads the blobfile twice: once to check the CRC and once more
309+
-- to copy it from the snapshot directory to the active directory.
308310
(expectedChecksumForKOps, expectedChecksumForBlob) <-
309311
CRC.expectValidFile (writeBufferChecksumsPath snapWriteBufferPaths) . fromChecksumsFileForWriteBufferFiles
310312
=<< CRC.readChecksumsFile hfs (writeBufferChecksumsPath snapWriteBufferPaths)

0 commit comments

Comments
 (0)