Skip to content

Commit 3e8d2c3

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 32be305 commit 3e8d2c3

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
@@ -666,7 +666,7 @@ addRunToLevels tr conf@TableConfig{..} resolve hfs hbio root uc r0 reg levels ul
666666
traceWith tr $ AtLevel ln TraceAddLevel
667667
-- Make a new level
668668
let policyForLevel = mergePolicyForLevel confMergePolicy ln V.empty ul
669-
ir <- newMerge policyForLevel MR.MergeLastLevel ln rs
669+
ir <- newMerge policyForLevel (mergeTypeForLevel V.empty ul) ln rs
670670
pure $! V.singleton $ Level ir V.empty
671671
go !ln rs' (V.uncons -> Just (Level ir rs, ls)) = do
672672
r <- expectCompletedMerge ln ir
@@ -707,7 +707,7 @@ addRunToLevels tr conf@TableConfig{..} resolve hfs hbio root uc r0 reg levels ul
707707
-- Otherwise we start merging the incoming runs into the run.
708708
LevelLevelling -> do
709709
assert (V.null rs && V.null ls) $ pure ()
710-
ir' <- newMerge LevelLevelling MR.MergeLastLevel ln (rs' `V.snoc` r)
710+
ir' <- newMerge LevelLevelling (mergeTypeForLevel ls ul) ln (rs' `V.snoc` r)
711711
pure $! Level ir' V.empty `V.cons` V.empty
712712

713713
-- Releases the incoming run.

0 commit comments

Comments
 (0)