Skip to content

Commit 7ccb173

Browse files
committed
Define mk*Args for all backends
1 parent 51a7aef commit 7ccb173

File tree

7 files changed

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

7 files changed

+52
-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: 16 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,19 @@ 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 -> LedgerDbBackendArgs m blk
826+
mkLMDBArgs flushing lmdbPath limits =
827+
LedgerDbBackendArgsV1 $
828+
V1.V1Args flushing $
829+
SomeBackendArgs $
830+
LMDBBackingStoreArgs lmdbPath limits Dict.Dict
831+
816832
class (MonadIO m, PrimState m ~ PrimState IO) => MonadIOPrim m
817833
instance (MonadIO m, PrimState m ~ PrimState IO) => MonadIOPrim m
818834

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
@@ -77,6 +77,7 @@ import Ouroboros.Consensus.Ledger.SupportsProtocol
7777
import qualified Ouroboros.Consensus.Ledger.Tables.Diff as Diff
7878
import Ouroboros.Consensus.Ledger.Tables.Utils
7979
import Ouroboros.Consensus.Storage.LedgerDB.API
80+
import Ouroboros.Consensus.Storage.LedgerDB.Args
8081
import Ouroboros.Consensus.Storage.LedgerDB.Snapshots
8182
import Ouroboros.Consensus.Storage.LedgerDB.V2
8283
import Ouroboros.Consensus.Storage.LedgerDB.V2.Backend
@@ -476,10 +477,19 @@ stdMkBlockIOFS fastStoragePath rr = do
476477

477478
data LSM
478479

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

484494
instance
485495
( 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+
LedgerDbBackendArgs m blk
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)