From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp60.i.mail.ru (smtp60.i.mail.ru [217.69.128.40]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id CC300441840 for ; Mon, 30 Mar 2020 21:03:41 +0300 (MSK) From: Nikita Pettik Date: Mon, 30 Mar 2020 21:03:39 +0300 Message-Id: <927baef2bc5177f8b9cdd0ba5e7f259b5fc200a3.1585591162.git.korablev@tarantool.org> Subject: [Tarantool-patches] [PATCH] test: fix vinyl/deferred_delete failure List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: tarantool-patches@dev.tarantool.org Cc: Vladimir Davydov From: Vladimir Davydov 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 (cherry picked from commit 5433435d6f2cdc0c5524df649f39deb7d02d1dce) --- Branch: https://github.com/tarantool/tarantool/tree/np/deferred-delete-test-fix This patch was forgotten to be cherry-picked on 1.10 branch while was pushed to master. As a result, vinyl/deferred_delete.test.lua sometimes fails (see https://github.com/tarantool/tarantool/issues/4248). 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 3c8dbe5b6..23c93f0f5 100644 --- a/test/vinyl/deferred_delete.result +++ b/test/vinyl/deferred_delete.result @@ -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 --- ... @@ -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 ... @@ -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 ... diff --git a/test/vinyl/deferred_delete.test.lua b/test/vinyl/deferred_delete.test.lua index a4d41ec88..1bce954c5 100644 --- a/test/vinyl/deferred_delete.test.lua +++ b/test/vinyl/deferred_delete.test.lua @@ -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() @@ -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() @@ -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() -- 2.17.1