Skip to content

Commit 153e65b

Browse files
committed
More consistent naming of snapshot merging and incoming run types
1 parent 1e032d2 commit 153e65b

File tree

4 files changed

+70
-70
lines changed

4 files changed

+70
-70
lines changed

src/Database/LSMTree/Internal/Snapshot.hs

Lines changed: 41 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module Database.LSMTree.Internal.Snapshot (
77
, SnapLevels (..)
88
, SnapLevel (..)
99
, SnapIncomingRun (..)
10-
, SnapMergingRunState (..)
10+
, SnapMergingRun (..)
1111
-- * MergeTree snapshot format
1212
, SnapMergingTree(..)
1313
, SnapMergingTreeState(..)
@@ -170,31 +170,32 @@ instance NFData r => NFData (SnapLevel r) where
170170
-- both to zero).
171171
--
172172
data SnapIncomingRun r =
173-
SnapMergingRun !MergePolicyForLevel
174-
!NominalDebt
175-
!NominalCredits -- ^ The nominal credits supplied, and that
176-
-- need to be supplied on snapshot open.
177-
!(SnapMergingRunState MR.LevelMergeType r)
178-
| SnapSingleRun !r
173+
SnapIncomingMergingRun
174+
!MergePolicyForLevel
175+
!NominalDebt
176+
!NominalCredits -- ^ The nominal credits supplied, and that
177+
-- need to be supplied on snapshot open.
178+
!(SnapMergingRun MR.LevelMergeType r)
179+
| SnapIncomingSingleRun !r
179180
deriving stock (Eq, Functor, Foldable, Traversable)
180181

181182
instance NFData r => NFData (SnapIncomingRun r) where
182-
rnf (SnapMergingRun a b c d) =
183+
rnf (SnapIncomingMergingRun a b c d) =
183184
rnf a `seq` rnf b `seq` rnf c `seq` rnf d
184-
rnf (SnapSingleRun a) = rnf a
185+
rnf (SnapIncomingSingleRun a) = rnf a
185186

186187
-- | The total number of supplied credits. This total is used on snapshot load
187188
-- to restore merging work that was lost when the snapshot was created.
188189
newtype SuppliedCredits = SuppliedCredits { getSuppliedCredits :: Int }
189190
deriving stock (Eq, Read)
190191
deriving newtype NFData
191192

192-
data SnapMergingRunState t r =
193+
data SnapMergingRun t r =
193194
SnapCompletedMerge !NumRuns !MergeDebt !r
194195
| SnapOngoingMerge !RunParams !MergeCredits !(V.Vector r) !t
195196
deriving stock (Eq, Functor, Foldable, Traversable)
196197

197-
instance (NFData t, NFData r) => NFData (SnapMergingRunState t r) where
198+
instance (NFData t, NFData r) => NFData (SnapMergingRun t r) where
198199
rnf (SnapCompletedMerge a b c) = rnf a `seq` rnf b `seq` rnf c
199200
rnf (SnapOngoingMerge a b c d) = rnf a `seq` rnf b `seq` rnf c `seq` rnf d
200201

@@ -208,9 +209,8 @@ newtype SnapMergingTree r = SnapMergingTree (SnapMergingTreeState r)
208209

209210
data SnapMergingTreeState r =
210211
SnapCompletedTreeMerge !r
211-
| SnapPendingTreeMerge !(SnapPendingMerge r)
212-
| SnapOngoingTreeMerge
213-
!(SnapMergingRunState MR.TreeMergeType r)
212+
| SnapPendingTreeMerge !(SnapPendingMerge r)
213+
| SnapOngoingTreeMerge !(SnapMergingRun MR.TreeMergeType r)
214214
deriving stock (Eq, Functor, Foldable, Traversable)
215215

216216
instance NFData r => NFData (SnapMergingTreeState r) where
@@ -231,9 +231,8 @@ instance NFData r => NFData (SnapPendingMerge r) where
231231
rnf (SnapPendingUnionMerge a) = rnf a
232232

233233
data SnapPreExistingRun r =
234-
SnapPreExistingRun !r
235-
| SnapPreExistingMergingRun
236-
!(SnapMergingRunState MR.LevelMergeType r)
234+
SnapPreExistingRun !r
235+
| SnapPreExistingMergingRun !(SnapMergingRun MR.LevelMergeType r)
237236
deriving stock (Eq, Functor, Foldable, Traversable)
238237

