From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Vladimir Davydov Subject: [PATCH 08/10] vinyl: zap ERRINJ_VY_LOG_FLUSH_DELAY Date: Fri, 17 May 2019 17:52:42 +0300 Message-Id: In-Reply-To: References: In-Reply-To: References: To: tarantool-patches@freelists.org List-ID: To make it vy_log_tx_try_commit() non-yiedling, which is required for transactional DDL, we need to move ERRINJ_VY_LOG_FLUSH_DELAY out of this function. We can't move it to vylog thread, because the only test case that uses it tries to restart the server with this error injection enabled, while we don't exit until vylog thread completes. So let's just kill it - the problem it is checking will be gone once the vylog latch is removed, anyway. --- src/box/vy_log.c | 6 ------ src/lib/core/errinj.h | 1 - test/box/errinj.result | 44 +++++++++++++++++++++----------------------- test/vinyl/errinj.result | 22 ++-------------------- test/vinyl/errinj.test.lua | 11 ++--------- 5 files changed, 25 insertions(+), 59 deletions(-) diff --git a/src/box/vy_log.c b/src/box/vy_log.c index 31bc5c63..67b8a763 100644 --- a/src/box/vy_log.c +++ b/src/box/vy_log.c @@ -862,12 +862,6 @@ vy_log_flush(bool no_discard) if (stailq_empty(&vy_log.tx)) return 0; /* nothing to do */ - struct errinj *delay = errinj(ERRINJ_VY_LOG_FLUSH_DELAY, ERRINJ_BOOL); - if (delay != NULL && delay->bparam) { - while (delay->bparam) - fiber_sleep(0.001); - } - /* * Do actual disk writes on behalf of the vylog thread * so as not to block the tx thread. diff --git a/src/lib/core/errinj.h b/src/lib/core/errinj.h index 462c9846..a9748b1d 100644 --- a/src/lib/core/errinj.h +++ b/src/lib/core/errinj.h @@ -95,7 +95,6 @@ struct errinj { _(ERRINJ_VY_SCHED_TIMEOUT, ERRINJ_DOUBLE, {.dparam = 0}) \ _(ERRINJ_VY_GC, ERRINJ_BOOL, {.bparam = false}) \ _(ERRINJ_VY_LOG_FLUSH, ERRINJ_BOOL, {.bparam = false}) \ - _(ERRINJ_VY_LOG_FLUSH_DELAY, ERRINJ_BOOL, {.bparam = false}) \ _(ERRINJ_RELAY_SEND_DELAY, ERRINJ_BOOL, {.bparam = false}) \ _(ERRINJ_RELAY_TIMEOUT, ERRINJ_DOUBLE, {.dparam = 0}) \ _(ERRINJ_RELAY_REPORT_INTERVAL, ERRINJ_DOUBLE, {.dparam = 0}) \ diff --git a/test/box/errinj.result b/test/box/errinj.result index 061501c9..b2ba8bb2 100644 --- a/test/box/errinj.result +++ b/test/box/errinj.result @@ -40,26 +40,24 @@ errinj.info() state: false ERRINJ_COIO_SENDFILE_CHUNK: state: -1 - ERRINJ_VY_INDEX_FILE_RENAME: - state: false - ERRINJ_VY_POINT_ITER_WAIT: - state: false + ERRINJ_RELAY_BREAK_LSN: + state: -1 ERRINJ_VY_DELAY_PK_LOOKUP: state: false ERRINJ_VY_TASK_COMPLETE: state: false ERRINJ_PORT_DUMP: state: false - ERRINJ_WAL_BREAK_LSN: - state: -1 + ERRINJ_RELAY_EXIT_DELAY: + state: 0 ERRINJ_WAL_IO: state: false ERRINJ_WAL_FALLOCATE: state: 0 - ERRINJ_LOG_ROTATE: - state: false ERRINJ_VY_DUMP_DELAY: state: false + ERRINJ_SNAP_COMMIT_DELAY: + state: false ERRINJ_TUPLE_FORMAT_COUNT: state: -1 ERRINJ_TUPLE_ALLOC: @@ -70,7 +68,7 @@ errinj.info() state: false ERRINJ_RELAY_REPORT_INTERVAL: state: 0 - ERRINJ_RELAY_BREAK_LSN: + ERRINJ_WAL_BREAK_LSN: state: -1 ERRINJ_VY_READ_PAGE_TIMEOUT: state: 0 @@ -78,20 +76,20 @@ errinj.info() state: false ERRINJ_SIO_READ_MAX: state: -1 - ERRINJ_VY_RUN_FILE_RENAME: + ERRINJ_VY_INDEX_FILE_RENAME: state: false ERRINJ_WAL_WRITE_DISK: state: false + ERRINJ_VY_RUN_FILE_RENAME: + state: false ERRINJ_VY_LOG_FILE_RENAME: state: false - ERRINJ_HTTP_RESPONSE_ADD_WAIT: - state: false ERRINJ_VY_RUN_WRITE: state: false - ERRINJ_SNAP_COMMIT_DELAY: - state: false - ERRINJ_VY_LOG_FLUSH_DELAY: + ERRINJ_HTTP_RESPONSE_ADD_WAIT: state: false + ERRINJ_BUILD_INDEX: + state: -1 ERRINJ_RELAY_FINAL_JOIN: state: false ERRINJ_VY_COMPACTION_DELAY: @@ -102,10 +100,10 @@ errinj.info() state: false ERRINJ_WAL_ROTATE: state: false - ERRINJ_BUILD_INDEX: - state: -1 - ERRINJ_RELAY_EXIT_DELAY: - state: 0 + ERRINJ_LOG_ROTATE: + state: false + ERRINJ_VY_POINT_ITER_WAIT: + state: false ERRINJ_MEMTX_DELAY_GC: state: false ERRINJ_IPROTO_TX_DELAY: @@ -122,14 +120,14 @@ errinj.info() state: false ERRINJ_TESTING: state: false - ERRINJ_RELAY_TIMEOUT: - state: 0 + ERRINJ_RELAY_SEND_DELAY: + state: false ERRINJ_VY_SQUASH_TIMEOUT: state: 0 ERRINJ_VY_LOG_FLUSH: state: false - ERRINJ_RELAY_SEND_DELAY: - state: false + ERRINJ_RELAY_TIMEOUT: + state: 0 ... errinj.set("some-injection", true) --- diff --git a/test/vinyl/errinj.result b/test/vinyl/errinj.result index e05a616a..effb57a6 100644 --- a/test/vinyl/errinj.result +++ b/test/vinyl/errinj.result @@ -880,9 +880,8 @@ s:drop() --- ... -- --- gh-3412 - assertion failure at exit in case: --- * there is a fiber waiting for quota --- * there is a pending vylog write +-- gh-3412 - assertion failure at exit in case there is a fiber +-- waiting for quota. -- test_run:cmd("create server low_quota with script='vinyl/low_quota.lua'") --- @@ -918,23 +917,6 @@ _ = fiber.create(function() for i = 1, 11 do box.space.test:replace{i, pad} end repeat fiber.sleep(0.001) until box.cfg.vinyl_memory - box.stat.vinyl().memory.level0 < pad:len() --- ... -test_run:cmd("restart server low_quota with args='1048576'") -box.error.injection.set('ERRINJ_VY_LOG_FLUSH_DELAY', true) ---- -- ok -... -fiber = require('fiber') ---- -... -pad = string.rep('x', 100 * 1024) ---- -... -_ = fiber.create(function() for i = 1, 11 do box.space.test:replace{i, pad} end end) ---- -... -repeat fiber.sleep(0.001) until box.cfg.vinyl_memory - box.stat.vinyl().memory.level0 < pad:len() ---- -... test_run:cmd('switch default') --- - true diff --git a/test/vinyl/errinj.test.lua b/test/vinyl/errinj.test.lua index 4317ccb8..4169490a 100644 --- a/test/vinyl/errinj.test.lua +++ b/test/vinyl/errinj.test.lua @@ -312,9 +312,8 @@ ret s:drop() -- --- gh-3412 - assertion failure at exit in case: --- * there is a fiber waiting for quota --- * there is a pending vylog write +-- gh-3412 - assertion failure at exit in case there is a fiber +-- waiting for quota. -- test_run:cmd("create server low_quota with script='vinyl/low_quota.lua'") test_run:cmd("start server low_quota with args='1048576'") @@ -326,12 +325,6 @@ fiber = require('fiber') pad = string.rep('x', 100 * 1024) _ = fiber.create(function() for i = 1, 11 do box.space.test:replace{i, pad} end end) repeat fiber.sleep(0.001) until box.cfg.vinyl_memory - box.stat.vinyl().memory.level0 < pad:len() -test_run:cmd("restart server low_quota with args='1048576'") -box.error.injection.set('ERRINJ_VY_LOG_FLUSH_DELAY', true) -fiber = require('fiber') -pad = string.rep('x', 100 * 1024) -_ = fiber.create(function() for i = 1, 11 do box.space.test:replace{i, pad} end end) -repeat fiber.sleep(0.001) until box.cfg.vinyl_memory - box.stat.vinyl().memory.level0 < pad:len() test_run:cmd('switch default') test_run:cmd("stop server low_quota") test_run:cmd("cleanup server low_quota") -- 2.11.0