@@ -15,6 +15,7 @@ import Cardano.Tools.DBAnalyser.HasAnalysis
1515import Cardano.Tools.DBAnalyser.Types
1616import Control.ResourceRegistry
1717import Control.Tracer (Tracer (.. ), nullTracer )
18+ import Data.Functor.Contravariant ((>$<) )
1819import qualified Data.SOP.Dict as Dict
1920import Data.Singletons (Sing , SingI (.. ))
2021import qualified Debug.Trace as Debug
@@ -34,16 +35,22 @@ import qualified Ouroboros.Consensus.Storage.ChainDB as ChainDB
3435import qualified Ouroboros.Consensus.Storage.ChainDB.Impl.Args as ChainDB
3536import qualified Ouroboros.Consensus.Storage.ImmutableDB as ImmutableDB
3637import qualified Ouroboros.Consensus.Storage.ImmutableDB.Stream as ImmutableDB
38+ import Ouroboros.Consensus.Storage.LedgerDB (TraceEvent (.. ))
3739import qualified Ouroboros.Consensus.Storage.LedgerDB as LedgerDB
3840import qualified Ouroboros.Consensus.Storage.LedgerDB.V1 as LedgerDB.V1
3941import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.Args as LedgerDB.V1
4042import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.BackingStore.Impl.LMDB as LMDB
43+ import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.Snapshots as V1
4144import qualified Ouroboros.Consensus.Storage.LedgerDB.V2 as LedgerDB.V2
4245import qualified Ouroboros.Consensus.Storage.LedgerDB.V2.Args as LedgerDB.V2
46+ import qualified Ouroboros.Consensus.Storage.LedgerDB.V2.Args as V2
47+ import qualified Ouroboros.Consensus.Storage.LedgerDB.V2.InMemory as InMemory
48+ import qualified Ouroboros.Consensus.Storage.LedgerDB.V2.LSM as LSM
4349import Ouroboros.Consensus.Util.Args
4450import Ouroboros.Consensus.Util.IOLike
4551import Ouroboros.Consensus.Util.Orphans ()
4652import Ouroboros.Network.Block (genesisPoint )
53+ import System.FS.API
4754import System.IO
4855import Text.Printf (printf )
4956
@@ -54,7 +61,6 @@ import Text.Printf (printf)
5461openLedgerDB ::
5562 ( LedgerSupportsProtocol blk
5663 , InspectLedger blk
57- , LedgerDB. LedgerDbSerialiseConstraints blk
5864 , HasHardForkHistory blk
5965 , LedgerDB. LedgerSupportsLedgerDB blk
6066 ) =>
@@ -64,26 +70,51 @@ openLedgerDB ::
6470 , LedgerDB. TestInternals' IO blk
6571 )
6672openLedgerDB lgrDbArgs@ LedgerDB. LedgerDbArgs {LedgerDB. lgrFlavorArgs = LedgerDB. LedgerDbFlavorArgsV1 bss} = do
73+ let snapManager = V1. snapshotManager lgrDbArgs
6774 (ledgerDB, _, intLedgerDB) <-
6875 LedgerDB. openDBInternal
6976 lgrDbArgs
7077 ( LedgerDB.V1. mkInitDb
7178 lgrDbArgs
7279 bss
7380 (\ _ -> error " no replay" )
81+ snapManager
7482 )
83+ snapManager
7584 emptyStream
7685 genesisPoint
7786 pure (ledgerDB, intLedgerDB)
7887openLedgerDB lgrDbArgs@ LedgerDB. LedgerDbArgs {LedgerDB. lgrFlavorArgs = LedgerDB. LedgerDbFlavorArgsV2 args} = do
88+ (snapManager, bss') <- case args of
89+ V2. V2Args V2. InMemoryHandleArgs -> pure (InMemory. snapshotManager lgrDbArgs, V2. InMemoryHandleEnv )
90+ V2. V2Args (V2. LSMHandleArgs (V2. LSMArgs path genSalt mkFS)) -> do
91+ (rk1, V2. SomeHasFSAndBlockIO fs' blockio) <- mkFS (LedgerDB. lgrRegistry lgrDbArgs)
92+ session <-
93+ allocate
94+ (LedgerDB. lgrRegistry lgrDbArgs)
95+ ( \ _ -> do
96+ salt <- genSalt
97+ LSM. openSession
98+ ( LedgerDBFlavorImplEvent . LedgerDB. FlavorImplSpecificTraceV2 . V2. LSMTrace
99+ >$< LedgerDB. lgrTracer lgrDbArgs
100+ )
101+ fs'
102+ blockio
103+ salt
104+ (mkFsPath [path])
105+ )
106+ LSM. closeSession
107+ pure (LSM. snapshotManager (snd session) lgrDbArgs, V2. LSMHandleEnv session rk1)
79108 (ledgerDB, _, intLedgerDB) <-
80109 LedgerDB. openDBInternal
81110 lgrDbArgs
82111 ( LedgerDB.V2. mkInitDb
83112 lgrDbArgs
84- args
113+ bss'
85114 (\ _ -> error " no replay" )
115+ snapManager
86116 )
117+ snapManager
87118 emptyStream
88119 genesisPoint
89120 pure (ledgerDB, intLedgerDB)
0 commit comments