Skip to content
Snippets Groups Projects
Commit 2040e7f6 authored by Vladimir Davydov's avatar Vladimir Davydov Committed by Vladimir Davydov
Browse files

memtx: fix tuple garbage collection not resumed after snapshot

This is a degradation introduced by commit 26f7056f ("Introduce
internal database read view API"): tuple garbage collection is never
resumed after a snapshot. This happens, because we don't add engine read
views to the read view engine list on read view construction. As a
result, read_view_close() never closes the memtx engine read view.

NO_DOC=bug fix
NO_CHANGELOG=unreleased
parent d2271ec0
No related branches found
No related tags found
No related merge requests found
......@@ -126,6 +126,7 @@ read_view_open(struct read_view *rv, const struct read_view_opts *opts)
engine_create_read_view(engine);
if (engine_rv == NULL)
goto fail;
rlist_add_tail_entry(&rv->engines, engine_rv, link);
}
struct read_view_add_space_cb_arg add_space_cb_arg = {
.rv = rv,
......
local server = require('test.luatest_helpers.server')
local t = require('luatest')
local g = t.group()
g.before_all = function(cg)
cg.server = server:new({alias = 'master'})
cg.server:start()
end
g.after_all = function(cg)
cg.server:stop()
end
-- Checks that memtx tuple garbage collection is resumed after snapshot.
g.test_memtx_gc_after_snapshot = function(cg)
cg.server:exec(function()
local t = require('luatest')
box.schema.space.create('test')
box.space.test:create_index('primary')
local mem_used_1 = box.info.memory().data
box.begin()
for i = 1, 100 do
box.space.test:insert({i, string.rep('x', 10000)})
end
box.commit()
local mem_used_2 = box.info.memory().data
t.assert_gt(mem_used_2 - mem_used_1, 1000000)
box.snapshot()
box.begin()
for i = 1, 100 do
box.space.test:delete(i)
end
box.commit()
collectgarbage('collect') -- drop Lua refs
local mem_used_3 = box.info.memory().data
t.assert_gt(mem_used_2 - mem_used_3, 1000000)
end)
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment