@@ -746,7 +746,7 @@ addRunToLevels tr conf@TableConfig{..} resolve hfs hbio root uc r0 reg levels ul
746
746
OneShot -> do
747
747
let ! required = MR. Credits (unNumEntries (V. foldMap' Run. size rs))
748
748
let ! thresh = creditThresholdForLevel conf ln
749
- MR. supplyCredits required thresh mr
749
+ _leftoverCredits <- MR. supplyCredits mr thresh required
750
750
-- This ensures the merge is really completed. However, we don't
751
751
-- release the merge yet and only briefly inspect the resulting run.
752
752
bracket (MR. expectCompleted mr) releaseRef $ \ r ->
@@ -877,7 +877,8 @@ supplyCredits conf c levels =
877
877
Merging mp mr -> do
878
878
let ! c' = scaleCreditsForMerge mp mr c
879
879
let ! thresh = creditThresholdForLevel conf ln
880
- MR. supplyCredits c' thresh mr
880
+ _leftoverCredits <- MR. supplyCredits mr thresh c'
881
+ return ()
881
882
882
883
-- | Scale a number of credits to a number of merge steps to be performed, based
883
884
-- on the merging run.
@@ -893,7 +894,7 @@ scaleCreditsForMerge LevelTiering _ (Credits c) =
893
894
-- runs come in).
894
895
MR. Credits (c * (1 + 4 ))
895
896
896
- scaleCreditsForMerge LevelLevelling ( DeRef mr) (Credits c) =
897
+ scaleCreditsForMerge LevelLevelling mr (Credits c) =
897
898
-- A levelling merge has 1 input run and one resident run, which is (up
898
899
-- to) 4x bigger than the others. It needs to be completed before
899
900
-- another run comes in.
@@ -903,7 +904,7 @@ scaleCreditsForMerge LevelLevelling (DeRef mr) (Credits c) =
903
904
-- worst-case upper bound by looking at the sizes of the input runs.
904
905
-- As as result, merge work would/could be more evenly distributed over
905
906
-- time when the resident run is smaller than the worst case.
906
- let NumRuns n = MR. mergeNumRuns mr
907
+ let NumRuns n = MR. numRuns mr
907
908
-- same as division rounding up: ceiling (c * n / 4)
908
909
in MR. Credits ((c * n + 3 ) `div` 4 )
909
910
@@ -912,4 +913,4 @@ scaleCreditsForMerge LevelLevelling (DeRef mr) (Credits c) =
912
913
creditThresholdForLevel :: TableConfig -> LevelNo -> MR. CreditThreshold
913
914
creditThresholdForLevel conf (LevelNo _i) =
914
915
let AllocNumEntries (NumEntries x) = confWriteBufferAlloc conf
915
- in MR. CreditThreshold x
916
+ in MR. CreditThreshold ( MR. Credits x)
0 commit comments