@@ -673,7 +673,7 @@ addRunToLevels tr conf@TableConfig{..} resolve hfs hbio root uc r0 reg levels =
673
673
OneShot -> do
674
674
let ! required = MR. Credits (unNumEntries (V. foldMap' Run. size rs))
675
675
let ! thresh = creditThresholdForLevel conf ln
676
- MR. supplyCredits required thresh mr
676
+ _leftoverCredits <- MR. supplyCredits mr thresh required
677
677
-- This ensures the merge is really completed. However, we don't
678
678
-- release the merge yet and only briefly inspect the resulting run.
679
679
bracket (MR. expectCompleted mr) releaseRef $ \ r ->
@@ -802,7 +802,8 @@ supplyCredits conf c levels =
802
802
Merging mp mr -> do
803
803
let ! c' = scaleCreditsForMerge mp mr c
804
804
let ! thresh = creditThresholdForLevel conf ln
805
- MR. supplyCredits c' thresh mr
805
+ _leftoverCredits <- MR. supplyCredits mr thresh c'
806
+ return ()
806
807
807
808
-- | Scale a number of credits to a number of merge steps to be performed, based
808
809
-- on the merging run.
@@ -818,7 +819,7 @@ scaleCreditsForMerge LevelTiering _ (Credits c) =
818
819
-- runs come in).
819
820
MR. Credits (c * (1 + 4 ))
820
821
821
- scaleCreditsForMerge LevelLevelling ( DeRef mr) (Credits c) =
822
+ scaleCreditsForMerge LevelLevelling mr (Credits c) =
822
823
-- A levelling merge has 1 input run and one resident run, which is (up
823
824
-- to) 4x bigger than the others. It needs to be completed before
824
825
-- another run comes in.
@@ -828,7 +829,7 @@ scaleCreditsForMerge LevelLevelling (DeRef mr) (Credits c) =
828
829
-- worst-case upper bound by looking at the sizes of the input runs.
829
830
-- As as result, merge work would/could be more evenly distributed over
830
831
-- time when the resident run is smaller than the worst case.
831
- let NumRuns n = MR. mergeNumRuns mr
832
+ let NumRuns n = MR. numRuns mr
832
833
-- same as division rounding up: ceiling (c * n / 4)
833
834
in MR. Credits ((c * n + 3 ) `div` 4 )
834
835
@@ -837,4 +838,4 @@ scaleCreditsForMerge LevelLevelling (DeRef mr) (Credits c) =
837
838
creditThresholdForLevel :: TableConfig -> LevelNo -> MR. CreditThreshold
838
839
creditThresholdForLevel conf (LevelNo _i) =
839
840
let AllocNumEntries (NumEntries x) = confWriteBufferAlloc conf
840
- in MR. CreditThreshold x
841
+ in MR. CreditThreshold ( MR. Credits x)
0 commit comments