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); } } } 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);