[Tarantool-patches] [PATCH] Add new error injection constant ERRINJ_AUTO_UPGRADE
Sergey Bronnikov
sergeyb at tarantool.org
Mon Mar 30 13:13:24 MSK 2020
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 <lauxlib.h>
#include <lualib.h>
+#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 <stdbool.h>
+
#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@
More information about the Tarantool-patches
mailing list