Skip to content

Commit 8f5216b

Browse files
committed
Define mk*Args for all backends
1 parent 926aaee commit 8f5216b

File tree

7 files changed

+53
-31
lines changed
  • ouroboros-consensus-diffusion/src/ouroboros-consensus-diffusion/Ouroboros/Consensus
  • ouroboros-consensus

7 files changed

+53
-31
lines changed

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

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,11 @@ import Ouroboros.Network.Protocol.ChainSync.Codec (timeLimitsChainSync)
173173
import Ouroboros.Network.RethrowPolicy
174174
import qualified SafeWildCards
175175
import System.Exit (ExitCode (..))
176-
import System.FS.API (SomeHasFS (..), mkFsPath)
176+
import System.FS.API (SomeHasFS (..))
177177
import System.FS.API.Types (MountPoint (..))
178178
import System.FS.IO (ioHasFS)
179-
import System.FilePath (splitDirectories, (</>))
180-
import System.Random (StdGen, genWord64, newStdGen, randomIO, split)
179+
import System.FilePath ((</>))
180+
import System.Random (StdGen, newStdGen, randomIO, split)
181181

182182
{-------------------------------------------------------------------------------
183183
The arguments to the Consensus Layer node functionality
@@ -1050,20 +1050,6 @@ stdLowLevelRunNodeArgsIO
10501050
, llrnPublicPeerSelectionStateVar =
10511051
Diffusion.dcPublicPeerSelectionVar srnDiffusionConfiguration
10521052
, llrnLdbFlavorArgs = srnLedgerDbBackendArgs
1053-
-- case srnLedgerDbBackendArgs of
1054-
-- V1LMDB args -> LedgerDbFlavorArgsV1 args
1055-
-- V2InMemory -> LedgerDbFlavorArgsV2 (V2.V2Args V2.InMemoryHandleArgs)
1056-
-- V2LSM path ->
1057-
-- LedgerDbFlavorArgsV2
1058-
-- ( V2.V2Args
1059-
-- ( V2.LSMHandleArgs
1060-
-- ( V2.LSMArgs
1061-
-- (mkFsPath $ splitDirectories path)
1062-
-- lsmSalt
1063-
-- (LSM.stdMkBlockIOFS (nonImmutableDbPath srnDatabasePath))
1064-
-- )
1065-
-- )
1066-
-- )
10671053
}
10681054
where
10691055
networkMagic :: NetworkMagic

ouroboros-consensus/ouroboros-consensus.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,7 @@ library ouroboros-consensus-lsm
373373
Ouroboros.Consensus.Storage.LedgerDB.V2.LSM
374374

375375
build-depends:
376+
FailT,
376377
base >=4.14 && <4.22,
377378
blockio,
378379
cardano-binary,

ouroboros-consensus/src/ouroboros-consensus-lmdb/Ouroboros/Consensus/Storage/LedgerDB/V1/BackingStore/Impl/LMDB.hs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ module Ouroboros.Consensus.Storage.LedgerDB.V1.BackingStore.Impl.LMDB
2121
, Backend (..)
2222
, Args (LMDBBackingStoreArgs)
2323
, LMDBLimits (LMDBLimits, lmdbMapSize, lmdbMaxDatabases, lmdbMaxReaders)
24+
, mkLMDBArgs
2425

2526
-- * Streaming
2627
, YieldArgs (YieldLMDB)
@@ -62,9 +63,11 @@ import Ouroboros.Consensus.Ledger.Basics
6263
import qualified Ouroboros.Consensus.Ledger.Tables.Diff as Diff
6364
import Ouroboros.Consensus.Ledger.Tables.Utils (emptyLedgerTables)
6465
import Ouroboros.Consensus.Storage.LedgerDB.API
66+
import Ouroboros.Consensus.Storage.LedgerDB.Args
6567
import Ouroboros.Consensus.Storage.LedgerDB.Snapshots
6668
( SnapshotBackend (..)
6769
)
70+
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.Args as V1
6871
import Ouroboros.Consensus.Storage.LedgerDB.V1.BackingStore
6972
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.BackingStore.API as API
7073
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.BackingStore.Impl.LMDB.Bridge as Bridge
@@ -813,6 +816,20 @@ instance
813816
limits
814817
(LiveLMDBFS $ FS.SomeHasFS $ ioHasFS $ FS.MountPoint fs)
815818