239238
instance NFData r => NFData (SnapPreExistingRun r) where
@@ -307,7 +306,7 @@ fromSnapMergingTree hfs hbio uc resolve dir =
307306

308307
go reg (SnapMergingTree (SnapOngoingTreeMerge smrs)) = do
309308
mr <- withRollback reg
310-
(fromSnapMergingRunState hfs hbio uc resolve dir smrs)
309+
(fromSnapMergingRun hfs hbio uc resolve dir smrs)
311310
releaseRef
312311
mt <- withRollback reg
313312
(MT.newOngoingMerge mr)
@@ -325,7 +324,7 @@ fromSnapMergingTree hfs hbio uc resolve dir =
325324
fromSnapPreExistingRun reg (SnapPreExistingMergingRun smrs) =
326325
MT.PreExistingMergingRun <$>
327326
withRollback reg
328-
(fromSnapMergingRunState hfs hbio uc resolve dir smrs)
327+
(fromSnapMergingRun hfs hbio uc resolve dir smrs)
329328
releaseRef
330329

331330
releasePER (MT.PreExistingRun r) = releaseRef r
@@ -351,7 +350,7 @@ toSnapMergingTreeState ::
351350
toSnapMergingTreeState (MT.CompletedTreeMerge r) = pure $ SnapCompletedTreeMerge r
352351
toSnapMergingTreeState (MT.PendingTreeMerge p) = SnapPendingTreeMerge <$> toSnapPendingMerge p
353352
toSnapMergingTreeState (MT.OngoingTreeMerge mergingRun) =
354-
SnapOngoingTreeMerge <$> toSnapMergingRunState mergingRun
353+
SnapOngoingTreeMerge <$> toSnapMergingRun mergingRun
355354

