diff --git a/src/box/box.cc b/src/box/box.cc index 37c69a7038d2a53e3119ccc655c7c7d8c3cf8bea..e79b7f5d828a7b1caa9c7fec4f45cf21a3e1841d 100644 --- a/src/box/box.cc +++ b/src/box/box.cc @@ -112,6 +112,15 @@ box_check_writable(void) tnt_raise(LoggedError, ER_READONLY); } +static void +box_check_slab_alloc_minimal(ssize_t slab_alloc_minimal) +{ + + if (slab_alloc_minimal < 8 || slab_alloc_minimal > 1048280) + tnt_raise(ClientError, ER_CFG, "slab_alloc_minimal", + "specified value is out of bounds"); +} + void process_rw(struct request *request, struct tuple **result) { @@ -297,6 +306,7 @@ box_check_config() box_check_readahead(cfg_geti("readahead")); box_check_rows_per_wal(cfg_geti64("rows_per_wal")); box_check_wal_mode(cfg_gets("wal_mode")); + box_check_slab_alloc_minimal(cfg_geti64("slab_alloc_minimal")); } /* diff --git a/test/box-tap/cfg.result b/test/box-tap/cfg.result index db080630d80d919013cbd3a63f74536f12466ff0..3b5da32a597e6db5bb046603ad55b91abdaf153e 100644 --- a/test/box-tap/cfg.result +++ b/test/box-tap/cfg.result @@ -1,6 +1,11 @@ TAP version 13 -1..41 +1..46 ok - box is not started +ok - invalid slab_alloc_minimal +ok - invalid slab_alloc_minimal +ok - invalid slab_alloc_minimal +ok - invalid slab_alloc_minimal +ok - invalid slab_alloc_minimal ok - invalid replication_source ok - invalid wal_mode ok - invalid rows_per_wal diff --git a/test/box-tap/cfg.test.lua b/test/box-tap/cfg.test.lua index 6b1b19a0839e433239a6ccfd5ee4980d43cf98ba..ac4198f996b8f3352a796d3a7b43e14866ae6df0 100755 --- a/test/box-tap/cfg.test.lua +++ b/test/box-tap/cfg.test.lua @@ -4,7 +4,7 @@ local tap = require('tap') local test = tap.test('cfg') local socket = require('socket') local fio = require('fio') -test:plan(41) +test:plan(46) -------------------------------------------------------------------------------- -- Invalid values @@ -17,6 +17,11 @@ local function invalid(name, val) test:ok(not status and result:match('Incorrect'), 'invalid '..name) end +invalid('slab_alloc_minimal', 7) +invalid('slab_alloc_minimal', 0) +invalid('slab_alloc_minimal', -1) +invalid('slab_alloc_minimal', 1048281) +invalid('slab_alloc_minimal', 1000000000) invalid('replication_source', '//guest@localhost:3301') invalid('wal_mode', 'invalid') invalid('rows_per_wal', -1)