819+
-- | Create arguments for initializing the LedgerDB using the LMDB backend.
820+
mkLMDBArgs ::
821+
( MonadIOPrim m
822+
, HasLedgerTables (LedgerState blk)
823+
, IOLike m
824+
) =>
825+
V1.FlushFrequency -> FilePath -> LMDBLimits -> a -> (LedgerDbBackendArgs m blk, a)
826+
mkLMDBArgs flushing lmdbPath limits =
827+
(,) $
828+
LedgerDbBackendArgsV1 $
829+
V1.V1Args flushing $
830+
SomeBackendArgs $
831+
LMDBBackingStoreArgs lmdbPath limits Dict.Dict
832+
816833
class (MonadIO m, PrimState m ~ PrimState IO) => MonadIOPrim m
817834
instance (MonadIO m, PrimState m ~ PrimState IO) => MonadIOPrim m
818835

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

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ import Ouroboros.Consensus.Ledger.SupportsProtocol
7676
import qualified Ouroboros.Consensus.Ledger.Tables.Diff as Diff
7777
import Ouroboros.Consensus.Ledger.Tables.Utils
7878
import Ouroboros.Consensus.Storage.LedgerDB.API
79+
import Ouroboros.Consensus.Storage.LedgerDB.Args
7980
import Ouroboros.Consensus.Storage.LedgerDB.Snapshots
8081
import Ouroboros.Consensus.Storage.LedgerDB.V2
8182
import Ouroboros.Consensus.Storage.LedgerDB.V2.Backend
@@ -475,10 +476,19 @@ stdMkBlockIOFS fastStoragePath rr = do
475476

476477
data LSM
477478

