@@ -746,7 +746,7 @@ addRunToLevels tr conf@TableConfig{..} resolve hfs hbio root uc r0 reg levels ul
746746 OneShot -> do
747747 let ! required = MR. Credits (unNumEntries (V. foldMap' Run. size rs))
748748 let ! thresh = creditThresholdForLevel conf ln
749- MR. supplyCredits required thresh mr
749+ _leftoverCredits <- MR. supplyCredits mr thresh required
750750 -- This ensures the merge is really completed. However, we don't
751751 -- release the merge yet and only briefly inspect the resulting run.
752752 bracket (MR. expectCompleted mr) releaseRef $ \ r ->
@@ -877,7 +877,8 @@ supplyCredits conf c levels =
877877 Merging mp mr -> do
878878 let ! c' = scaleCreditsForMerge mp mr c
879879 let ! thresh = creditThresholdForLevel conf ln
880- MR. supplyCredits c' thresh mr
880+ _leftoverCredits <- MR. supplyCredits mr thresh c'
881+ return ()
881882
882883-- | Scale a number of credits to a number of merge steps to be performed, based
883884-- on the merging run.
@@ -893,7 +894,7 @@ scaleCreditsForMerge LevelTiering _ (Credits c) =
893894 -- runs come in).
894895 MR. Credits (c * (1 + 4 ))
895896
896- scaleCreditsForMerge LevelLevelling ( DeRef mr) (Credits c) =
897+ scaleCreditsForMerge LevelLevelling mr (Credits c) =
897898 -- A levelling merge has 1 input run and one resident run, which is (up
898899 -- to) 4x bigger than the others. It needs to be completed before
899900 -- another run comes in.
@@ -903,7 +904,7 @@ scaleCreditsForMerge LevelLevelling (DeRef mr) (Credits c) =
903904 -- worst-case upper bound by looking at the sizes of the input runs.
904905 -- As as result, merge work would/could be more evenly distributed over
905906 -- 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
907908 -- same as division rounding up: ceiling (c * n / 4)
908909 in MR. Credits ((c * n + 3 ) `div` 4 )
909910
@@ -912,4 +913,4 @@ scaleCreditsForMerge LevelLevelling (DeRef mr) (Credits c) =
912913creditThresholdForLevel :: TableConfig -> LevelNo -> MR. CreditThreshold
913914creditThresholdForLevel conf (LevelNo _i) =
914915 let AllocNumEntries (NumEntries x) = confWriteBufferAlloc conf
915- in MR. CreditThreshold x
916+ in MR. CreditThreshold ( MR. Credits x)
0 commit comments