Skip to content

Commit 8d292bc

Browse files
committed
Rename and relocate LedgerDbPrune
1 parent 42afd10 commit 8d292bc

File tree

6 files changed

+22
-29
lines changed

6 files changed

+22
-29
lines changed

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

+1-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ import Ouroboros.Consensus.Storage.ChainDB.API (ChainDbFailure (..))
6969
import Ouroboros.Consensus.Storage.ChainDB.Impl.BlockCache
7070
(BlockCache)
7171
import qualified Ouroboros.Consensus.Storage.ChainDB.Impl.BlockCache as BlockCache
72-
import Ouroboros.Consensus.Storage.Common (LedgerDBPruneTip (..))
7372
import Ouroboros.Consensus.Storage.ImmutableDB (ImmutableDB)
7473
import Ouroboros.Consensus.Storage.ImmutableDB.Stream
7574
import Ouroboros.Consensus.Storage.LedgerDB (LedgerDB')
@@ -191,7 +190,7 @@ openDB args@LgrDbArgs { lgrHasFS = lgrHasFS@(SomeHasFS hasFS), .. } replayTracer
191190
-- >k blocks long. Thus 'Lbn' is the oldest point we can roll back to.
192191
-- Therefore, we need to make the newest state (current) of the ledger DB
193192
-- the anchor.
194-
let dbPrunedToImmDBTip = LedgerDB.ledgerDbPrune LedgerDBPruneTipZero db
193+
let dbPrunedToImmDBTip = LedgerDB.ledgerDbPrune LedgerDB.LedgerDbPruneAll db
195194
(varDB, varPrevApplied) <-
196195
(,) <$> newTVarIO dbPrunedToImmDBTip <*> newTVarIO Set.empty
197196
return (

ouroboros-consensus/src/ouroboros-consensus/Ouroboros/Consensus/Storage/Common.hs

-18
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ module Ouroboros.Consensus.Storage.Common (
1313
, PrefixLen (..)
1414
, addPrefixLen
1515
, takePrefix
16-
-- * Pruning
17-
, LedgerDBPruneTip (..)
1816
-- * BinaryBlockInfo
1917
, BinaryBlockInfo (..)
2018
, extractHeader
@@ -36,7 +34,6 @@ import Data.Word
3634
import GHC.Generics (Generic)
3735
import NoThunks.Class (NoThunks)
3836
import Ouroboros.Consensus.Block
39-
import Ouroboros.Consensus.Protocol.Abstract (SecurityParam)
4037
import Ouroboros.Network.SizeInBytes (SizeInBytes)
4138

4239
{-------------------------------------------------------------------------------
@@ -68,21 +65,6 @@ takePrefix :: PrefixLen -> BL.ByteString -> ShortByteString
6865
takePrefix (PrefixLen n) =
6966
Short.toShort . BL.toStrict . BL.take (fromIntegral n)
7067

71-
{-------------------------------------------------------------------------------
72-
Pruning
73-
-------------------------------------------------------------------------------}
74-
75-
-- | The "tip" to prune snapshots from.
76-
--
77-
-- `SecurityParam` has been updated to use `NonZero` but we need to prune from
78-
-- @0@ in some cases.
79-
--
80-
-- Rather than using a plain `Word64` we use this to be able to distinguish that
81-
-- we are indeed using
82-
-- 1. @0@ in places where it is necessary
83-
-- 2. the security parameter as is, in other places
84-
data LedgerDBPruneTip = LedgerDBPruneTipZero | LedgerDBPruneTip SecurityParam
85-
8668
{-------------------------------------------------------------------------------
8769
BinaryBlockInfo
8870
-------------------------------------------------------------------------------}

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ module Ouroboros.Consensus.Storage.LedgerDB (
8484
, LedgerDB'
8585
, LedgerDbCfg
8686
, LedgerDbCfgF (..)
87+
, LedgerDbPrune (..)
8788
, configLedgerDb
8889
-- * Initialization
8990
, InitLog (..)
@@ -174,7 +175,7 @@ import Ouroboros.Consensus.Storage.LedgerDB.Init (InitLog (..),
174175
decorateReplayTracerWithStart, initLedgerDB)
175176
import Ouroboros.Consensus.Storage.LedgerDB.LedgerDB (Checkpoint (..),
176177
LedgerDB (..), LedgerDB', LedgerDbCfg, LedgerDbCfgF (..),
177-
configLedgerDb)
178+
LedgerDbPrune (..), configLedgerDb)
178179
import Ouroboros.Consensus.Storage.LedgerDB.Query (ledgerDbAnchor,
179180
ledgerDbCurrent, ledgerDbIsSaturated, ledgerDbMaxRollback,
180181
ledgerDbPast, ledgerDbSnapshots, ledgerDbTip)

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

+13
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ module Ouroboros.Consensus.Storage.LedgerDB.LedgerDB (
1414
, LedgerDB'
1515
, LedgerDbCfg
1616
, LedgerDbCfgF (..)
17+
, LedgerDbPrune (..)
1718
, configLedgerDb
1819
) where
1920

@@ -139,3 +140,15 @@ configLedgerDb cfg opts = LedgerDbCfg {
139140
, ledgerDbCfg = ExtLedgerCfg cfg
140141
, ledgerDbCfgComputeLedgerEvents = opts
141142
}
143+
144+
{-------------------------------------------------------------------------------
145+
Pruning
146+
-------------------------------------------------------------------------------}
147+
148+
-- | Options for prunning the LedgerDB
149+
--
150+
-- Rather than using a plain `Word64` we use this to be able to distinguish that
151+
-- we are indeed using
152+
-- 1. @0@ in places where it is necessary
153+
-- 2. the security parameter as is, in other places
154+
data LedgerDbPrune = LedgerDbPruneAll | LedgerDbPruneKeeping SecurityParam

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

+4-5
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ import Ouroboros.Consensus.Block
6161
import Ouroboros.Consensus.Config
6262
import Ouroboros.Consensus.Ledger.Abstract
6363
import Ouroboros.Consensus.Ledger.Extended
64-
import Ouroboros.Consensus.Storage.Common (LedgerDBPruneTip (..))
6564
import Ouroboros.Consensus.Storage.LedgerDB.LedgerDB
6665
import Ouroboros.Consensus.Storage.LedgerDB.Query
6766
import Ouroboros.Consensus.Util
@@ -234,12 +233,12 @@ ledgerDbBimap f g =
234233

235234
-- | Prune snapshots until at we have at most @k@ snapshots in the LedgerDB,
236235
-- excluding the snapshots stored at the anchor.
237-
ledgerDbPrune :: GetTip l => LedgerDBPruneTip -> LedgerDB l -> LedgerDB l
236+
ledgerDbPrune :: GetTip l => LedgerDbPrune -> LedgerDB l -> LedgerDB l
238237
ledgerDbPrune tip db =
239238
let tip' =
240239
case tip of
241-
LedgerDBPruneTipZero -> 0
242-
LedgerDBPruneTip (SecurityParam k) -> unNonZero k
240+
LedgerDbPruneAll -> 0
241+
LedgerDbPruneKeeping (SecurityParam k) -> unNonZero k
243242
in db {
244243
ledgerDbCheckpoints = AS.anchorNewest tip' (ledgerDbCheckpoints db)
245244
}
@@ -260,7 +259,7 @@ pushLedgerState ::
260259
-> l -- ^ Updated ledger state
261260
-> LedgerDB l -> LedgerDB l
262261
pushLedgerState secParam current' db@LedgerDB{..} =
263-
ledgerDbPrune (LedgerDBPruneTip secParam) $ db {
262+
ledgerDbPrune (LedgerDbPruneKeeping secParam) $ db {
264263
ledgerDbCheckpoints = ledgerDbCheckpoints AS.:> Checkpoint current'
265264
}
266265

ouroboros-consensus/test/storage-test/Test/Ouroboros/Storage/ChainDB/Model.hs

+2-3
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ import Ouroboros.Consensus.Storage.ChainDB.API (AddBlockPromise (..),
112112
StreamFrom (..), StreamTo (..), UnknownRange (..),
113113
validBounds)
114114
import Ouroboros.Consensus.Storage.ChainDB.Impl.ChainSel (olderThanK)
115-
import Ouroboros.Consensus.Storage.Common (LedgerDBPruneTip (..))
116115
import Ouroboros.Consensus.Storage.LedgerDB
117116
import Ouroboros.Consensus.Util (repeatedly)
118117
import qualified Ouroboros.Consensus.Util.AnchoredFragment as Fragment
@@ -361,11 +360,11 @@ getLedgerDB cfg m@Model{..} =
361360

362361
tip =
363362
case maxActualRollback k m of
364-
0 -> LedgerDBPruneTipZero
363+
0 -> LedgerDbPruneAll
365364
n ->
366365
-- Since we know that @`n`@ is not zero, it is impossible for `nonZeroOr`
367366
-- to return a `Nothing` and the final result to have default value of @`1`@.
368-
LedgerDBPruneTip $ SecurityParam $ nonZeroOr n $ knownNonZeroBounded @1
367+
LedgerDbPruneKeeping $ SecurityParam $ nonZeroOr n $ knownNonZeroBounded @1
369368

370369
getLoEFragment :: Model blk -> LoE (AnchoredFragment blk)
371370
getLoEFragment = loeFragment

0 commit comments

Comments
 (0)