From bd2a23f06133c1e7604df9bc1e7f60fc91527749 Mon Sep 17 00:00:00 2001 From: GeorgyKirichenko <kirichenkoga@gmail.com> Date: Wed, 14 Jun 2017 11:13:31 +0300 Subject: [PATCH] alter: add a test case for simultaneous truncates Tarantool should not crash if one space was truncated simultaneosly from two fibers. Closes #928 --- test/box/ddl.result | 37 +++++++++++++++++++++++++++++++++++++ test/box/ddl.test.lua | 17 +++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/test/box/ddl.result b/test/box/ddl.result index 0d20992ee3..01531af5c3 100644 --- a/test/box/ddl.result +++ b/test/box/ddl.result @@ -49,3 +49,40 @@ _ = box.space.test:drop() --- ... test_run:cmd('restart server default') +env = require('test_run') +--- +... +test_run = env.new() +--- +... +fiber = require'fiber' +--- +... +ch = fiber.channel(2) +--- +... +--issue #928 +space = box.schema.space.create('test_trunc') +--- +... +_ = space:create_index('pk') +--- +... +_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) +--- +... +_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) +--- +... +function test_trunc() space:truncate() ch:put(true) end +--- +... +_ = {fiber.create(test_trunc), fiber.create(test_trunc)} +--- +... +_ = {ch:get(), ch:get()} +--- +... +space:drop() +--- +... diff --git a/test/box/ddl.test.lua b/test/box/ddl.test.lua index 425582a477..237abb36d2 100644 --- a/test/box/ddl.test.lua +++ b/test/box/ddl.test.lua @@ -31,3 +31,20 @@ _ = box.space.test:drop() test_run:cmd('restart server default') +env = require('test_run') +test_run = env.new() +fiber = require'fiber' + +ch = fiber.channel(2) + +--issue #928 +space = box.schema.space.create('test_trunc') +_ = space:create_index('pk') +_ = box.space.test_trunc:create_index('i1', {type = 'hash', parts = {2, 'STR'}}) +_ = box.space.test_trunc:create_index('i2', {type = 'hash', parts = {2, 'STR'}}) + +function test_trunc() space:truncate() ch:put(true) end + +_ = {fiber.create(test_trunc), fiber.create(test_trunc)} +_ = {ch:get(), ch:get()} +space:drop() -- GitLab