Skip to content

Commit

Permalink
test: fix vinyl/deferred_delete failure
Browse files Browse the repository at this point in the history
The patch fixes the following test failure:

 | --- vinyl/deferred_delete.result        Fri Mar 15 18:17:05 2019
 | +++ vinyl/deferred_delete.reject        Fri Mar 15 18:18:18 2019
 | @@ -577,7 +577,7 @@
 |  ...
 |  sk:stat().rows -- ditto
 |  ---
 | -- 5
 | +- 25
 |  ...
 |  s:drop()
 |  ---

The failure was introduced by commit 6dd0d2f ("vinyl: do not apply
run_count_per_level to the last level"). Due to the commit compaction of
the secondary index may happen before compaction of the primary index,
in which case deferred DELETE statements won't make it to the secondary
index in time against the test expectation. Fix this by making the first
run big enough to prevent major compaction from kicking in.

Follow-up #3657
Closes #4047

(cherry picked from commit 5433435)
  • Loading branch information
locker authored and kyukhin committed Apr 3, 2020
1 parent 007bf42 commit 9fdeccb
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 20 deletions.
36 changes: 22 additions & 14 deletions test/vinyl/deferred_delete.result
Expand Up @@ -575,6 +575,14 @@ pk = s:create_index('pk', {run_count_per_level = 10})
sk = s:create_index('sk', {run_count_per_level = 10, parts = {2, 'unsigned'}, unique = false})
---
...
-- Write a run big enough to prevent major compaction from kicking in
-- (run_count_per_level is ignored on the last level - see gh-3657).
dummy_rows = 100
---
...
for i = 1001, 1000 + dummy_rows do s:replace{i, i} end
---
...
for i = 1, 10 do s:replace{i, i} end
---
...
Expand All @@ -597,19 +605,19 @@ for i = 2, 10, 2 do s:replace{i, i * 100} end
box.commit()
---
...
sk:select()
sk:select({1000}, {iterator = 'le'})
---
- - [2, 200]
- [4, 400]
- [6, 600]
- - [10, 1000]
- [8, 800]
- [10, 1000]
- [6, 600]
- [4, 400]
- [2, 200]
...
pk:stat().rows -- 10 old REPLACEs + 5 DELETEs + 5 new REPLACEs
pk:stat().rows - dummy_rows -- 10 old REPLACEs + 5 DELETEs + 5 new REPLACEs
---
- 20
...
sk:stat().rows -- 10 old REPLACEs + 5 new REPLACEs
sk:stat().rows - dummy_rows -- 10 old REPLACEs + 5 new REPLACEs
---
- 15
...
Expand All @@ -635,19 +643,19 @@ sk:compact()
while sk:stat().disk.compaction.count == 0 do fiber.sleep(0.001) end
---
...
sk:select()
sk:select({1000}, {iterator = 'le'})
---
- - [2, 200]
- [4, 400]
- [6, 600]
- - [10, 1000]
- [8, 800]
- [10, 1000]
- [6, 600]
- [4, 400]
- [2, 200]
...
pk:stat().rows -- 5 new REPLACEs
pk:stat().rows - dummy_rows -- 5 new REPLACEs
---
- 5
...
sk:stat().rows -- ditto
sk:stat().rows - dummy_rows -- ditto
---
- 5
...
Expand Down
18 changes: 12 additions & 6 deletions test/vinyl/deferred_delete.test.lua
Expand Up @@ -202,6 +202,12 @@ s:drop()
s = box.schema.space.create('test', {engine = 'vinyl'})
pk = s:create_index('pk', {run_count_per_level = 10})
sk = s:create_index('sk', {run_count_per_level = 10, parts = {2, 'unsigned'}, unique = false})

-- Write a run big enough to prevent major compaction from kicking in
-- (run_count_per_level is ignored on the last level - see gh-3657).
dummy_rows = 100
for i = 1001, 1000 + dummy_rows do s:replace{i, i} end

for i = 1, 10 do s:replace{i, i} end
box.snapshot()

Expand All @@ -211,10 +217,10 @@ for i = 1, 10, 2 do s:delete{i} end
for i = 2, 10, 2 do s:replace{i, i * 100} end
box.commit()

sk:select()
sk:select({1000}, {iterator = 'le'})

pk:stat().rows -- 10 old REPLACEs + 5 DELETEs + 5 new REPLACEs
sk:stat().rows -- 10 old REPLACEs + 5 new REPLACEs
pk:stat().rows - dummy_rows -- 10 old REPLACEs + 5 DELETEs + 5 new REPLACEs
sk:stat().rows - dummy_rows -- 10 old REPLACEs + 5 new REPLACEs

-- Compact the primary index to generate deferred DELETEs.
box.snapshot()
Expand All @@ -226,10 +232,10 @@ box.snapshot()
sk:compact()
while sk:stat().disk.compaction.count == 0 do fiber.sleep(0.001) end

sk:select()
sk:select({1000}, {iterator = 'le'})

pk:stat().rows -- 5 new REPLACEs
sk:stat().rows -- ditto
pk:stat().rows - dummy_rows -- 5 new REPLACEs
sk:stat().rows - dummy_rows -- ditto

s:drop()

Expand Down

0 comments on commit 9fdeccb

Please sign in to comment.