Skip to content

Commit 0893b08

Browse files
committed
Remove unused NumRuns from MergingRun
We were storing it but never actually using it. Changes the golden files for snapshots because the NumRuns was stored there, and now removed.
1 parent 2257d92 commit 0893b08

File tree

32 files changed

+40
-88
lines changed

32 files changed

+40
-88
lines changed

src-extras/Database/LSMTree/Extras/MergingRunData.hs

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ unsafeCreateMergingRun ::
7575
-> SerialisedMergingRunData t
7676
-> IO (Ref (MergingRun t IO h))
7777
unsafeCreateMergingRun hfs hbio resolve indexType path counter = \case
78-
CompletedMergeData _ numRuns rd -> do
78+
CompletedMergeData _ rd -> do
7979
withRun hfs hbio indexType path counter rd $ \run -> do
8080
-- slightly hacky, generally it's larger
8181
let totalDebt = MR.numEntriesToMergeDebt (Run.size run)
82-
MR.newCompleted numRuns totalDebt run
82+
MR.newCompleted totalDebt run
8383

8484
OngoingMergeData mergeType rds -> do
8585
withRuns hfs hbio indexType path counter (toRunData <$> rds)
@@ -103,21 +103,19 @@ unsafeCreateMergingRun hfs hbio resolve indexType path counter = \case
103103
-- TODO: Generate merge credits and supply them in 'unsafeCreateMergingRun',
104104
-- similarly to how @ScheduledMergesTest@ does it.
105105
data MergingRunData t k v b =
106-
CompletedMergeData t MR.NumRuns (RunData k v b)
106+
CompletedMergeData t (RunData k v b)
107107
| OngoingMergeData t [NonEmptyRunData k v b] -- ^ at least 2 inputs
108108
deriving stock (Show, Eq)
109109

110110
mergingRunDataMergeType :: MergingRunData t k v b -> t
111111
mergingRunDataMergeType = \case
112-
CompletedMergeData mt _ _ -> mt
113-
OngoingMergeData mt _ -> mt
112+
CompletedMergeData mt _ -> mt
113+
OngoingMergeData mt _ -> mt
114114

