Skip to content

Commit 12a1acb

Browse files
committed
Adapt snapshot-converter and db-analyser to the new types
1 parent 626ce31 commit 12a1acb

File tree

2 files changed

+39
-9
lines changed

2 files changed

+39
-9
lines changed

ouroboros-consensus-cardano/app/snapshot-converter.hs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.BackingStore.Impl.LMDB
3838
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.DbChangelog as V1
3939
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.Lock as V1
4040
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.Snapshots as V1
41+
import qualified Ouroboros.Consensus.Storage.LedgerDB.V2.InMemory as InMemory
4142
import qualified Ouroboros.Consensus.Storage.LedgerDB.V2.InMemory as V2
4243
import qualified Ouroboros.Consensus.Storage.LedgerDB.V2.LedgerSeq as V2
4344
import Ouroboros.Consensus.Util.CRC
@@ -166,8 +167,7 @@ checkSnapshotFileStructure m p (SomeHasFS fs) = case m of
166167

167168
load ::
168169
forall blk.
169-
( LedgerDbSerialiseConstraints blk
170-
, CanStowLedgerTables (LedgerState blk)
170+
( CanStowLedgerTables (LedgerState blk)
171171
, LedgerSupportsProtocol blk
172172
, LedgerSupportsLedgerDB blk
173173
) =>
@@ -200,7 +200,7 @@ load config@Config{inpath = pathToDiskSnapshot -> Just (fs@(SomeHasFS hasFS), pa
200200
checkSnapshotFileStructure Mem path fs
201201
(ls, _) <- withExceptT SnapshotError $ V2.loadSnapshot nullTracer rr ccfg fs ds
202202
let h = V2.currentHandle ls
203-
(V2.state h,) <$> Trans.lift (V2.readAll (V2.tables h))
203+
(V2.state h,) <$> Trans.lift (V2.readAll (V2.tables h) (V2.state h))
204204
LMDB -> do
205205
checkSnapshotFileStructure LMDB path fs
206206
((dbch, k, bstore), _) <-
@@ -218,8 +218,7 @@ load config@Config{inpath = pathToDiskSnapshot -> Just (fs@(SomeHasFS hasFS), pa
218218
load _ _ _ _ = error "Malformed input path!"
219219

220220
store ::
221-
( LedgerDbSerialiseConstraints blk
222-
, CanStowLedgerTables (LedgerState blk)
221+
( CanStowLedgerTables (LedgerState blk)
223222
, LedgerSupportsProtocol blk
224223
, LedgerSupportsLedgerDB blk
225224
) =>
@@ -242,7 +241,7 @@ store config@Config{outpath = pathToDiskSnapshot -> Just (fs@(SomeHasFS hasFS),
242241
Mem -> do
243242
lseq <- V2.empty state tbs $ V2.newInMemoryLedgerTablesHandle nullTracer fs
244243
let h = V2.currentHandle lseq
245-
Monad.void $ V2.takeSnapshot ccfg nullTracer fs suffix h
244+
Monad.void $ InMemory.implTakeSnapshot ccfg nullTracer fs suffix h
246245
LMDB -> do
247246
chlog <- newTVarIO (V1.empty state)
248247
lock <- V1.mkLedgerDBLock
@@ -254,7 +253,7 @@ store config@Config{outpath = pathToDiskSnapshot -> Just (fs@(SomeHasFS hasFS),
254253
(V1.SnapshotsFS fs)
255254
(V1.InitFromValues (pointSlot $ getTip state) state tbs)
256255
Monad.void $ V1.withReadLock lock $ do
257-
V1.takeSnapshot chlog ccfg nullTracer (V1.SnapshotsFS fs) bs suffix
256+
V1.implTakeSnapshot chlog ccfg nullTracer (V1.SnapshotsFS fs) bs suffix
258257
store _ _ _ _ = error "Malformed output path!"
259258

260259
main :: IO ()

ouroboros-consensus-cardano/src/unstable-cardano-tools/Cardano/Tools/DBAnalyser/Run.hs

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import Cardano.Tools.DBAnalyser.HasAnalysis
1515
import Cardano.Tools.DBAnalyser.Types
1616
import Control.ResourceRegistry
1717
import Control.Tracer (Tracer (..), nullTracer)
18+
import Data.Functor.Contravariant ((>$<))
1819
import qualified Data.SOP.Dict as Dict
1920
import Data.Singletons (Sing, SingI (..))
2021
import qualified Debug.Trace as Debug
@@ -34,16 +35,22 @@ import qualified Ouroboros.Consensus.Storage.ChainDB as ChainDB
3435
import qualified Ouroboros.Consensus.Storage.ChainDB.Impl.Args as ChainDB
3536
import qualified Ouroboros.Consensus.Storage.ImmutableDB as ImmutableDB
3637
import qualified Ouroboros.Consensus.Storage.ImmutableDB.Stream as ImmutableDB
38+
import Ouroboros.Consensus.Storage.LedgerDB (TraceEvent (..))
3739
import qualified Ouroboros.Consensus.Storage.LedgerDB as LedgerDB
3840
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1 as LedgerDB.V1
3941
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.Args as LedgerDB.V1
4042
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.BackingStore.Impl.LMDB as LMDB
43+
import qualified Ouroboros.Consensus.Storage.LedgerDB.V1.Snapshots as V1
4144
import qualified Ouroboros.Consensus.Storage.LedgerDB.V2 as LedgerDB.V2
4245
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
4349
import Ouroboros.Consensus.Util.Args
4450
import Ouroboros.Consensus.Util.IOLike
4551
import Ouroboros.Consensus.Util.Orphans ()
4652
import Ouroboros.Network.Block (genesisPoint)
53+
import System.FS.API
4754
import System.IO
4855
import Text.Printf (printf)
4956

@@ -54,7 +61,6 @@ import Text.Printf (printf)
5461
openLedgerDB ::
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
)
6672
openLedgerDB 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)
7887
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)
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

Comments
 (0)