Skip to content

Commit a66a63a

Browse files
committed
Some more cleanup
1 parent 52eb042 commit a66a63a

File tree

7 files changed

+43
-61
lines changed

7 files changed

+43
-61
lines changed

ouroboros-consensus-diffusion/ouroboros-consensus-diffusion.cabal

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ library
8484
deepseq,
8585
filepath,
8686
blockio,
87-
lsm-tree,
8887
fs-api ^>=0.4,
8988
hashable,
9089
io-classes:{io-classes, si-timers, strict-stm} ^>=1.8,

ouroboros-consensus-diffusion/src/ouroboros-consensus-diffusion/Ouroboros/Consensus/Node.hs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ module Ouroboros.Consensus.Node
5454
, Tracers' (..)
5555
, pattern DoDiskSnapshotChecksum
5656
, pattern NoDoDiskSnapshotChecksum
57+
, LedgerDbBackendArgs (..)
5758

5859
-- * Internal helpers
5960
, mkNodeKernelArgs
@@ -126,9 +127,9 @@ import qualified Ouroboros.Consensus.Storage.ChainDB as ChainDB
126127
import qualified Ouroboros.Consensus.Storage.ChainDB.Impl.Args as ChainDB
127128
import Ouroboros.Consensus.Storage.LedgerDB.Args
128129
import Ouroboros.Consensus.Storage.LedgerDB.Snapshots
130+
import qualified Ouroboros.Consensus.Storage.LedgerDB.V2.Args as V2
129131
import Ouroboros.Consensus.Util.Args
130132
import Ouroboros.Consensus.Util.IOLike
131-
import System.FS.BlockIO.IO
132133
import Ouroboros.Consensus.Util.Orphans ()
133134
import Ouroboros.Consensus.Util.Time (secondsToNominalDiffTime)
134135
import Ouroboros.Network.BlockFetch
@@ -175,10 +176,10 @@ import qualified SafeWildCards
175176
import System.Exit (ExitCode (..))
176177
import System.FS.API (SomeHasFS (..))
177178
import System.FS.API.Types (MountPoint (..))
179+
import System.FS.BlockIO.IO
178180
import System.FS.IO (ioHasFS)
179181
import System.FilePath ((</>))
180-
import System.Random (StdGen, newStdGen, randomIO, split, genWord64, initStdGen)
181-
import qualified Database.LSMTree as LSM
182+
import System.Random (StdGen, genWord64, initStdGen, newStdGen, randomIO, split)
182183

183184
{-------------------------------------------------------------------------------
184185
The arguments to the Consensus Layer node functionality
@@ -268,8 +269,6 @@ data LowLevelRunNodeArgs m addrNTN addrNTC blk
268269
, llrnMkVolatileHasFS :: ChainDB.RelativeMountPoint -> SomeHasFS m
269270
-- ^ File-system on which the directories for databases other than the ImmutableDB will
270271
-- be created.
271-
, llrnMkLSMFS :: FilePath -> m (SomeHasFSAndBlockIO m)
272-
, llrnGenSalt :: m LSM.Salt
273272
, llrnCustomiseChainDbArgs ::
274273
Complete ChainDbArgs m blk ->
275274
Complete ChainDbArgs m blk
@@ -382,7 +381,7 @@ data
382381
, -- Ad hoc values to replace default ChainDB configurations
383382
srnSnapshotPolicyArgs :: SnapshotPolicyArgs
384383
, srnQueryBatchSize :: QueryBatchSize
385-
, srnLdbFlavorArgs :: Complete LedgerDbFlavorArgs m
384+
, srnLdbFlavorArgs :: LedgerDbBackendArgs m
386385
}
387386