356355
{-# SPECIALISE toSnapPendingMerge :: MT.PendingMerge IO h -> IO (SnapPendingMerge (Ref (Run IO h))) #-}
357356
toSnapPendingMerge ::
@@ -372,7 +371,7 @@ toSnapPreExistingRun ::
372371
-> m (SnapPreExistingRun (Ref (Run m h)))
373372
toSnapPreExistingRun (MT.PreExistingRun run) = pure $ SnapPreExistingRun run
374373
toSnapPreExistingRun (MT.PreExistingMergingRun peMergingRun) =
375-
SnapPreExistingMergingRun <$> toSnapMergingRunState peMergingRun
374+
SnapPreExistingMergingRun <$> toSnapMergingRun peMergingRun
376375

377376
{-------------------------------------------------------------------------------
378377
Conversion to levels snapshot format
@@ -408,24 +407,24 @@ toSnapIncomingRun ::
408407
toSnapIncomingRun ir = do
409408
s <- snapshotIncomingRun ir
410409
case s of
411-
Left r -> pure $! SnapSingleRun r
410+
Left r -> pure $! SnapIncomingSingleRun r
412411
Right (mergePolicy,
413412
nominalDebt,
414413
nominalCredits,
415414
mergingRun) -> do
416415
-- We need to know how many credits were supplied so we can restore merge
417416
-- work on snapshot load.
418-
smrs <- toSnapMergingRunState mergingRun
419-
pure $! SnapMergingRun mergePolicy nominalDebt nominalCredits smrs
417+
smrs <- toSnapMergingRun mergingRun
418+
pure $! SnapIncomingMergingRun mergePolicy nominalDebt nominalCredits smrs
420419

421-
{-# SPECIALISE toSnapMergingRunState ::
420+
{-# SPECIALISE toSnapMergingRun ::
422421
Ref (MR.MergingRun t IO h)
423-
-> IO (SnapMergingRunState t (Ref (Run IO h))) #-}
424-
toSnapMergingRunState ::
422+
-> IO (SnapMergingRun t (Ref (Run IO h))) #-}
423+
toSnapMergingRun ::
425424
(PrimMonad m, MonadMVar m)
426425
=> Ref (MR.MergingRun t m h)
427-
-> m (SnapMergingRunState t (Ref (Run m h)))
428-
toSnapMergingRunState !mr = do
426+
-> m (SnapMergingRun t (Ref (Run m h)))
427+
toSnapMergingRun !mr = do
429428
-- TODO: MR.snapshot needs to return duplicated run references, and we
430429
-- need to arrange to release them when the snapshotting is done.
431430
(numRuns, mergeDebt, mergeCredits, state) <- MR.snapshot mr
@@ -680,47 +679,46 @@ fromSnapLevels hfs hbio uc conf resolve reg dir (SnapLevels levels) =
680679
LevelNo
681680
-> SnapIncomingRun (Ref (Run m h))
682681
-> m (IncomingRun m h)
683-
fromSnapIncomingRun _ln (SnapSingleRun run) =
682+
fromSnapIncomingRun _ln (SnapIncomingSingleRun run) =
684683
newIncomingSingleRun run
685684

686-
fromSnapIncomingRun ln (SnapMergingRun mergePolicy nominalDebt
687-
nominalCredits smrs) =
685+
fromSnapIncomingRun ln (SnapIncomingMergingRun mergePolicy nominalDebt
686+
nominalCredits smrs) =
688687
bracket
689-
(fromSnapMergingRunState hfs hbio uc resolve dir smrs)
688+
(fromSnapMergingRun hfs hbio uc resolve dir smrs)
690689
releaseRef $ \mr -> do
691690

692691
ir <- newIncomingMergingRun mergePolicy nominalDebt mr
693692
-- This will set the correct nominal credits, but it will not do any
694-
-- more merging work because fromSnapMergingRunState already supplies
693+
-- more merging work because fromSnapMergingRun already supplies
695694
-- all the merging credits already.
696695
supplyCreditsIncomingRun conf ln ir nominalCredits
697696
return ir
698697

699-
{-# SPECIALISE fromSnapMergingRunState ::
698+
{-# SPECIALISE fromSnapMergingRun ::
700699
MR.IsMergeType t
701700
=> HasFS IO h
702701
-> HasBlockIO IO h
703702
-> UniqCounter IO
704703
-> ResolveSerialisedValue
705704
-> ActiveDir
706-
-> SnapMergingRunState t (Ref (Run IO h))
705+
-> SnapMergingRun t (Ref (Run IO h))
707706
-> IO (Ref (MR.MergingRun t IO h)) #-}
708-
fromSnapMergingRunState ::
707+
fromSnapMergingRun ::
709708
(MonadMask m, MonadMVar m, MonadSTM m, MonadST m, MR.IsMergeType t)
710709
=> HasFS m h
711710
-> HasBlockIO m h
712711
-> UniqCounter m
713712
-> ResolveSerialisedValue
714713
-> ActiveDir
715-
-> SnapMergingRunState t (Ref (Run m h))
714+
-> SnapMergingRun t (Ref (Run m h))
716715
-> m (Ref (MR.MergingRun t m h))
717-
fromSnapMergingRunState _hfs _hbio _uc _resolve _dir
718-
(SnapCompletedMerge numRuns mergeDebt r) =
716+
fromSnapMergingRun _hfs _hbio _uc _resolve _dir
717+
(SnapCompletedMerge numRuns mergeDebt r) =
719718
MR.newCompleted numRuns mergeDebt r
720719

721-
fromSnapMergingRunState hfs hbio uc resolve dir
722-
(SnapOngoingMerge runParams mergeCredits
723-
rs mergeType) = do
720+
fromSnapMergingRun hfs hbio uc resolve dir
721+
(SnapOngoingMerge runParams mergeCredits rs mergeType) = do
724722
bracketOnError
725723
(do uniq <- incrUniqCounter uc
726724
let runPaths = runPath dir (uniqueToRunNumber uniq)

src/Database/LSMTree/Internal/Snapshot/Codec.hs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -560,14 +560,14 @@ instance DecodeVersioned RunNumber where
560560
-- SnapIncomingRun
561561

562562
instance Encode r => Encode (SnapIncomingRun r) where
563-
encode (SnapMergingRun mpfl nd nc smrs) =
563+
encode (SnapIncomingMergingRun mpfl nd nc smrs) =
564564
encodeListLen 5
565565
<> encodeWord 0
566566
<> encode mpfl
567567
<> encode nd
568568
<> encode nc
569569
<> encode smrs
570-
encode (SnapSingleRun x) =
570+
encode (SnapIncomingSingleRun x) =
571571
encodeListLen 2
572572
<> encodeWord 1
573573
<> encode x
@@ -577,10 +577,11 @@ instance DecodeVersioned r => DecodeVersioned (SnapIncomingRun r) where
577577
n <- decodeListLen
578578
tag <- decodeWord
579579
case (n, tag) of
580-
(5, 0) -> SnapMergingRun <$> decodeVersioned v <*> decodeVersioned v
581-
<*> decodeVersioned v <*> decodeVersioned v
582-
(2, 1) -> SnapSingleRun <$> decodeVersioned v
583-
_ -> fail ("[SnapMergingRun] Unexpected combination of list length and tag: " <> show (n, tag))
580+
(5, 0) -> SnapIncomingMergingRun
581+
<$> decodeVersioned v <*> decodeVersioned v
582+
<*> decodeVersioned v <*> decodeVersioned v
583+
(2, 1) -> SnapIncomingSingleRun <$> decodeVersioned v
584+
_ -> fail ("[SnapIncomingRun] Unexpected combination of list length and tag: " <> show (n, tag))
584585

585586
-- NumRuns
586587

@@ -604,9 +605,9 @@ instance DecodeVersioned MergePolicyForLevel where
604605
1 -> pure LevelLevelling
605606
_ -> fail ("[MergePolicyForLevel] Unexpected tag: " <> show tag)
606607

607-
-- SnapMergingRunState
608+
-- SnapMergingRun
608609

609-
instance (Encode t, Encode r) => Encode (SnapMergingRunState t r) where
610+
instance (Encode t, Encode r) => Encode (SnapMergingRun t r) where
610611
encode (SnapCompletedMerge nr md r) =
611612
encodeListLen 4
612613
<> encodeWord 0
@@ -621,7 +622,7 @@ instance (Encode t, Encode r) => Encode (SnapMergingRunState t r) where
621622
<> encode rs
622623
<> encode mt
623624

624-
instance (DecodeVersioned t, DecodeVersioned r) => DecodeVersioned (SnapMergingRunState t r) where
625+
instance (DecodeVersioned t, DecodeVersioned r) => DecodeVersioned (SnapMergingRun t r) where
625626
decodeVersioned v@V0 = do
626627
n <- decodeListLen
627628
tag <- decodeWord
@@ -631,7 +632,7 @@ instance (DecodeVersioned t, DecodeVersioned r) => DecodeVersioned (SnapMergingR
631632
<*> decodeVersioned v
632633
(5, 1) -> SnapOngoingMerge <$> decodeVersioned v <*> decodeVersioned v
633634
<*> decodeVersioned v <*> decodeVersioned v
634-
_ -> fail ("[SnapMergingRunState] Unexpected combination of list length and tag: " <> show (n, tag))
635+
_ -> fail ("[SnapMergingRun] Unexpected combination of list length and tag: " <> show (n, tag))
635636

636637
-- NominalDebt, NominalCredits, MergeDebt and MergeCredits
637638

test/Test/Database/LSMTree/Internal/Snapshot/Codec.hs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ testAll test = [
177177
, test (Proxy @RunBloomFilterAlloc)
178178
, test (Proxy @IndexType)
179179
, test (Proxy @RunParams)
180-
, test (Proxy @(SnapMergingRunState LevelMergeType SnapshotRun))
180+
, test (Proxy @(SnapMergingRun LevelMergeType SnapshotRun))
181181
, test (Proxy @MergeDebt)
182182
, test (Proxy @MergeCredits)
183183
, test (Proxy @NominalDebt)
@@ -298,22 +298,22 @@ deriving newtype instance Arbitrary RunNumber
298298

299299
instance Arbitrary r => Arbitrary (SnapIncomingRun r) where
300300
arbitrary = oneof [
301-
SnapMergingRun <$> arbitrary <*> arbitrary
302-
<*> arbitrary <*> arbitrary
303-
, SnapSingleRun <$> arbitrary
301+
SnapIncomingMergingRun <$> arbitrary <*> arbitrary
302+
<*> arbitrary <*> arbitrary
303+
, SnapIncomingSingleRun <$> arbitrary
304304
]
305-
shrink (SnapMergingRun a b c d) =
306-
[ SnapMergingRun a' b' c' d'
305+
shrink (SnapIncomingMergingRun a b c d) =
306+
[ SnapIncomingMergingRun a' b' c' d'
307307
| (a', b', c', d') <- shrink (a, b, c, d) ]
308-
shrink (SnapSingleRun a) = SnapSingleRun <$> shrink a
308+
shrink (SnapIncomingSingleRun a) = SnapIncomingSingleRun <$> shrink a
309309

310310
deriving newtype instance Arbitrary NumRuns
311311

312312
instance Arbitrary MergePolicyForLevel where
313313
arbitrary = elements [LevelTiering, LevelLevelling]
314314
shrink _ = []
315315

316-
instance (Arbitrary t, Arbitrary r) => Arbitrary (SnapMergingRunState t r) where
316+
instance (Arbitrary t, Arbitrary r) => Arbitrary (SnapMergingRun t r) where
317317
arbitrary = oneof [
318318
SnapCompletedMerge <$> arbitrary <*> arbitrary <*> arbitrary
319319
, SnapOngoingMerge <$> arbitrary <*> arbitrary
@@ -370,7 +370,7 @@ deriving stock instance Show SnapshotRun
370370
deriving stock instance Show r => Show (SnapLevels r)
371371
deriving stock instance Show r => Show (SnapLevel r)
372372
deriving stock instance Show r => Show (SnapIncomingRun r)
373-
deriving stock instance (Show t, Show r) => Show (SnapMergingRunState t r)
373+
deriving stock instance (Show t, Show r) => Show (SnapMergingRun t r)
374374

375375
deriving stock instance Show r => Show (SnapMergingTree r)
376376
deriving stock instance Show r => Show (SnapMergingTreeState r)

test/Test/Database/LSMTree/Internal/Snapshot/Codec/Golden.hs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -236,21 +236,22 @@ enumerateSnapIncomingRun =
236236
let
237237
inSnaps =
238238
[ (fuseAnnotations ["R1", a, b],
239-
SnapMergingRun policy nominalDebt nominalCredits sState)
239+
SnapIncomingMergingRun policy nominalDebt nominalCredits sState)
240240
| (a, policy ) <- [("P0", LevelTiering), ("P1", LevelLevelling)]
241241
, nominalDebt <- NominalDebt <$> [ magicNumber2 ]
242242
, nominalCredits <- NominalCredits <$> [ magicNumber1 ]
243-
, (b, sState ) <- enumerateSnapMergingRunState enumerateLevelMergeType
243+
, (b, sState ) <- enumerateSnapMergingRun enumerateLevelMergeType
244244
]
245245
in fold
246-
[ [(fuseAnnotations $ "R0" : replicate 4 blank, SnapSingleRun enumerateOpenRunInfo)]
246+
[ [(fuseAnnotations $ "R0" : replicate 4 blank,
247+
SnapIncomingSingleRun enumerateOpenRunInfo)]
247248
, inSnaps
248249
]
249250

250-
enumerateSnapMergingRunState ::
251+
enumerateSnapMergingRun ::
251252
[(ComponentAnnotation, t)]
252-
-> [(ComponentAnnotation, SnapMergingRunState t SnapshotRun)]
253-
enumerateSnapMergingRunState mTypes =
253+
-> [(ComponentAnnotation, SnapMergingRun t SnapshotRun)]
254+
enumerateSnapMergingRun mTypes =
254255
[ (fuseAnnotations ["C0", blank, blank],
255256
SnapCompletedMerge numRuns mergeDebt enumerateOpenRunInfo)
256257
| numRuns <- NumRuns <$> [ magicNumber1 ]
@@ -302,7 +303,7 @@ enumerateSnapMergingTreeState expandable =
302303

303304
enumerateSnapOngoingTreeMerge :: [(ComponentAnnotation, SnapMergingTreeState SnapshotRun)]
304305
enumerateSnapOngoingTreeMerge = do
305-
(tagX, valX) <- enumerateSnapMergingRunState enumerateTreeMergeType
306+
(tagX, valX) <- enumerateSnapMergingRun enumerateTreeMergeType
306307
let value = SnapOngoingTreeMerge valX
307308
pure ( fuseAnnotations $ ["G0", blank, tagX] <> replicate 5 blank, value )
308309

@@ -328,7 +329,7 @@ enumerateSnapPreExistingRun :: [(ComponentAnnotation, SnapPreExistingRun Snapsho
328329
enumerateSnapPreExistingRun =
329330
( fuseAnnotations ("E0" : replicate 3 blank), SnapPreExistingRun enumerateOpenRunInfo)
330331
: [ (fuseAnnotations ["E1", tagX], SnapPreExistingMergingRun valX)
331-
| (tagX, valX) <- enumerateSnapMergingRunState enumerateLevelMergeType
332+
| (tagX, valX) <- enumerateSnapMergingRun enumerateLevelMergeType
332333
]
333334

334335
enumerateTreeMergeType :: [(ComponentAnnotation, MR.TreeMergeType)]

0 commit comments

Comments
 (0)