Skip to content

Commit 58119ff

Browse files
committed
Fix a small bug in the merge schedule
A small bug related to the merge schedule and union levels was unearted after recent changes to key generators for the state machine tests. ``` ❯ cabal run lsm-tree-test -- --quickcheck-replay="(SMGen 13447116701882578385 16048829213438376903,35)" -p '$NF=="propLockstep_RealImpl_MockFS_IO"' lsm-tree Test.Database.LSMTree.StateMachine propLockstep_RealImpl_MockFS_IO: FAIL (28.54s) *** Failed! Assertion failed (after 1 test and 196 shrinks): ... 1 out of 1 tests failed (28.54s) ``` The bug was that the last level was always removing `Delete` entries even if there was union level. This is now fixed.
1 parent 2918e32 commit 58119ff

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/Database/LSMTree/Internal/MergeSchedule.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,7 @@ addRunToLevels tr conf@TableConfig{..} resolve hfs hbio root salt uc r0 reg leve
673673
traceWith tr $ AtLevel ln TraceAddLevel
674674
-- Make a new level
675675
let policyForLevel = mergePolicyForLevel confMergePolicy ln V.empty ul
676-
ir <- newMerge policyForLevel MR.MergeLastLevel ln rs
676+
ir <- newMerge policyForLevel (mergeTypeForLevel V.empty ul) ln rs
677677
pure $! V.singleton $ Level ir V.empty
678678
go !ln rs' (V.uncons -> Just (Level ir rs, ls)) = do
679679
r <- expectCompletedMerge ln ir
@@ -714,7 +714,7 @@ addRunToLevels tr conf@TableConfig{..} resolve hfs hbio root salt uc r0 reg leve
714714
-- Otherwise we start merging the incoming runs into the run.
715715
LevelLevelling -> do
716716
assert (V.null rs && V.null ls) $ pure ()
717-
ir' <- newMerge LevelLevelling MR.MergeLastLevel ln (rs' `V.snoc` r)
717+
ir' <- newMerge LevelLevelling (mergeTypeForLevel ls ul) ln (rs' `V.snoc` r)
718718
pure $! Level ir' V.empty `V.cons` V.empty
719719

720720
-- Releases the incoming run.

0 commit comments

Comments
 (0)