1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
#!/usr/bin/env tarantool
env = require('test_run')
test_run = env.new()
box.cfg{}
test_run:cmd('create server test with script = "xlog/force_recovery.lua"')
test_run:cmd("start server test")
test_run:cmd("switch test")
box.space._schema:replace({'test'})
test_run:cmd("restart server test")
box.space._schema:replace({'lost'})
test_run:cmd("restart server test")
box.space._schema:replace({'tost'})
-- corrupted (empty) in the middle (old behavior: goto error on recovery)
fio = require('fio')
path = fio.pathjoin(box.cfg.wal_dir, string.format('%020d.xlog', box.info.lsn - 2))
fio.truncate(path)
test_run:cmd("restart server test")
box.space._schema:replace({'last'})
-- corrupted (empty), last
fio = require('fio')
path = fio.pathjoin(box.cfg.wal_dir, string.format('%020d.xlog', box.info.lsn - 1))
fio.truncate(path)
test_run:cmd("restart server test")
box.space._schema:replace({'test'})
test_run:cmd("restart server test")
box.space._schema:replace({'tost'})
-- corrupted header, last
fio = require('fio')
path = fio.pathjoin(box.cfg.wal_dir, string.format('%020d.xlog', box.info.lsn - 1))
f = fio.open(path, {'O_WRONLY'})
f:write('DEAD')
f:close()
test_run:cmd("restart server test")
box.space._schema:replace({'post'})
|