From c91dcf5f6be8971bed7865467c3ca62d45829406 Mon Sep 17 00:00:00 2001 From: michalbiesek Date: Tue, 20 Aug 2019 10:34:43 +0200 Subject: [PATCH 1/2] Handle case of reserve item - in case of reserve item and restart db item would be release --- src/storage/slab/slab.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/storage/slab/slab.c b/src/storage/slab/slab.c index d9d2b6435..c402bb022 100644 --- a/src/storage/slab/slab.c +++ b/src/storage/slab/slab.c @@ -189,6 +189,9 @@ _slab_recreate_items(struct slab *slab) } } else if (it->in_freeq) { _slab_put_item_into_freeq(it, slab->id); + } else if (it->klen && it->vlen == 0) { + /* item could be only reserved before reset */ + item_release(&it); } } } From 9a465368acf221bf1acfc35d0c66d35f7f493f4f Mon Sep 17 00:00:00 2001 From: michalbiesek Date: Tue, 20 Aug 2019 12:00:05 +0200 Subject: [PATCH 2/2] Update tests regarding adding to freeq reserved items - test_evict_refcount remove one reset where reserved item is deleted --- test/storage/slab_pmem/check_slab_pmem.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/storage/slab_pmem/check_slab_pmem.c b/test/storage/slab_pmem/check_slab_pmem.c index 9f600887f..cf29c5f99 100644 --- a/test/storage/slab_pmem/check_slab_pmem.c +++ b/test/storage/slab_pmem/check_slab_pmem.c @@ -1003,9 +1003,6 @@ START_TEST(test_evict_refcount) status = item_reserve(&it, &key, &val, val.len, 0, INT32_MAX); ck_assert_msg(status == ITEM_OK, "item_reserve not OK - return status %d", status); - test_teardown(0); - slab_setup(&options, &metrics); - status = item_reserve(&nit, &key, &val, val.len, 0, INT32_MAX); ck_assert_msg(status == ITEM_ENOMEM, "item_reserve should fail - return status %d", status);