478-
mkLSMArgs :: FilePath -> StdGen -> FilePath -> (Args IO LSM, StdGen)
479-
mkLSMArgs fp gen fastStorage =
479+
-- | Create arguments for initializing the LedgerDB using the LSM-trees backend.
480+
mkLSMArgs ::
481+
( LedgerSupportsProtocol blk
482+
, LedgerDbSerialiseConstraints blk
483+
) =>
484+
Proxy blk -> FilePath -> FilePath -> StdGen -> (LedgerDbBackendArgs IO blk, StdGen)
485+
mkLSMArgs _ fp fastStorage gen =
480486
let (lsmSalt, gen') = genWord64 gen
481-
in (LSMArgs (mkFsPath $ splitDirectories fp) lsmSalt (stdMkBlockIOFS fastStorage), gen')
487+
in ( LedgerDbBackendArgsV2 $
488+
SomeBackendArgs $
489+
LSMArgs (mkFsPath $ splitDirectories fp) lsmSalt (stdMkBlockIOFS fastStorage)
490+
, gen'
491+
)
482492

483493
instance
484494
( LedgerSupportsProtocol blk

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ import qualified Ouroboros.Consensus.Storage.ImmutableDB as ImmutableDB
4242
import Ouroboros.Consensus.Storage.LedgerDB (LedgerDbBackendArgs)
4343
import qualified Ouroboros.Consensus.Storage.LedgerDB as LedgerDB
4444
import Ouroboros.Consensus.Storage.LedgerDB.Snapshots
45+
import qualified Ouroboros.Consensus.Storage.LedgerDB.V2.Backend as LedgerDB
46+
import qualified Ouroboros.Consensus.Storage.LedgerDB.V2.InMemory as InMemory
4547
import qualified Ouroboros.Consensus.Storage.VolatileDB as VolatileDB
4648
import Ouroboros.Consensus.Util.Args
4749
import Ouroboros.Consensus.Util.IOLike
@@ -142,7 +144,7 @@ defaultArgs =
142144
ChainDbArgs
143145
ImmutableDB.defaultArgs
144146
VolatileDB.defaultArgs
145-
LedgerDB.defaultArgs
147+
(LedgerDB.defaultArgs $ LedgerDB.SomeBackendArgs InMemory.InMemArgs)
146148
defaultSpecificArgs
147149

148150
ensureValidateAll ::

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

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,12 @@ import GHC.Generics (Generic)
2222
import NoThunks.Class
2323
import Ouroboros.Consensus.Ledger.Abstract
2424
import Ouroboros.Consensus.Ledger.Extended
25-
import Ouroboros.Consensus.Ledger.SupportsProtocol
2625
import Ouroboros.Consensus.Storage.LedgerDB.API
2726
import Ouroboros.Consensus.Storage.LedgerDB.Snapshots
2827
import Ouroboros.Consensus.Storage.LedgerDB.TraceEvent
2928
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.Args as V1
3029
import qualified Ouroboros.Consensus.Storage.LedgerDB.V2.Backend as V2
31-
import Ouroboros.Consensus.Storage.LedgerDB.V2.InMemory
3230
import Ouroboros.Consensus.Util.Args
33-
import Ouroboros.Consensus.Util.IOLike
3431
import System.FS.API
3532

3633
{-------------------------------------------------------------------------------
@@ -60,13 +57,10 @@ data LedgerDbArgs f m blk = LedgerDbArgs
6057

6158
-- | Default arguments
6259
defaultArgs ::
63-
( IOLike m
64-
, LedgerDbSerialiseConstraints blk
65-
, LedgerSupportsProtocol blk
66-
, LedgerSupportsInMemoryLedgerDB (LedgerState blk)
67-
) =>
60+
Applicative m =>
61+
V2.SomeBackendArgs m blk ->
6862
Incomplete LedgerDbArgs m blk
69-
defaultArgs =
63+
defaultArgs backendArgs =
7064
LedgerDbArgs
7165
{ lgrSnapshotPolicyArgs = defaultSnapshotPolicyArgs
7266
, lgrGenesis = NoDefault
@@ -76,7 +70,7 @@ defaultArgs =
7670
, lgrTracer = nullTracer
7771
, -- This value is the closest thing to a pre-UTxO-HD node, and as such it
7872
-- will be the default for end-users.
79-
lgrBackendArgs = LedgerDbBackendArgsV2 $ V2.SomeBackendArgs InMemArgs
73+
lgrBackendArgs = LedgerDbBackendArgsV2 backendArgs
8074
, lgrRegistry = NoDefault
8175
, lgrStartSnapshot = Nothing
8276
}

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ module Ouroboros.Consensus.Storage.LedgerDB.V2.InMemory
2020
, Mem
2121
, YieldArgs (YieldInMemory)
2222
, SinkArgs (SinkInMemory)
23+
, mkInMemoryArgs
2324
) where
2425

2526
import Cardano.Binary as CBOR
@@ -57,6 +58,7 @@ import Ouroboros.Consensus.Ledger.SupportsProtocol
5758
import qualified Ouroboros.Consensus.Ledger.Tables.Diff as Diff
5859
import Ouroboros.Consensus.Ledger.Tables.Utils
5960
import Ouroboros.Consensus.Storage.LedgerDB.API
61+
import Ouroboros.Consensus.Storage.LedgerDB.Args
6062
import Ouroboros.Consensus.Storage.LedgerDB.Snapshots
6163
import Ouroboros.Consensus.Storage.LedgerDB.V2.Backend
6264
import Ouroboros.Consensus.Storage.LedgerDB.V2.LedgerSeq
@@ -298,6 +300,16 @@ instance
298300
snapshotManager _ _ =
299301
Ouroboros.Consensus.Storage.LedgerDB.V2.InMemory.snapshotManager
300302

303+
-- | Create arguments for initializing the LedgerDB using the InMemory backend.
304+
mkInMemoryArgs ::
305+
( IOLike m
306+
, LedgerDbSerialiseConstraints blk
307+
, LedgerSupportsProtocol blk
308+
, LedgerSupportsInMemoryLedgerDB (LedgerState blk)
309+
) =>
310+
a -> (LedgerDbBackendArgs m blk, a)
311+
mkInMemoryArgs = (,) $ LedgerDbBackendArgsV2 $ SomeBackendArgs InMemArgs
312+
301313
instance IOLike m => StreamingBackend m Mem l where
302314
data YieldArgs m Mem l
303315
= -- \| Yield an in-memory snapshot

0 commit comments

Comments
 (0)