From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Vladimir Davydov Subject: [PATCH] test: fix vinyl/deferred_delete failure Date: Fri, 15 Mar 2019 18:57:51 +0300 Message-Id: <5433435d6f2cdc0c5524df649f39deb7d02d1dce.1552665465.git.vdavydov.dev@gmail.com> To: tarantool-patches@freelists.org List-ID: 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 6dd0d2fb7e0e ("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 --- test/vinyl/deferred_delete.result | 36 ++++++++++++++++++++++-------------- test/vinyl/deferred_delete.test.lua | 18 ++++++++++++------ 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/test/vinyl/deferred_delete.result b/test/vinyl/deferred_delete.result index 61f81ce2..0a380ed5 100644 --- a/test/vinyl/deferred_delete.result +++ b/test/vinyl/deferred_delete.result @@ -503,6 +503,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 --- ... @@ -525,19 +533,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 ... @@ -563,19 +571,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 ... diff --git a/test/vinyl/deferred_delete.test.lua b/test/vinyl/deferred_delete.test.lua index 93b5b358..240429fc 100644 --- a/test/vinyl/deferred_delete.test.lua +++ b/test/vinyl/deferred_delete.test.lua @@ -184,6 +184,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() @@ -193,10 +199,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() @@ -208,10 +214,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() -- 2.11.0