@@ -15,6 +15,7 @@ import Cardano.Tools.DBAnalyser.HasAnalysis
15
15
import Cardano.Tools.DBAnalyser.Types
16
16
import Control.ResourceRegistry
17
17
import Control.Tracer (Tracer (.. ), nullTracer )
18
+ import Data.Functor.Contravariant ((>$<) )
18
19
import qualified Data.SOP.Dict as Dict
19
20
import Data.Singletons (Sing , SingI (.. ))
20
21
import qualified Debug.Trace as Debug
@@ -34,16 +35,22 @@ import qualified Ouroboros.Consensus.Storage.ChainDB as ChainDB
34
35
import qualified Ouroboros.Consensus.Storage.ChainDB.Impl.Args as ChainDB
35
36
import qualified Ouroboros.Consensus.Storage.ImmutableDB as ImmutableDB
36
37
import qualified Ouroboros.Consensus.Storage.ImmutableDB.Stream as ImmutableDB
38
+ import Ouroboros.Consensus.Storage.LedgerDB (TraceEvent (.. ))
37
39
import qualified Ouroboros.Consensus.Storage.LedgerDB as LedgerDB
38
40
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1 as LedgerDB.V1
39
41
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.Args as LedgerDB.V1
40
42
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.BackingStore.Impl.LMDB as LMDB
43
+ import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.Snapshots as V1
41
44
import qualified Ouroboros.Consensus.Storage.LedgerDB.V2 as LedgerDB.V2
42
45
import 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
43
49
import Ouroboros.Consensus.Util.Args
44
50
import Ouroboros.Consensus.Util.IOLike
45
51
import Ouroboros.Consensus.Util.Orphans ()
46
52
import Ouroboros.Network.Block (genesisPoint )
53
+ import System.FS.API
47
54
import System.IO
48
55
import Text.Printf (printf )
49
56
@@ -54,7 +61,6 @@ import Text.Printf (printf)
54
61
openLedgerDB ::
55
62
( LedgerSupportsProtocol blk
56
63
, InspectLedger blk
57
- , LedgerDB. LedgerDbSerialiseConstraints blk
58
64
, HasHardForkHistory blk
59
65
, LedgerDB. LedgerSupportsLedgerDB blk
60
66
) =>
@@ -64,26 +70,51 @@ openLedgerDB ::
64
70
, LedgerDB. TestInternals' IO blk
65
71
)
66
72
openLedgerDB lgrDbArgs@ LedgerDB. LedgerDbArgs {LedgerDB. lgrFlavorArgs = LedgerDB. LedgerDbFlavorArgsV1 bss} = do
73
+ let snapManager = V1. snapshotManager lgrDbArgs
67
74
(ledgerDB, _, intLedgerDB) <-
68
75
LedgerDB. openDBInternal
69
76
lgrDbArgs
70
77
( LedgerDB.V1. mkInitDb
71
78
lgrDbArgs
72
79
bss
73
80
(\ _ -> error " no replay" )
81
+ snapManager
74
82
)
83
+ snapManager
75
84
emptyStream
76
85
genesisPoint
77
86
pure (ledgerDB, intLedgerDB)
78
87
openLedgerDB 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)
79
108
(ledgerDB, _, intLedgerDB) <-
80
109
LedgerDB. openDBInternal
81
110
lgrDbArgs
82
111
( LedgerDB.V2. mkInitDb
83
112
lgrDbArgs
84
- args
113
+ bss'
85
114
(\ _ -> error " no replay" )
115
+ snapManager
86
116
)
117
+ snapManager
87
118
emptyStream
88
119
genesisPoint
89
120
pure (ledgerDB, intLedgerDB)
0 commit comments