From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Vladimir Davydov Subject: [PATCH 02/13] vinyl: force deletion of runs left from unfinished indexes on restart Date: Thu, 4 Oct 2018 20:20:04 +0300 Message-Id: In-Reply-To: References: In-Reply-To: References: To: kostja@tarantool.org Cc: tarantool-patches@freelists.org List-ID: If an instance is restarted while building a new vinyl index, there will probably be some run files left. Currently, we won't delete such files until box.snapshot() is called, even though there's no point in keeping them around. Let's tweak vy_gc_lsm() so that it marks all runs that belong to an unfinished index as incomplete to force vy_gc() to remove them immediately after recovery is complete. This also removes files left from a failed rebootstrap attempt so we can remove a call to box.snapshot() from vinyl/replica_rejoin.test.lua. --- src/box/vinyl.c | 2 ++ test/vinyl/errinj_gc.result | 4 ---- test/vinyl/errinj_gc.test.lua | 1 - test/vinyl/replica_rejoin.result | 7 ------- test/vinyl/replica_rejoin.test.lua | 2 -- 5 files changed, 2 insertions(+), 14 deletions(-) diff --git a/src/box/vinyl.c b/src/box/vinyl.c index 0cd7b188..fd24f9b5 100644 --- a/src/box/vinyl.c +++ b/src/box/vinyl.c @@ -3246,6 +3246,8 @@ vy_gc_lsm(struct vy_lsm_recovery_info *lsm_info) } struct vy_run_recovery_info *run_info; rlist_foreach_entry(run_info, &lsm_info->runs, in_lsm) { + if (lsm_info->create_lsn < 0) + run_info->is_incomplete = true; if (!run_info->is_dropped) { run_info->is_dropped = true; run_info->gc_lsn = lsm_info->drop_lsn; diff --git a/test/vinyl/errinj_gc.result b/test/vinyl/errinj_gc.result index 7c963103..13a43171 100644 --- a/test/vinyl/errinj_gc.result +++ b/test/vinyl/errinj_gc.result @@ -254,10 +254,6 @@ ch:get() - true ... test_run:cmd('restart server default') -box.snapshot() ---- -- ok -... fio = require('fio') --- ... diff --git a/test/vinyl/errinj_gc.test.lua b/test/vinyl/errinj_gc.test.lua index 4c3d1bb3..aaa499a0 100644 --- a/test/vinyl/errinj_gc.test.lua +++ b/test/vinyl/errinj_gc.test.lua @@ -120,7 +120,6 @@ ch:get() #fio.listdir(fio.pathjoin(box.cfg.vinyl_dir, s.id, 1)) > 0 test_run:cmd('restart server default') -box.snapshot() fio = require('fio') s = box.space.test diff --git a/test/vinyl/replica_rejoin.result b/test/vinyl/replica_rejoin.result index bd5d1ed3..d153e346 100644 --- a/test/vinyl/replica_rejoin.result +++ b/test/vinyl/replica_rejoin.result @@ -164,13 +164,6 @@ test_run:cmd("switch replica") --- - true ... -box.cfg{checkpoint_count = 1} ---- -... -box.snapshot() ---- -- ok -... fio = require('fio') --- ... diff --git a/test/vinyl/replica_rejoin.test.lua b/test/vinyl/replica_rejoin.test.lua index 972b04e5..8226fb94 100644 --- a/test/vinyl/replica_rejoin.test.lua +++ b/test/vinyl/replica_rejoin.test.lua @@ -59,8 +59,6 @@ test_run:cmd("start server replica with crash_expected=True") -- fail test_run:cmd("start server replica with crash_expected=True") -- fail again test_run:cmd("start server replica with args='disable_replication'") test_run:cmd("switch replica") -box.cfg{checkpoint_count = 1} -box.snapshot() fio = require('fio') fio.chdir(box.cfg.vinyl_dir) fio.glob(fio.pathjoin(box.space.test.id, 0, '*')) -- 2.11.0