115115
-- | See @mergeInvariant@ in the prototype.
116116
mergingRunDataInvariant :: MergingRunData t k v b -> Either String ()
117117
mergingRunDataInvariant = \case
118-
CompletedMergeData _ (MR.NumRuns n) _ ->
119-
assertI "completed merges are non-trivial (at least two inputs)" $
120-
n >= 2
118+
CompletedMergeData _ _ -> Right ()
121119
OngoingMergeData _ rds -> do
122120
assertI "ongoing merges are non-trivial (at least two inputs)" $
123121
length rds >= 2
@@ -130,8 +128,8 @@ mapMergingRunData ::
130128
=> (k -> k') -> (v -> v') -> (b -> b')
131129
-> MergingRunData t k v b -> MergingRunData t k' v' b'
132130
mapMergingRunData f g h = \case
133-
CompletedMergeData t n r ->
134-
CompletedMergeData t n $ mapRunData f g h r
131+
CompletedMergeData t r ->
132+
CompletedMergeData t $ mapRunData f g h r
135133
OngoingMergeData t rs ->
136134
OngoingMergeData t $ map (mapNonEmptyRunData f g h) rs
137135

@@ -150,7 +148,7 @@ serialiseMergingRunData =
150148

151149
labelMergingRunData ::
152150
Show t => SerialisedMergingRunData t -> Property -> Property
153-
labelMergingRunData (CompletedMergeData mt _ rd) =
151+
labelMergingRunData (CompletedMergeData mt rd) =
154152
tabulate "merging run state" ["CompletedMerge"]
155153
. tabulate "merge type" [show mt]
156154
. labelRunData rd
@@ -176,9 +174,8 @@ genMergingRunData genMergeType genKey genVal genBlob =
176174
QC.oneof
177175
[ do
178176
mt <- genMergeType
179-
numRuns <- MR.NumRuns <$> QC.chooseInt (2, 8)
180177
rd <- genRunData genKey genVal genBlob
181-
pure (CompletedMergeData mt numRuns rd)
178+
pure (CompletedMergeData mt rd)
182179
, do
183180
s <- QC.getSize
184181
mt <- genMergeType
@@ -202,13 +199,9 @@ shrinkMergingRunData ::
202199
-> MergingRunData t k v b
203200
-> [MergingRunData t k v b]
204201
shrinkMergingRunData shrinkKey shrinkVal shrinkBlob = \case
205-
CompletedMergeData mt numRuns rd ->
206-
[ CompletedMergeData mt numRuns' rd'
207-
| (numRuns', rd') <-
208-
liftShrink2
209-
(fmap MR.NumRuns . filter (>= 2) . shrink . MR.unNumRuns)
210-
(shrinkRunData shrinkKey shrinkVal shrinkBlob)
211-
(numRuns, rd)
202+
CompletedMergeData mt rd ->
203+
[ CompletedMergeData mt rd'
204+
| rd' <- shrinkRunData shrinkKey shrinkVal shrinkBlob rd
212205
]
213206
OngoingMergeData mt rds ->
214207
[ OngoingMergeData mt rds'

src-extras/Database/LSMTree/Extras/NoThunks.hs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -361,9 +361,6 @@ deriving anyclass instance ( Typeable m, Typeable (PrimState m), Typeable h
361361
, NoThunks t
362362
) => NoThunks (MergingRunState t m h)
363363

364-
deriving stock instance Generic NumRuns
365-
deriving anyclass instance NoThunks NumRuns
366-
367364
deriving stock instance Generic MergeDebt
368365
deriving anyclass instance NoThunks MergeDebt
369366

src/Database/LSMTree/Internal/MergingRun.hs

Lines changed: 11 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
module Database.LSMTree.Internal.MergingRun (
66
-- * Merging run
77
MergingRun
8-
, NumRuns (..)
98
, RunParams (..)
109
, new
1110
, newCompleted
@@ -14,7 +13,6 @@ module Database.LSMTree.Internal.MergingRun (
1413
, supplyCreditsAbsolute
1514
, expectCompleted
1615
, snapshot
17-
, numRuns
1816
, totalMergeDebt
1917
, mergeType
2018

@@ -74,12 +72,11 @@ import System.FS.API (HasFS)
7472
import System.FS.BlockIO.API (HasBlockIO)
7573

7674
data MergingRun t m h = MergingRun {
77-
mergeNumRuns :: !NumRuns
7875

7976
-- | The total merge debt.
8077
--
8178
-- This corresponds to the sum of the number of entries in the input runs.
82-
, mergeDebt :: !MergeDebt
79+
mergeDebt :: !MergeDebt
8380

8481
-- See $credittracking
8582

@@ -106,10 +103,6 @@ data MergingRun t m h = MergingRun {
106103
instance RefCounted m (MergingRun t m h) where
107104
getRefCounter = mergeRefCounter
108105

109-
newtype NumRuns = NumRuns { unNumRuns :: Int }
110-
deriving stock (Show, Eq)
111-
deriving newtype NFData
112-
113106
data MergingRunState t m h =
114107
CompletedMerge
115108
!(Ref (Run m h))
@@ -159,18 +152,15 @@ new hfs hbio resolve runParams ty runPaths inputRuns =
159152
runs <- V.mapM (\r -> withRollback reg (dupRef r) releaseRef) inputRuns
160153
merge <- fromMaybe (error "newMerge: merges can not be empty")
161154
<$> Merge.new hfs hbio runParams ty resolve runPaths runs
162-
let numInputRuns = NumRuns $ V.length runs
163155
let mergeDebt = numEntriesToMergeDebt (V.foldMap' Run.size runs)
164156
unsafeNew
165-
numInputRuns
166157
mergeDebt
167158
(SpentCredits 0)
168159
MergeMaybeCompleted
169160
(OngoingMerge runs merge)
170161

171162
{-# SPECIALISE newCompleted ::
172-
NumRuns
173-
-> MergeDebt
163+
MergeDebt
174164
-> Ref (Run IO h)
175165
-> IO (Ref (MergingRun t IO h)) #-}
176166
-- | Create a merging run that is already in the completed state, returning a
@@ -182,16 +172,13 @@ new hfs hbio resolve runParams ty runPaths inputRuns =
182172
-- failing after internal resources have already been created.
183173
newCompleted ::
184174
(MonadMVar m, MonadMask m, MonadSTM m, MonadST m)
185-
=> NumRuns -- ^ Since there are no longer any input runs, we need to be
186-
-- told how many there were.
187-
-> MergeDebt -- ^ Since there are no longer any input runs, we need to be
175+
=> MergeDebt -- ^ Since there are no longer any input runs, we need to be
188176
-- told what the merge debt was.
189177
-> Ref (Run m h)
190178
-> m (Ref (MergingRun t m h))
191-
newCompleted numInputRuns mergeDebt inputRun = do
179+
newCompleted mergeDebt inputRun = do
192180
bracketOnError (dupRef inputRun) releaseRef $ \run ->
193181
unsafeNew
194-
numInputRuns
195182
mergeDebt
196183
(SpentCredits (mergeDebtAsCredits mergeDebt)) -- since it is completed
197184
MergeKnownCompleted
@@ -200,26 +187,24 @@ newCompleted numInputRuns mergeDebt inputRun = do
200187
{-# INLINE unsafeNew #-}
201188
unsafeNew ::
202189
(MonadMVar m, MonadMask m, MonadSTM m, MonadST m)
203-
=> NumRuns
204-
-> MergeDebt
190+
=> MergeDebt
205191
-> SpentCredits
206192
-> MergeKnownCompleted
207193
-> MergingRunState t m h
208194
-> m (Ref (MergingRun t m h))
209-
unsafeNew _ (MergeDebt mergeDebt) _ _ _
195+
unsafeNew (MergeDebt mergeDebt) _ _ _
210196
| SpentCredits mergeDebt > maxBound
211197
= throwIO (ErrorCall "MergingRun.new: run size exceeds maximum of 2^40")
212198

213-
unsafeNew mergeNumRuns mergeDebt (SpentCredits spentCredits)
199+
unsafeNew mergeDebt (SpentCredits spentCredits)
214200
knownCompleted state = do
215201
let !credits = CreditsPair (SpentCredits spentCredits) (UnspentCredits 0)
216202
mergeCreditsVar <- CreditsVar <$> newPrimVar credits
217203
mergeKnownCompleted <- newMutVar knownCompleted
218204
mergeState <- newMVar $! state
219205
newRef (finalise mergeState) $ \mergeRefCounter ->
220206
MergingRun {
221-
mergeNumRuns
222-
, mergeDebt
207+
mergeDebt
223208
, mergeCreditsVar
224209
, mergeKnownCompleted
225210
, mergeState
@@ -265,26 +250,21 @@ duplicateRuns (DeRef mr) =
265250
--
266251
{-# SPECIALISE snapshot ::
267252
Ref (MergingRun t IO h)
268-
-> IO (NumRuns,
269-
MergeDebt,
253+
-> IO (MergeDebt,
270254
MergeCredits,
271255
MergingRunState t IO h) #-}
272256
snapshot ::
273257
(PrimMonad m, MonadMVar m)
274258
=> Ref (MergingRun t m h)
275-
-> m (NumRuns,
276-
MergeDebt,
259+
-> m (MergeDebt,
277260
MergeCredits,
278261
MergingRunState t m h)
279262
snapshot (DeRef MergingRun {..}) = do
280263
state <- readMVar mergeState
281264
(SpentCredits spent,
282265
UnspentCredits unspent) <- atomicReadCredits mergeCreditsVar
283266
let supplied = spent + unspent
284-
return (mergeNumRuns, mergeDebt, supplied, state)
285-
286-
numRuns :: Ref (MergingRun t m h) -> NumRuns
287-
numRuns (DeRef MergingRun {mergeNumRuns}) = mergeNumRuns
267+
return (mergeDebt, supplied, state)
288268

289269
totalMergeDebt :: Ref (MergingRun t m h) -> MergeDebt
290270
totalMergeDebt (DeRef MergingRun {mergeDebt}) = mergeDebt

src/Database/LSMTree/Internal/Snapshot.hs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ import Database.LSMTree.Internal.IncomingRun
5353
import Database.LSMTree.Internal.Lookup (ResolveSerialisedValue)
5454
import qualified Database.LSMTree.Internal.Merge as Merge
5555
import Database.LSMTree.Internal.MergeSchedule
56-
import Database.LSMTree.Internal.MergingRun (NumRuns (..))
5756
import qualified Database.LSMTree.Internal.MergingRun as MR
5857
import qualified Database.LSMTree.Internal.MergingTree as MT
5958
import Database.LSMTree.Internal.Paths (ActiveDir (..), ForBlob (..),
@@ -192,12 +191,12 @@ newtype SuppliedCredits = SuppliedCredits { getSuppliedCredits :: Int }
192191
deriving newtype NFData
193192

194193
data SnapMergingRun t r =
195-
SnapCompletedMerge !NumRuns !MergeDebt !r
194+
SnapCompletedMerge !MergeDebt !r
196195
| SnapOngoingMerge !RunParams !MergeCredits !(V.Vector r) !t
197196
deriving stock (Eq, Functor, Foldable, Traversable)
198197

199198
instance (NFData t, NFData r) => NFData (SnapMergingRun t r) where
200-
rnf (SnapCompletedMerge a b c) = rnf a `seq` rnf b `seq` rnf c
199+
rnf (SnapCompletedMerge a b) = rnf a `seq` rnf b
201200
rnf (SnapOngoingMerge a b c d) = rnf a `seq` rnf b `seq` rnf c `seq` rnf d
202201

203202
{-------------------------------------------------------------------------------
@@ -428,10 +427,10 @@ toSnapMergingRun ::
428427
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.
431-
(numRuns, mergeDebt, mergeCredits, state) <- MR.snapshot mr
430+
( mergeDebt, mergeCredits, state) <- MR.snapshot mr
432431
case state of
433432
MR.CompletedMerge r ->
434-
pure $! SnapCompletedMerge numRuns mergeDebt r
433+
pure $! SnapCompletedMerge mergeDebt r
435434

436435
MR.OngoingMerge rs m ->
437436
pure $! SnapOngoingMerge runParams mergeCredits rs mergeType
@@ -714,9 +713,8 @@ fromSnapMergingRun ::
714713
-> ActiveDir
715714
-> SnapMergingRun t (Ref (Run m h))
716715
-> m (Ref (MR.MergingRun t m h))
717-
fromSnapMergingRun _hfs _hbio _uc _resolve _dir
718-
(SnapCompletedMerge numRuns mergeDebt r) =
719-
MR.newCompleted numRuns mergeDebt r
716+
fromSnapMergingRun _ _ _ _ _ (SnapCompletedMerge mergeDebt r) =
717+
MR.newCompleted mergeDebt r
720718

721719
fromSnapMergingRun hfs hbio uc resolve dir
722720
(SnapOngoingMerge runParams mergeCredits rs mergeType) = do

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

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import Database.LSMTree.Internal.CRC32C
3232
import qualified Database.LSMTree.Internal.CRC32C as FS
3333
import Database.LSMTree.Internal.Entry
3434
import Database.LSMTree.Internal.MergeSchedule
35-
import Database.LSMTree.Internal.MergingRun (NumRuns (..))
3635
import qualified Database.LSMTree.Internal.MergingRun as MR
3736
import Database.LSMTree.Internal.RunBuilder (IndexType (..),
3837
RunBloomFilterAlloc (..), RunDataCaching (..),
@@ -572,14 +571,6 @@ instance DecodeVersioned r => DecodeVersioned (SnapIncomingRun r) where
572571
(2, 1) -> SnapIncomingSingleRun <$> decodeVersioned v
573572
_ -> fail ("[SnapIncomingRun] Unexpected combination of list length and tag: " <> show (n, tag))
574573

575-
-- NumRuns
576-
577-
instance Encode NumRuns where
578-
encode (NumRuns x) = encodeInt x
579-
580-
instance DecodeVersioned NumRuns where
581-
decodeVersioned V0 = NumRuns <$> decodeInt
582-
583574
-- MergePolicyForLevel
584575

585576
instance Encode MergePolicyForLevel where
@@ -597,10 +588,9 @@ instance DecodeVersioned MergePolicyForLevel where
597588
-- SnapMergingRun
598589

599590
instance (Encode t, Encode r) => Encode (SnapMergingRun t r) where
600-
encode (SnapCompletedMerge nr md r) =
601-
encodeListLen 4
591+
encode (SnapCompletedMerge md r) =
592+
encodeListLen 3
602593
<> encodeWord 0
603-
<> encode nr
604594
<> encode md
605595
<> encode r
606596
encode (SnapOngoingMerge rp mc rs mt) =
@@ -616,8 +606,7 @@ instance (DecodeVersioned t, DecodeVersioned r) => DecodeVersioned (SnapMergingR
616606
n <- decodeListLen
617607
tag <- decodeWord
618608
case (n, tag) of
619-
(4, 0) -> SnapCompletedMerge <$> decodeVersioned v
620-
<*> decodeVersioned v
609+
(3, 0) -> SnapCompletedMerge <$> decodeVersioned v
621610
<*> decodeVersioned v
622611
(5, 1) -> SnapOngoingMerge <$> decodeVersioned v <*> decodeVersioned v
623612
<*> decodeVersioned v <*> decodeVersioned v

test/Test/Database/LSMTree/Internal/MergingTree.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ modelFoldMergingTree = goMergingTree
179179

180180
goMergingRun :: IsMergeType t => SerialisedMergingRunData t -> Map SerialisedKey SerialisedEntry
181181
goMergingRun = \case
182-
CompletedMergeData _ _ r -> unRunData r
182+
CompletedMergeData _ r -> unRunData r
183183
OngoingMergeData mt rs -> modelMerge mt (map (unRunData . toRunData) rs)
184184

185185
modelMerge :: (Ord k, IsMergeType t) => t -> [Map k SerialisedEntry] -> Map k SerialisedEntry

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@ testAll test = [
172172
, test (Proxy @(V.Vector SnapshotRun))
173173
, test (Proxy @RunNumber)
174174
, test (Proxy @(SnapIncomingRun SnapshotRun))
175-
, test (Proxy @NumRuns)
176175
, test (Proxy @MergePolicyForLevel)
177176
, test (Proxy @RunDataCaching)
178177
, test (Proxy @RunBloomFilterAlloc)
@@ -320,21 +319,19 @@ instance Arbitrary r => Arbitrary (SnapIncomingRun r) where
320319
| (a', b', c', d') <- shrink (a, b, c, d) ]
321320
shrink (SnapIncomingSingleRun a) = SnapIncomingSingleRun <$> shrink a
322321

323-
deriving newtype instance Arbitrary NumRuns
324-
325322
instance Arbitrary MergePolicyForLevel where
326323
arbitrary = elements [LevelTiering, LevelLevelling]
327324
shrink _ = []
328325

329326
instance (Arbitrary t, Arbitrary r) => Arbitrary (SnapMergingRun t r) where
330327
arbitrary = oneof [
331-
SnapCompletedMerge <$> arbitrary <*> arbitrary <*> arbitrary
328+
SnapCompletedMerge <$> arbitrary <*> arbitrary
332329
, SnapOngoingMerge <$> arbitrary <*> arbitrary
333330
<*> arbitraryShortVector <*> arbitrary
334331
]
335-
shrink (SnapCompletedMerge a b c) =
336-
[ SnapCompletedMerge a' b' c'
337-
| (a', b', c') <- shrink (a, b, c) ]
332+
shrink (SnapCompletedMerge a b) =
333+
[ SnapCompletedMerge a' b'
334+
| (a', b') <- shrink (a, b) ]
338335
shrink (SnapOngoingMerge a b c d) =
339336
[ SnapOngoingMerge a' b' c' d'
340337
| (a', b', c', d') <- shrink (a, b, c, d) ]

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import Database.LSMTree.Internal.Config (FencePointerIndex (..),
1818
import Database.LSMTree.Internal.MergeSchedule
1919
(MergePolicyForLevel (..), NominalCredits (..),
2020
NominalDebt (..))
21-
import Database.LSMTree.Internal.MergingRun (NumRuns (..))
2221
import qualified Database.LSMTree.Internal.MergingRun as MR
2322
import Database.LSMTree.Internal.RunBuilder (IndexType (..),
2423
RunBloomFilterAlloc (..), RunDataCaching (..))
@@ -255,9 +254,8 @@ enumerateSnapMergingRun ::
255254
-> [(ComponentAnnotation, SnapMergingRun t SnapshotRun)]
256255
enumerateSnapMergingRun mTypes =
257256
[ (fuseAnnotations ["C0", blank, blank],
258-
SnapCompletedMerge numRuns mergeDebt enumerateOpenRunInfo)
259-
| numRuns <- NumRuns <$> [ magicNumber1 ]
260-
, mergeDebt <- (MR.MergeDebt. MR.MergeCredits) <$> [ magicNumber2 ]
257+
SnapCompletedMerge mergeDebt enumerateOpenRunInfo)
258+
| mergeDebt <- (MR.MergeDebt. MR.MergeCredits) <$> [ magicNumber2 ]
261259
]
262260
++ [ (fuseAnnotations ["C1", a, b],
263261
SnapOngoingMerge runParams mergeCredits runVec mType)

0 commit comments

Comments
 (0)