388387
{-------------------------------------------------------------------------------
@@ -530,8 +529,6 @@ runWith RunNodeArgs{..} encAddrNtN decAddrNtN LowLevelRunNodeArgs{..} =
530529
initLedger
531530
llrnMkImmutableHasFS
532531
llrnMkVolatileHasFS
533-
llrnMkLSMFS
534-
llrnGenSalt
535532
llrnLdbFlavorArgs
536533
llrnChainDbArgsDefaults
537534
( setLoEinChainDbArgs
@@ -820,15 +817,13 @@ openChainDB ::
820817
(ChainDB.RelativeMountPoint -> SomeHasFS m) ->
821818
-- | Volatile FS, see 'NodeDatabasePaths'
822819
(ChainDB.RelativeMountPoint -> SomeHasFS m) ->
823-
(FilePath -> m (SomeHasFSAndBlockIO m)) ->
824-
(m LSM.Salt) ->
825820
Complete LedgerDbFlavorArgs m ->
826821
-- | A set of default arguments (possibly modified from 'defaultArgs')
827822
Incomplete ChainDbArgs m blk ->
828823
-- | Customise the 'ChainDbArgs'
829824
(Complete ChainDbArgs m blk -> Complete ChainDbArgs m blk) ->
830825
m (ChainDB m blk, Complete ChainDbArgs m blk)
831-
openChainDB registry cfg initLedger fsImm fsVol fsLSM genSalt flavorArgs defArgs customiseArgs =
826+
openChainDB registry cfg initLedger fsImm fsVol flavorArgs defArgs customiseArgs =
832827
let args =
833828
customiseArgs $
834829
ChainDB.completeChainDbArgs
@@ -839,8 +834,6 @@ openChainDB registry cfg initLedger fsImm fsVol fsLSM genSalt flavorArgs defArgs
839834
(nodeCheckIntegrity (configStorage cfg))
840835
fsImm
841836
fsVol
842-
fsLSM
843-
genSalt
844837
flavorArgs
845838
defArgs
846839
in (,args) <$> ChainDB.openDB args
@@ -1035,9 +1028,6 @@ stdLowLevelRunNodeArgsIO
10351028
, llrnPeerSelectionRng
10361029
, llrnMkImmutableHasFS = stdMkChainDbHasFS $ immutableDbPath srnDatabasePath
10371030
, llrnMkVolatileHasFS = stdMkChainDbHasFS $ nonImmutableDbPath srnDatabasePath
1038-
, llrnMkLSMFS = \s ->
1039-
uncurry SomeHasFSAndBlockIO <$> ioHasBlockIO (MountPoint $ nonImmutableDbPath srnDatabasePath </> s) defaultIOCtxParams
1040-
, llrnGenSalt = fst . genWord64 <$> initStdGen
10411031
, llrnChainDbArgsDefaults = updateChainDbDefaults ChainDB.defaultArgs
10421032
, llrnCustomiseChainDbArgs = id
10431033
, llrnCustomiseNodeKernelArgs
@@ -1074,7 +1064,17 @@ stdLowLevelRunNodeArgsIO
10741064
, llrnPublicPeerSelectionStateVar =
10751065
Diffusion.dcPublicPeerSelectionVar srnDiffusionConfiguration
10761066
, llrnLdbFlavorArgs =
1077-
srnLdbFlavorArgs
1067+
case srnLdbFlavorArgs of
1068+
V1LMDB args -> LedgerDbFlavorArgsV1 args
1069+
V2InMemory -> LedgerDbFlavorArgsV2 (V2.V2Args V2.InMemoryHandleArgs)
1070+
V2LSM path ->
1071+
let
1072+
mkFS = \s ->
1073+
uncurry V2.SomeHasFSAndBlockIO
1074+
<$> ioHasBlockIO (MountPoint $ nonImmutableDbPath srnDatabasePath </> s) defaultIOCtxParams
1075+
genSalt = fst . genWord64 <$> initStdGen
1076+
in
1077+
LedgerDbFlavorArgsV2 (V2.V2Args (V2.LSMHandleArgs (V2.LSMArgs path genSalt mkFS)))
10781078
}
10791079
where
10801080
networkMagic :: NetworkMagic

ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/Storage/ChainDB/Impl/Args.hs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ import qualified Ouroboros.Consensus.Storage.VolatileDB as VolatileDB
4545
import Ouroboros.Consensus.Util.Args
4646
import Ouroboros.Consensus.Util.IOLike
4747
import System.FS.API
48-
import qualified Database.LSMTree as LSM
4948

5049
{-------------------------------------------------------------------------------
5150
Arguments
@@ -170,10 +169,6 @@ completeChainDbArgs ::
170169
(RelativeMountPoint -> SomeHasFS m) ->
171170
-- | Volatile FS, see 'NodeDatabasePaths'
172171
(RelativeMountPoint -> SomeHasFS m) ->
173-
-- | Make LSM fs
174-
(FilePath -> m (LedgerDB.SomeHasFSAndBlockIO m)) ->
175-
-- | Make LSM Salt
176-
(m LSM.Salt) ->
177172
Complete LedgerDbFlavorArgs m ->
178173
-- | A set of incomplete arguments, possibly modified wrt @defaultArgs@
179174
Incomplete ChainDbArgs m blk ->
@@ -186,8 +181,6 @@ completeChainDbArgs
186181
checkIntegrity
187182
mkImmFS
188183
mkVolFS
189-
mkLSMFS
190-
genSalt
191184
flavorArgs
192185
defArgs =
193186
defArgs
@@ -215,8 +208,6 @@ completeChainDbArgs
215208
(LedgerDB.ledgerDbCfgComputeLedgerEvents $ LedgerDB.lgrConfig (cdbLgrDbArgs defArgs))
216209
, LedgerDB.lgrFlavorArgs = flavorArgs
217210
, LedgerDB.lgrRegistry = registry
218-
, LedgerDB.lgrGenSalt = genSalt
219-
, LedgerDB.lgrMkLSMFS = mkLSMFS
220211
}
221212
, cdbsArgs =
222213
(cdbsArgs defArgs)

ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/Storage/LedgerDB.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,14 @@ openDB
7777
LedgerDbFlavorArgsV2 bss -> do
7878
(ds, bss') <- case bss of
7979
V2.V2Args V2.InMemoryHandleArgs -> pure (defaultDeleteSnapshot, V2.InMemoryHandleEnv)
80-
V2.V2Args (V2.LSMHandleArgs path) -> do
80+
V2.V2Args (V2.LSMHandleArgs (V2.LSMArgs path genSalt mkFS)) -> do
8181
session <-
8282
snd
8383
<$> allocate
8484
(lgrRegistry args)
8585
( \_ -> do
86-
SomeHasFSAndBlockIO fs blockio <- lgrMkLSMFS args "lsm"
87-
salt <- lgrGenSalt args
86+
V2.SomeHasFSAndBlockIO fs blockio <- mkFS "lsm"
87+
salt <- genSalt
8888
LSM.openSession
8989
(LedgerDBFlavorImplEvent . FlavorImplSpecificTraceV2 . V2.LSMTrace >$< lgrTracer args)
9090
fs

ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/Storage/LedgerDB/Args.hs

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818
-- | Arguments for LedgerDB initialization.
1919
module Ouroboros.Consensus.Storage.LedgerDB.Args
2020
( LedgerDbArgs (..)
21+
, LedgerDbBackendArgs (..)
2122
, LedgerDbFlavorArgs (..)
2223
, QueryBatchSize (..)
2324
, defaultArgs
2425
, defaultQueryBatchSize
25-
, SomeHasFSAndBlockIO (..)
2626
) where
2727

2828
import Control.ResourceRegistry
@@ -40,9 +40,8 @@ import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.Args as V1
4040
import qualified Ouroboros.Consensus.Storage.LedgerDB.V2.Args as V2
4141
import Ouroboros.Consensus.Util.Args
4242
import System.FS.API
43-
import qualified Database.LSMTree as LSM
44-
import System.FS.BlockIO.API
45-
import Data.Typeable
43+
44+
data LedgerDbBackendArgs m = V1LMDB (Complete V1.LedgerDbFlavorArgs m) | V2InMemory | V2LSM FilePath
4645

4746
{-------------------------------------------------------------------------------
4847
Arguments
@@ -67,13 +66,8 @@ data LedgerDbArgs f m blk = LedgerDbArgs
6766
-- ^ If provided, the ledgerdb will start using said snapshot and fallback
6867
-- to genesis. It will ignore any other existing snapshots. Useful for
6968
-- db-analyser.
70-
, lgrGenSalt :: HKD f (m LSM.Salt)
71-
, lgrMkLSMFS :: HKD f (FilePath -> m (SomeHasFSAndBlockIO m))
7269
}
7370

74-
data SomeHasFSAndBlockIO m where
75-
SomeHasFSAndBlockIO :: (Eq h, Typeable h) => HasFS m h -> HasBlockIO m h -> SomeHasFSAndBlockIO m
76-
7771
-- | Default arguments
7872
defaultArgs ::
7973
Applicative m =>
@@ -91,13 +85,11 @@ defaultArgs =
9185
lgrFlavorArgs = LedgerDbFlavorArgsV2 (V2.V2Args V2.InMemoryHandleArgs)
9286
, lgrRegistry = NoDefault
9387
, lgrStartSnapshot = Nothing
94-
, lgrGenSalt = NoDefault
95-
, lgrMkLSMFS = NoDefault
9688
}
9789

9890
data LedgerDbFlavorArgs f m
9991
= LedgerDbFlavorArgsV1 (V1.LedgerDbFlavorArgs f m)
100-
| LedgerDbFlavorArgsV2 (V2.LedgerDbFlavorArgs f)
92+
| LedgerDbFlavorArgsV2 (V2.LedgerDbFlavorArgs f m)
10193

10294
{-------------------------------------------------------------------------------
10395
QueryBatchSize

ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/Storage/LedgerDB/V1/Args.hs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ module Ouroboros.Consensus.Storage.LedgerDB.V1.Args
1313
( BackingStoreArgs (..)
1414
, FlushFrequency (..)
1515
, LedgerDbFlavorArgs (..)
16-
, defaultLedgerDbFlavorArgs
1716
, shouldFlush
1817
) where
1918

@@ -55,9 +54,3 @@ data BackingStoreArgs f m
5554

5655
class (MonadIO m, PrimState m ~ PrimState IO) => MonadIOPrim m
5756
instance (MonadIO m, PrimState m ~ PrimState IO) => MonadIOPrim m
58-
59-
defaultLedgerDbFlavorArgs :: Incomplete LedgerDbFlavorArgs m
60-
defaultLedgerDbFlavorArgs = V1Args DefaultFlushFrequency defaultBackingStoreArgs
61-
62-
defaultBackingStoreArgs :: Incomplete BackingStoreArgs m
63-
defaultBackingStoreArgs = InMemoryBackingStoreArgs

ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/Storage/LedgerDB/V2/Args.hs

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,35 @@
1-
{-# LANGUAGE DataKinds #-}
2-
{-# LANGUAGE DeriveAnyClass #-}
3-
{-# LANGUAGE DeriveGeneric #-}
4-
{-# LANGUAGE FlexibleInstances #-}
51
{-# LANGUAGE GADTs #-}
6-
{-# LANGUAGE MultiParamTypeClasses #-}
72
{-# LANGUAGE PolyKinds #-}
8-
{-# LANGUAGE StandaloneDeriving #-}
9-
{-# LANGUAGE TypeFamilies #-}
10-
{-# OPTIONS_GHC -Wno-orphans #-}
113

124
module Ouroboros.Consensus.Storage.LedgerDB.V2.Args
135
( FlavorImplSpecificTrace (..)
146
, HandleArgs (..)
157
, HandleEnv (..)
168
, LedgerDbFlavorArgs (..)
9+
, SomeHasFSAndBlockIO (..)
10+
, LSMHandleArgs (..)
1711
) where
1812

19-
import Database.LSMTree (LSMTreeTrace (..), Session)
13+
import Data.Typeable
14+
import Database.LSMTree (LSMTreeTrace (..), Salt, Session)
15+
import Ouroboros.Consensus.Util.Args
16+
import System.FS.API
17+
import System.FS.BlockIO.API
2018

21-
data LedgerDbFlavorArgs f = V2Args HandleArgs
19+
data LedgerDbFlavorArgs f m = V2Args (HandleArgs f m)
2220

23-
data HandleArgs
21+
data HandleArgs f m
2422
= InMemoryHandleArgs
25-
| LSMHandleArgs FilePath
23+
| LSMHandleArgs (LSMHandleArgs f m)
24+
25+
data LSMHandleArgs f m = LSMArgs
26+
{ lsmFilePath :: HKD f FilePath
27+
, lsmGenSalt :: HKD f (m Salt)
28+
, lsmMkFS :: HKD f (FilePath -> m (SomeHasFSAndBlockIO m))
29+
}
30+
31+
data SomeHasFSAndBlockIO m where
32+
SomeHasFSAndBlockIO :: (Eq h, Typeable h) => HasFS m h -> HasBlockIO m h -> SomeHasFSAndBlockIO m
2633

2734
data HandleEnv m
2835
= InMemoryHandleEnv

0 commit comments

Comments
 (0)