From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp39.i.mail.ru (smtp39.i.mail.ru [94.100.177.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id CC5EB441840 for ; Mon, 30 Mar 2020 16:12:03 +0300 (MSK) Date: Mon, 30 Mar 2020 16:11:59 +0300 From: Sergey Bronnikov Message-ID: <20200330131159.GA63493@pony.bronevichok.ru> References: <20200330101324.GA31497@pony.bronevichok.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20200330101324.GA31497@pony.bronevichok.ru> Subject: Re: [Tarantool-patches] [PATCH] Add new error injection constant ERRINJ_AUTO_UPGRADE List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: tarantool-patches@dev.tarantool.org Cc: Oleg Piskunov + A.Tikhonov and A.Turenko On 13:13 Mon 30 Mar , Sergey Bronnikov wrote: > In upgrade testing we need an ability to control running of upgrade.lua script > execution. When constant ERRINJ_AUTO_UPGRADE is set to true tarantool will skip > upgrade.lua script execution. > > Ticket: https://github.com/tarantool/tarantool/issues/4801 > GitHub branch: https://github.com/tarantool/tarantool/tree/ligurio/gh-4801-errinj_auto_upgrade > > --- > src/box/lua/init.c | 2 ++ > src/box/lua/init.h | 2 ++ > src/box/lua/load_cfg.lua | 2 +- > src/lib/core/errinj.h | 1 + > test/box/errinj.result | 4 +++- > test/box/errinj.test.lua | 4 +++- > 6 files changed, 12 insertions(+), 3 deletions(-) > > diff --git a/src/box/lua/init.c b/src/box/lua/init.c > index 63e8b8216..fc26ad175 100644 > --- a/src/box/lua/init.c > +++ b/src/box/lua/init.c > @@ -34,6 +34,8 @@ > #include > #include > > +#include "errinj.h" > + > #include "lua/utils.h" /* luaT_error() */ > #include "lua/trigger.h" > > diff --git a/src/box/lua/init.h b/src/box/lua/init.h > index 66ef66063..65f9aea8f 100644 > --- a/src/box/lua/init.h > +++ b/src/box/lua/init.h > @@ -31,6 +31,8 @@ > * SUCH DAMAGE. > */ > > +#include > + > #if defined(__cplusplus) > extern "C" { > #endif /* defined(__cplusplus) */ > diff --git a/src/box/lua/load_cfg.lua b/src/box/lua/load_cfg.lua > index b671eb7a2..394a00168 100644 > --- a/src/box/lua/load_cfg.lua > +++ b/src/box/lua/load_cfg.lua > @@ -571,7 +571,7 @@ local function load_cfg(cfg) > end > end > end > - if not box.cfg.read_only and not box.cfg.replication then > + if box.error.injection.get('ERRINJ_AUTO_UPGRADE') or (not box.cfg.read_only and not box.cfg.replication) then > box.schema.upgrade{auto = true} > end > end > diff --git a/src/lib/core/errinj.h b/src/lib/core/errinj.h > index ee6c57a0d..7eaa1ac48 100644 > --- a/src/lib/core/errinj.h > +++ b/src/lib/core/errinj.h > @@ -139,6 +139,7 @@ struct errinj { > _(ERRINJ_FIBER_MPROTECT, ERRINJ_INT, {.iparam = -1}) \ > _(ERRINJ_RELAY_FASTER_THAN_TX, ERRINJ_BOOL, {.bparam = false}) \ > _(ERRINJ_INDEX_RESERVE, ERRINJ_BOOL, {.bparam = false})\ > + _(ERRINJ_AUTO_UPGRADE, ERRINJ_BOOL, {.bparam = false})\ > > ENUM0(errinj_id, ERRINJ_LIST); > extern struct errinj errinjs[]; > diff --git a/test/box/errinj.result b/test/box/errinj.result > index 0d3fedeb3..d4584022a 100644 > --- a/test/box/errinj.result > +++ b/test/box/errinj.result > @@ -29,7 +29,9 @@ evals = {} > --- > ... > for k, v in pairs(errinj.info()) do \ > - table.insert(ekeys, k) \ > + if not (k == "ERRINJ_AUTO_UPGRADE") then \ > + table.insert(ekeys, k) \ > + end \ > end > --- > ... > diff --git a/test/box/errinj.test.lua b/test/box/errinj.test.lua > index 5d8f4c635..a6d4eecd4 100644 > --- a/test/box/errinj.test.lua > +++ b/test/box/errinj.test.lua > @@ -15,7 +15,9 @@ index = space:create_index('primary', { type = 'hash' }) > ekeys = {} > evals = {} > for k, v in pairs(errinj.info()) do \ > - table.insert(ekeys, k) \ > + if not (k == "ERRINJ_AUTO_UPGRADE") then \ > + table.insert(ekeys, k) \ > + end \ > end > table.sort(ekeys) > for i, k in ipairs(ekeys) do \ > -- > 2.23.0 > > > -- > sergeyb@ -- sergeyb@