diff --git a/cfg/tarantool_silverbox_cfg.c b/cfg/tarantool_silverbox_cfg.c
index 80d1bf00d329f1e272d2ba492ec72045a79af6aa..2e553f920bba37f7686867efb95cf639ac6ba215 100644
--- a/cfg/tarantool_silverbox_cfg.c
+++ b/cfg/tarantool_silverbox_cfg.c
@@ -71,7 +71,7 @@ fill_default_tarantool_cfg(tarantool_cfg *c) {
 
 static int
 acceptDefault_name__namespace(tarantool_cfg_namespace *c) {
-	c->enabled = 0;
+	c->enabled = -1;
 	c->cardinality = -1;
 	c->estimated_rows = 0;
 	c->index = NULL;
@@ -281,6 +281,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	if ( cmpNameAtoms( opt->name, _name__username) ) {
 		if (opt->paramType != stringType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		if (check_rdonly && ( (opt->paramValue.stringval == NULL && c->username == NULL) || strcmp(opt->paramValue.stringval, c->username) != 0))
 			return CNF_RDONLY;
@@ -291,6 +292,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__coredump) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -304,6 +306,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__admin_port) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -317,6 +320,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__log_level) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -328,6 +332,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__slab_alloc_arena) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		double dbl = strtod(opt->paramValue.numberval, NULL);
 		if ( (dbl == 0 || dbl == -HUGE_VAL || dbl == HUGE_VAL) && errno == ERANGE)
@@ -339,6 +344,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__slab_alloc_minimal) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -352,6 +358,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__slab_alloc_factor) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		double dbl = strtod(opt->paramValue.numberval, NULL);
 		if ( (dbl == 0 || dbl == -HUGE_VAL || dbl == HUGE_VAL) && errno == ERANGE)
@@ -363,6 +370,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__work_dir) ) {
 		if (opt->paramType != stringType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		if (check_rdonly && ( (opt->paramValue.stringval == NULL && c->work_dir == NULL) || strcmp(opt->paramValue.stringval, c->work_dir) != 0))
 			return CNF_RDONLY;
@@ -373,6 +381,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__pid_file) ) {
 		if (opt->paramType != stringType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		if (check_rdonly && ( (opt->paramValue.stringval == NULL && c->pid_file == NULL) || strcmp(opt->paramValue.stringval, c->pid_file) != 0))
 			return CNF_RDONLY;
@@ -383,6 +392,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__logger) ) {
 		if (opt->paramType != stringType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		if (check_rdonly && ( (opt->paramValue.stringval == NULL && c->logger == NULL) || strcmp(opt->paramValue.stringval, c->logger) != 0))
 			return CNF_RDONLY;
@@ -393,6 +403,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__logger_nonblock) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -406,6 +417,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__io_collect_interval) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		double dbl = strtod(opt->paramValue.numberval, NULL);
 		if ( (dbl == 0 || dbl == -HUGE_VAL || dbl == HUGE_VAL) && errno == ERANGE)
@@ -417,6 +429,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__backlog) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -430,6 +443,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__readahead) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -441,6 +455,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__snap_dir) ) {
 		if (opt->paramType != stringType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		if (check_rdonly && ( (opt->paramValue.stringval == NULL && c->snap_dir == NULL) || strcmp(opt->paramValue.stringval, c->snap_dir) != 0))
 			return CNF_RDONLY;
@@ -451,6 +466,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__wal_dir) ) {
 		if (opt->paramType != stringType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		if (check_rdonly && ( (opt->paramValue.stringval == NULL && c->wal_dir == NULL) || strcmp(opt->paramValue.stringval, c->wal_dir) != 0))
 			return CNF_RDONLY;
@@ -461,6 +477,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__primary_port) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -474,6 +491,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__secondary_port) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -487,6 +505,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__too_long_threshold) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		double dbl = strtod(opt->paramValue.numberval, NULL);
 		if ( (dbl == 0 || dbl == -HUGE_VAL || dbl == HUGE_VAL) && errno == ERANGE)
@@ -496,6 +515,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__custom_proc_title) ) {
 		if (opt->paramType != stringType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		if (check_rdonly && ( (opt->paramValue.stringval == NULL && c->custom_proc_title == NULL) || strcmp(opt->paramValue.stringval, c->custom_proc_title) != 0))
 			return CNF_RDONLY;
@@ -506,6 +526,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__memcached) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -519,6 +540,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__memcached_namespace) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -532,6 +554,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__memcached_expire_per_loop) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -543,6 +566,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__memcached_expire_full_sweep) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -554,6 +578,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__snap_io_rate_limit) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		double dbl = strtod(opt->paramValue.numberval, NULL);
 		if ( (dbl == 0 || dbl == -HUGE_VAL || dbl == HUGE_VAL) && errno == ERANGE)
@@ -565,6 +590,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__rows_per_wal) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -578,6 +604,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__wal_fsync_delay) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -591,6 +618,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__wal_writer_inbox_size) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -604,6 +632,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__local_hot_standby) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -617,6 +646,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__wal_dir_rescan_delay) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		double dbl = strtod(opt->paramValue.numberval, NULL);
 		if ( (dbl == 0 || dbl == -HUGE_VAL || dbl == HUGE_VAL) && errno == ERANGE)
@@ -628,6 +658,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__panic_on_snap_error) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -641,6 +672,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__panic_on_wal_error) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -654,6 +686,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__remote_hot_standby) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -667,6 +700,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__wal_feeder_ipaddr) ) {
 		if (opt->paramType != stringType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		if (check_rdonly && ( (opt->paramValue.stringval == NULL && c->wal_feeder_ipaddr == NULL) || strcmp(opt->paramValue.stringval, c->wal_feeder_ipaddr) != 0))
 			return CNF_RDONLY;
@@ -677,6 +711,7 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__wal_feeder_port) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
+		c->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -687,12 +722,19 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 			return CNF_RDONLY;
 		c->wal_feeder_port = i32;
 	}
+	else if ( cmpNameAtoms( opt->name, _name__namespace) ) {
+		if (opt->paramType != arrayType )
+			return CNF_WRONGTYPE;
+		ARRAYALLOC(c->namespace, 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
+	}
 	else if ( cmpNameAtoms( opt->name, _name__namespace__enabled) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
-		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW);
+		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
 		if (c->namespace[opt->name->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
 			check_rdonly = 0;
+		c->namespace[opt->name->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		c->namespace[opt->name->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -706,9 +748,11 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__namespace__cardinality) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
-		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW);
+		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
 		if (c->namespace[opt->name->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
 			check_rdonly = 0;
+		c->namespace[opt->name->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		c->namespace[opt->name->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -722,9 +766,11 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__namespace__estimated_rows) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
-		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW);
+		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
 		if (c->namespace[opt->name->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
 			check_rdonly = 0;
+		c->namespace[opt->name->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		c->namespace[opt->name->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -735,15 +781,27 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 			return CNF_RDONLY;
 		c->namespace[opt->name->index]->estimated_rows = i32;
 	}
+	else if ( cmpNameAtoms( opt->name, _name__namespace__index) ) {
+		if (opt->paramType != arrayType )
+			return CNF_WRONGTYPE;
+		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
+		if (c->namespace[opt->name->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
+			check_rdonly = 0;
+		c->namespace[opt->name->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		ARRAYALLOC(c->namespace[opt->name->index]->index, 1, _name__namespace__index, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
+	}
 	else if ( cmpNameAtoms( opt->name, _name__namespace__index__type) ) {
 		if (opt->paramType != stringType )
 			return CNF_WRONGTYPE;
-		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW);
+		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
 		if (c->namespace[opt->name->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
 			check_rdonly = 0;
-		ARRAYALLOC(c->namespace[opt->name->index]->index, opt->name->next->index + 1, _name__namespace__index, check_rdonly, CNF_FLAG_STRUCT_NEW);
+		c->namespace[opt->name->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		ARRAYALLOC(c->namespace[opt->name->index]->index, opt->name->next->index + 1, _name__namespace__index, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
 		if (c->namespace[opt->name->index]->index[opt->name->next->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
 			check_rdonly = 0;
+		c->namespace[opt->name->index]->index[opt->name->next->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		c->namespace[opt->name->index]->index[opt->name->next->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		if (check_rdonly && ( (opt->paramValue.stringval == NULL && c->namespace[opt->name->index]->index[opt->name->next->index]->type == NULL) || strcmp(opt->paramValue.stringval, c->namespace[opt->name->index]->index[opt->name->next->index]->type) != 0))
 			return CNF_RDONLY;
@@ -754,12 +812,15 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__namespace__index__unique) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
-		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW);
+		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
 		if (c->namespace[opt->name->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
 			check_rdonly = 0;
-		ARRAYALLOC(c->namespace[opt->name->index]->index, opt->name->next->index + 1, _name__namespace__index, check_rdonly, CNF_FLAG_STRUCT_NEW);
+		c->namespace[opt->name->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		ARRAYALLOC(c->namespace[opt->name->index]->index, opt->name->next->index + 1, _name__namespace__index, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
 		if (c->namespace[opt->name->index]->index[opt->name->next->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
 			check_rdonly = 0;
+		c->namespace[opt->name->index]->index[opt->name->next->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		c->namespace[opt->name->index]->index[opt->name->next->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -770,18 +831,35 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 			return CNF_RDONLY;
 		c->namespace[opt->name->index]->index[opt->name->next->index]->unique = i32;
 	}
+	else if ( cmpNameAtoms( opt->name, _name__namespace__index__key_field) ) {
+		if (opt->paramType != arrayType )
+			return CNF_WRONGTYPE;
+		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
+		if (c->namespace[opt->name->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
+			check_rdonly = 0;
+		c->namespace[opt->name->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		ARRAYALLOC(c->namespace[opt->name->index]->index, opt->name->next->index + 1, _name__namespace__index, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
+		if (c->namespace[opt->name->index]->index[opt->name->next->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
+			check_rdonly = 0;
+		c->namespace[opt->name->index]->index[opt->name->next->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		ARRAYALLOC(c->namespace[opt->name->index]->index[opt->name->next->index]->key_field, 1, _name__namespace__index__key_field, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
+	}
 	else if ( cmpNameAtoms( opt->name, _name__namespace__index__key_field__fieldno) ) {
 		if (opt->paramType != numberType )
 			return CNF_WRONGTYPE;
-		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW);
+		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
 		if (c->namespace[opt->name->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
 			check_rdonly = 0;
-		ARRAYALLOC(c->namespace[opt->name->index]->index, opt->name->next->index + 1, _name__namespace__index, check_rdonly, CNF_FLAG_STRUCT_NEW);
+		c->namespace[opt->name->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		ARRAYALLOC(c->namespace[opt->name->index]->index, opt->name->next->index + 1, _name__namespace__index, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
 		if (c->namespace[opt->name->index]->index[opt->name->next->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
 			check_rdonly = 0;
-		ARRAYALLOC(c->namespace[opt->name->index]->index[opt->name->next->index]->key_field, opt->name->next->next->index + 1, _name__namespace__index__key_field, check_rdonly, CNF_FLAG_STRUCT_NEW);
+		c->namespace[opt->name->index]->index[opt->name->next->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		ARRAYALLOC(c->namespace[opt->name->index]->index[opt->name->next->index]->key_field, opt->name->next->next->index + 1, _name__namespace__index__key_field, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
 		if (c->namespace[opt->name->index]->index[opt->name->next->index]->key_field[opt->name->next->next->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
 			check_rdonly = 0;
+		c->namespace[opt->name->index]->index[opt->name->next->index]->key_field[opt->name->next->next->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		c->namespace[opt->name->index]->index[opt->name->next->index]->key_field[opt->name->next->next->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		long int i32 = strtol(opt->paramValue.numberval, NULL, 10);
 		if (i32 == 0 && errno == EINVAL)
@@ -795,15 +873,19 @@ acceptValue(tarantool_cfg* c, OptDef* opt, int check_rdonly) {
 	else if ( cmpNameAtoms( opt->name, _name__namespace__index__key_field__type) ) {
 		if (opt->paramType != stringType )
 			return CNF_WRONGTYPE;
-		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW);
+		ARRAYALLOC(c->namespace, opt->name->index + 1, _name__namespace, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
 		if (c->namespace[opt->name->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
 			check_rdonly = 0;
-		ARRAYALLOC(c->namespace[opt->name->index]->index, opt->name->next->index + 1, _name__namespace__index, check_rdonly, CNF_FLAG_STRUCT_NEW);
+		c->namespace[opt->name->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		ARRAYALLOC(c->namespace[opt->name->index]->index, opt->name->next->index + 1, _name__namespace__index, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
 		if (c->namespace[opt->name->index]->index[opt->name->next->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
 			check_rdonly = 0;
-		ARRAYALLOC(c->namespace[opt->name->index]->index[opt->name->next->index]->key_field, opt->name->next->next->index + 1, _name__namespace__index__key_field, check_rdonly, CNF_FLAG_STRUCT_NEW);
+		c->namespace[opt->name->index]->index[opt->name->next->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		ARRAYALLOC(c->namespace[opt->name->index]->index[opt->name->next->index]->key_field, opt->name->next->next->index + 1, _name__namespace__index__key_field, check_rdonly, CNF_FLAG_STRUCT_NEW | CNF_FLAG_STRUCT_NOTSET);
 		if (c->namespace[opt->name->index]->index[opt->name->next->index]->key_field[opt->name->next->next->index]->__confetti_flags & CNF_FLAG_STRUCT_NEW)
 			check_rdonly = 0;
+		c->namespace[opt->name->index]->index[opt->name->next->index]->key_field[opt->name->next->next->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
+		c->namespace[opt->name->index]->index[opt->name->next->index]->key_field[opt->name->next->next->index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NOTSET;
 		errno = 0;
 		if (check_rdonly && ( (opt->paramValue.stringval == NULL && c->namespace[opt->name->index]->index[opt->name->next->index]->key_field[opt->name->next->next->index]->type == NULL) || strcmp(opt->paramValue.stringval, c->namespace[opt->name->index]->index[opt->name->next->index]->key_field[opt->name->next->next->index]->type) != 0))
 			return CNF_RDONLY;
@@ -1517,71 +1599,84 @@ check_cfg_tarantool_cfg(tarantool_cfg *c) {
 		res++;
 		out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__primary_port));
 	}
-
 	if (c->namespace == NULL) {
 		res++;
 		out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace));
 	}
-
 	i->idx_name__namespace = 0;
 	while (c->namespace && c->namespace[i->idx_name__namespace]) {
-		if (c->namespace[i->idx_name__namespace]->enabled == 0) {
-			res++;
-			_name__namespace__enabled->index = i->idx_name__namespace;
-			out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__enabled));
-		}
-
-		if (c->namespace[i->idx_name__namespace]->index == NULL) {
-			res++;
-			_name__namespace__index->index = i->idx_name__namespace;
-			out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__index));
-		}
-
-		i->idx_name__namespace__index = 0;
-		while (c->namespace[i->idx_name__namespace]->index && c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]) {
-			if (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->type != NULL && strcmp(c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->type, "") == 0) {
+		if (c->namespace[i->idx_name__namespace]->__confetti_flags & CNF_FLAG_STRUCT_NOTSET) {
+			(void)0;
+		} else {
+			if (c->namespace[i->idx_name__namespace]->enabled == -1) {
 				res++;
-				_name__namespace__index__type->next->index = i->idx_name__namespace__index;
-				_name__namespace__index__type->index = i->idx_name__namespace;
-				out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__index__type));
+				_name__namespace__enabled->index = i->idx_name__namespace;
+				out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__enabled));
 			}
-
-			if (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->unique == -1) {
+			if (c->namespace[i->idx_name__namespace]->index == NULL) {
 				res++;
-				_name__namespace__index__unique->next->index = i->idx_name__namespace__index;
-				_name__namespace__index__unique->index = i->idx_name__namespace;
-				out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__index__unique));
+				_name__namespace__index->index = i->idx_name__namespace;
+				out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__index));
 			}
-
-			if (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field == NULL) {
-				res++;
-				_name__namespace__index__key_field->next->index = i->idx_name__namespace__index;
-				_name__namespace__index__key_field->index = i->idx_name__namespace;
-				out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__index__key_field));
-			}
-
-			i->idx_name__namespace__index__key_field = 0;
-			while (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field && c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field[i->idx_name__namespace__index__key_field]) {
-				if (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field[i->idx_name__namespace__index__key_field]->fieldno == -1) {
+			i->idx_name__namespace__index = 0;
+			while (c->namespace[i->idx_name__namespace]->index && c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]) {
+				if (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->__confetti_flags & CNF_FLAG_STRUCT_NOTSET) {
 					res++;
-					_name__namespace__index__key_field__fieldno->next->next->index = i->idx_name__namespace__index__key_field;
-					_name__namespace__index__key_field__fieldno->next->index = i->idx_name__namespace__index;
-					_name__namespace__index__key_field__fieldno->index = i->idx_name__namespace;
-					out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__index__key_field__fieldno));
-				}
+					_name__namespace__index->next->index = i->idx_name__namespace__index;
+					_name__namespace__index->index = i->idx_name__namespace;
+					out_warning(CNF_NOTSET, "Option '%s' is not set", dumpOptDef(_name__namespace__index));
+				} else {
+					if (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->type != NULL && strcmp(c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->type, "") == 0) {
+						res++;
+						_name__namespace__index__type->next->index = i->idx_name__namespace__index;
+						_name__namespace__index__type->index = i->idx_name__namespace;
+						out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__index__type));
+					}
+					if (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->unique == -1) {
+						res++;
+						_name__namespace__index__unique->next->index = i->idx_name__namespace__index;
+						_name__namespace__index__unique->index = i->idx_name__namespace;
+						out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__index__unique));
+					}
+					if (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field == NULL) {
+						res++;
+						_name__namespace__index__key_field->next->index = i->idx_name__namespace__index;
+						_name__namespace__index__key_field->index = i->idx_name__namespace;
+						out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__index__key_field));
+					}
+					i->idx_name__namespace__index__key_field = 0;
+					while (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field && c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field[i->idx_name__namespace__index__key_field]) {
+						if (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field[i->idx_name__namespace__index__key_field]->__confetti_flags & CNF_FLAG_STRUCT_NOTSET) {
+							res++;
+							_name__namespace__index__key_field->next->next->index = i->idx_name__namespace__index__key_field;
+							_name__namespace__index__key_field->next->index = i->idx_name__namespace__index;
+							_name__namespace__index__key_field->index = i->idx_name__namespace;
+							out_warning(CNF_NOTSET, "Option '%s' is not set", dumpOptDef(_name__namespace__index__key_field));
+						} else {
+							if (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field[i->idx_name__namespace__index__key_field]->fieldno == -1) {
+								res++;
+								_name__namespace__index__key_field__fieldno->next->next->index = i->idx_name__namespace__index__key_field;
+								_name__namespace__index__key_field__fieldno->next->index = i->idx_name__namespace__index;
+								_name__namespace__index__key_field__fieldno->index = i->idx_name__namespace;
+								out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__index__key_field__fieldno));
+							}
+							if (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field[i->idx_name__namespace__index__key_field]->type != NULL && strcmp(c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field[i->idx_name__namespace__index__key_field]->type, "") == 0) {
+								res++;
+								_name__namespace__index__key_field__type->next->next->index = i->idx_name__namespace__index__key_field;
+								_name__namespace__index__key_field__type->next->index = i->idx_name__namespace__index;
+								_name__namespace__index__key_field__type->index = i->idx_name__namespace;
+								out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__index__key_field__type));
+							}
+						}
+
+						i->idx_name__namespace__index__key_field++;
+					}
 
-				if (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field[i->idx_name__namespace__index__key_field]->type != NULL && strcmp(c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field[i->idx_name__namespace__index__key_field]->type, "") == 0) {
-					res++;
-					_name__namespace__index__key_field__type->next->next->index = i->idx_name__namespace__index__key_field;
-					_name__namespace__index__key_field__type->next->index = i->idx_name__namespace__index;
-					_name__namespace__index__key_field__type->index = i->idx_name__namespace;
-					out_warning(CNF_NOTSET, "Option '%s' is not set (or has a default value)", dumpOptDef(_name__namespace__index__key_field__type));
 				}
 
-				i->idx_name__namespace__index__key_field++;
+				i->idx_name__namespace__index++;
 			}
 
-			i->idx_name__namespace__index++;
 		}
 
 		i->idx_name__namespace++;
@@ -1598,19 +1693,19 @@ cleanFlags(tarantool_cfg* c, OptDef* opt) {
 	if (c->namespace != NULL) {
 		i->idx_name__namespace = 0;
 		while (c->namespace[i->idx_name__namespace] != NULL) {
-			c->namespace[i->idx_name__namespace]->__confetti_flags = 0;
+			c->namespace[i->idx_name__namespace]->__confetti_flags &= ~CNF_FLAG_STRUCT_NEW;
 
 
 			if (c->namespace[i->idx_name__namespace]->index != NULL) {
 				i->idx_name__namespace__index = 0;
 				while (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index] != NULL) {
-					c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->__confetti_flags = 0;
+					c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->__confetti_flags &= ~CNF_FLAG_STRUCT_NEW;
 
 
 					if (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field != NULL) {
 						i->idx_name__namespace__index__key_field = 0;
 						while (c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field[i->idx_name__namespace__index__key_field] != NULL) {
-							c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field[i->idx_name__namespace__index__key_field]->__confetti_flags = 0;
+							c->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field[i->idx_name__namespace__index__key_field]->__confetti_flags &= ~CNF_FLAG_STRUCT_NEW;
 
 
 							i->idx_name__namespace__index__key_field++;
@@ -1687,6 +1782,8 @@ dup_tarantool_cfg(tarantool_cfg* dst, tarantool_cfg* src) {
 	dst->namespace = NULL;
 	if (src->namespace != NULL) {
 		i->idx_name__namespace = 0;
+		ARRAYALLOC(dst->namespace, 1, _name__namespace, 0, 0);
+
 		while (src->namespace[i->idx_name__namespace] != NULL) {
 			ARRAYALLOC(dst->namespace, i->idx_name__namespace + 1, _name__namespace, 0, 0);
 
@@ -1697,6 +1794,8 @@ dup_tarantool_cfg(tarantool_cfg* dst, tarantool_cfg* src) {
 			dst->namespace[i->idx_name__namespace]->index = NULL;
 			if (src->namespace[i->idx_name__namespace]->index != NULL) {
 				i->idx_name__namespace__index = 0;
+				ARRAYALLOC(dst->namespace[i->idx_name__namespace]->index, 1, _name__namespace__index, 0, 0);
+
 				while (src->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index] != NULL) {
 					ARRAYALLOC(dst->namespace[i->idx_name__namespace]->index, i->idx_name__namespace__index + 1, _name__namespace__index, 0, 0);
 
@@ -1708,6 +1807,8 @@ dup_tarantool_cfg(tarantool_cfg* dst, tarantool_cfg* src) {
 					dst->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field = NULL;
 					if (src->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field != NULL) {
 						i->idx_name__namespace__index__key_field = 0;
+						ARRAYALLOC(dst->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field, 1, _name__namespace__index__key_field, 0, 0);
+
 						while (src->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field[i->idx_name__namespace__index__key_field] != NULL) {
 							ARRAYALLOC(dst->namespace[i->idx_name__namespace]->index[i->idx_name__namespace__index]->key_field, i->idx_name__namespace__index__key_field + 1, _name__namespace__index__key_field, 0, 0);
 
diff --git a/cfg/tarantool_silverbox_cfg.cfg b/cfg/tarantool_silverbox_cfg.cfg
index de8d1edb3e11d37d50ef0f03a2871435303cb78c..a10736571f9c87a9997d274882114f300b4cbe02 100644
--- a/cfg/tarantool_silverbox_cfg.cfg
+++ b/cfg/tarantool_silverbox_cfg.cfg
@@ -106,17 +106,14 @@ panic_on_wal_error = 0
 remote_hot_standby = 0
 wal_feeder_ipaddr = NULL
 wal_feeder_port = 0
-namespace = [
-    {
-        enabled = 0
+namespace = [    {
+        enabled = -1
         cardinality = -1
         estimated_rows = 0
-        index = [
-            {
+        index = [            {
                 type = ""
                 unique = -1
-                key_field = [
-                    {
+                key_field = [                    {
                         fieldno = -1
                         type = ""
                     }
diff --git a/cfg/tarantool_silverbox_cfg.h b/cfg/tarantool_silverbox_cfg.h
index 149376684bda97522dd675be8e8d93b76103ae83..617fa98d3aeb6549ffc6cc9e5e7889c6a6a219be 100644
--- a/cfg/tarantool_silverbox_cfg.h
+++ b/cfg/tarantool_silverbox_cfg.h
@@ -160,6 +160,11 @@ typedef struct tarantool_cfg {
 	tarantool_cfg_namespace**	namespace;
 } tarantool_cfg;
 
+#define CNF_FLAG_STRUCT_NEW	0x01
+#define CNF_FLAG_STRUCT_NOTSET	0x02
+
+#define CNF_STRUCT_DEFINED(s) ((s) != NULL && ((s)->__confetti_flags & CNF_FLAG_STRUCT_NOTSET) == 0)
+
 int fill_default_tarantool_cfg(tarantool_cfg *c);
 
 void parse_cfg_file_tarantool_cfg(tarantool_cfg *c, FILE *fh, int check_rdonly, int *n_accepted, int *n_skipped);
@@ -172,9 +177,9 @@ int dup_tarantool_cfg(tarantool_cfg *dst, tarantool_cfg *src);
 
 void destroy_tarantool_cfg(tarantool_cfg *c);
 
-char *cmp_tarantool_cfg(tarantool_cfg* c1, tarantool_cfg* c2, int only_check_rdonly)
+char *cmp_tarantool_cfg(tarantool_cfg* c1, tarantool_cfg* c2, int only_check_rdonly);
 
-;typedef struct tarantool_cfg_iterator_t tarantool_cfg_iterator_t;
+typedef struct tarantool_cfg_iterator_t tarantool_cfg_iterator_t;
 tarantool_cfg_iterator_t* tarantool_cfg_iterator_init();
 char* tarantool_cfg_iterator_next(tarantool_cfg_iterator_t* i, tarantool_cfg *c, char **v);
 
diff --git a/core/tarantool.c b/core/tarantool.c
index 9d5b6ddb0486312634427397dcf637947d45279b..9ca286288dec20c425bc23b7ea0f104ce321ee64 100644
--- a/core/tarantool.c
+++ b/core/tarantool.c
@@ -89,12 +89,13 @@ load_cfg(struct tarantool_cfg *conf, i32 check_rdonly)
 
 	parse_cfg_file_tarantool_cfg(conf, f, check_rdonly, &n_accepted, &n_skipped);
 	fclose(f);
-	if (n_accepted == 0 || n_skipped != 0)
-		return -1;
 
 	if (check_cfg_tarantool_cfg(conf) != 0)
 		return -1;
 
+	if (n_accepted == 0 || n_skipped != 0)
+		return -1;
+
 	return mod_check_config(conf);
 }
 
diff --git a/mod/silverbox/box.c b/mod/silverbox/box.c
index 8885d573af83c0ddc0d1bfcd73a135e272115f1f..069cd7a339396244f3c3872a959ce2097dbe1eae 100644
--- a/mod/silverbox/box.c
+++ b/mod/silverbox/box.c
@@ -1064,7 +1064,10 @@ custom_init(void)
 		if (cfg.namespace[i] == NULL)
 			break;
 
-		namespace[i].enabled = !!cfg.namespace[i]->enabled;
+		if (!CNF_STRUCT_DEFINED(cfg.namespace[i]))
+			namespace[i].enabled = false;
+		else
+			namespace[i].enabled = !!cfg.namespace[i]->enabled;
 
 		if (!namespace[i].enabled)
 			continue;
diff --git a/mod/silverbox/silverbox_cfg.cfg_tmpl b/mod/silverbox/silverbox_cfg.cfg_tmpl
index fa993db807c0d58a080fe9919bf26a9677f52b08..d6cd2b31440852d8ae58ce3f908acb5514fefe93 100644
--- a/mod/silverbox/silverbox_cfg.cfg_tmpl
+++ b/mod/silverbox/silverbox_cfg.cfg_tmpl
@@ -62,15 +62,21 @@ wal_feeder_port=0, ro
 
 
 namespace = [
-  enabled = 0, ro, required
-  cardinality = -1, ro
-  estimated_rows = 0, ro
-  index = [
-    type = "", ro, required
-    unique = -1, ro, required
-    key_field = [
-      fieldno = -1, ro, required
-      type = "", ro, required
-    ], ro, required
-  ], ro, required
+  {
+    enabled = -1, required
+    cardinality = -1
+    estimated_rows = 0
+    index = [
+      {
+        type = "", required
+        unique = -1, required
+        key_field = [
+          {
+            fieldno = -1, required
+            type = "", required
+          }, ro,  required
+        ], required
+      }, ro, required
+    ], required
+  }, ro
 ], ro, required
diff --git a/test/box/tarantool_#708685.cfg b/test/box/tarantool_#708685.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..82042900fb34ff1ea23fc137e909844850d88f68
--- /dev/null
+++ b/test/box/tarantool_#708685.cfg
@@ -0,0 +1,21 @@
+slab_alloc_arena = 0.1
+
+pid_file = "box.pid"
+
+primary_port = 33013
+secondary_port = 33014
+admin_port = 33015
+
+rows_per_wal = 50
+
+namespace[0].enabled = 1
+namespace[0].index[0].type = "HASH"
+namespace[0].index[0].unique = 1
+namespace[0].index[0].key_field[0].fieldno = 0
+namespace[0].index[0].key_field[0].type = "NUM"
+
+namespace[2].enabled = 1
+namespace[2].index[0].type = "HASH"
+namespace[2].index[0].unique = 1
+namespace[2].index[0].key_field[0].fieldno = 0
+namespace[2].index[0].key_field[0].type = "NUM"
diff --git a/third_party/confetti/prscfg.c b/third_party/confetti/prscfg.c
index fa30e44ae72d41b1d1a6fee026a25f093d98b636..e52d4931a3839de85a0ea47407a447f7afdb53d7 100644
--- a/third_party/confetti/prscfg.c
+++ b/third_party/confetti/prscfg.c
@@ -538,9 +538,9 @@ union yyalloc
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  10
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  24
+#define YYNRULES  25
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  47
+#define YYNSTATES  48
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -588,7 +588,7 @@ static const yytype_uint8 yyprhs[] =
 {
        0,     0,     3,     5,     7,     9,    11,    16,    18,    22,
       27,    31,    33,    37,    41,    45,    49,    53,    57,    64,
-      71,    78,    80,    81,    86
+      71,    76,    83,    85,    86,    91
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -601,9 +601,9 @@ static const yytype_int8 yyrhs[] =
       -1,    19,    11,     5,    -1,    19,    11,     7,    -1,    19,
       11,     3,    -1,    19,    11,     4,    -1,    19,    11,    12,
       21,    23,    13,    -1,    19,    11,     8,    24,    23,     9,
-      -1,    20,    11,    12,    21,    23,    13,    -1,    14,    -1,
-      -1,    12,    21,    23,    13,    -1,    24,    23,    12,    21,
-      23,    13,    -1
+      -1,    19,    11,     8,     9,    -1,    20,    11,    12,    21,
+      23,    13,    -1,    14,    -1,    -1,    12,    21,    23,    13,
+      -1,    24,    23,    12,    21,    23,    13,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -611,7 +611,7 @@ static const yytype_uint8 yyrline[] =
 {
        0,    92,    92,    96,    97,   101,   102,   111,   112,   116,
      122,   126,   127,   131,   132,   133,   134,   135,   136,   137,
-     138,   142,   143,   147,   158
+     138,   139,   143,   144,   148,   159
 };
 #endif
 
@@ -642,7 +642,7 @@ static const yytype_uint8 yyr1[] =
 {
        0,    15,    16,    17,    17,    18,    18,    19,    19,    20,
       20,    21,    21,    22,    22,    22,    22,    22,    22,    22,
-      22,    23,    23,    24,    24
+      22,    22,    23,    23,    24,    24
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -650,7 +650,7 @@ static const yytype_uint8 yyr2[] =
 {
        0,     2,     1,     1,     1,     1,     4,     1,     3,     4,
        3,     1,     3,     3,     3,     3,     3,     3,     6,     6,
-       6,     1,     0,     4,     6
+       4,     6,     1,     0,     4,     6
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -658,17 +658,17 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     3,     4,     0,     5,     0,     0,     0,    22,    11,
-       1,     0,     0,     0,     0,    21,     0,     0,     8,    10,
+       0,     3,     4,     0,     5,     0,     0,     0,    23,    11,
+       1,     0,     0,     0,     0,    22,     0,     0,     8,    10,
       16,    17,    14,    13,    15,     0,     0,     0,    12,     6,
-       0,    22,    22,    22,    22,     0,     0,     0,     0,    19,
-       0,    18,    20,    23,    22,     0,    24
+      20,     0,    23,    23,    23,    23,     0,     0,     0,     0,
+      19,     0,    18,    21,    24,    23,     0,    25
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int8 yydefgoto[] =
 {
-      -1,     3,     4,     5,     6,     7,     8,     9,    16,    31
+      -1,     3,     4,     5,     6,     7,     8,     9,    16,    32
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -676,17 +676,17 @@ static const yytype_int8 yydefgoto[] =
 #define YYPACT_NINF -26
 static const yytype_int8 yypact[] =
 {
-      29,   -26,   -26,     6,    -4,     4,    17,    24,     3,   -26,
-     -26,    31,    29,    38,    26,   -26,    29,    30,   -26,   -26,
-     -26,   -26,   -26,   -26,   -26,    35,    29,    29,   -26,    37,
-      29,    39,    39,    39,    39,     7,     5,    21,    23,   -26,
-      29,   -26,   -26,   -26,    39,    27,   -26
+      28,   -26,   -26,    10,    -4,    -5,     4,    23,     3,   -26,
+     -26,    27,    28,    35,    32,   -26,    28,    41,   -26,   -26,
+     -26,   -26,   -26,   -26,   -26,    36,    28,    28,   -26,    25,
+     -26,    28,    38,    38,    38,    38,    37,     5,    16,    22,
+     -26,    28,   -26,   -26,   -26,    38,    24,   -26
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int8 yypgoto[] =
 {
-     -26,   -26,   -26,   -26,    40,    42,   -25,   -16,   -21,   -26
+     -26,   -26,   -26,   -26,    39,    42,   -25,   -16,   -21,   -26
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -696,22 +696,22 @@ static const yytype_int8 yypgoto[] =
 #define YYTABLE_NINF -10
 static const yytype_int8 yytable[] =
 {
-      28,    32,    33,    -2,    11,    34,    10,    -7,     1,     2,
-      35,    36,    37,    38,    12,    44,    39,    15,    41,    40,
-      28,    28,    28,    45,     1,     2,     1,     2,    13,    28,
-       1,     2,     1,     2,    42,    14,    43,    17,    27,    29,
-      46,    20,    21,    22,    23,    24,    25,    30,    -9,     0,
-      26,     0,    18,    15,    19
+      28,    33,    34,    -2,    11,    12,    35,    -7,     1,     2,
+      10,    36,    37,    38,    39,    13,    45,    15,    42,     1,
+       2,    28,    28,    28,    46,     1,     2,     1,     2,    43,
+      28,     1,     2,    17,    14,    44,    -9,    47,    20,    21,
+      22,    23,    24,    25,    27,    30,    40,    26,    31,    41,
+      29,    18,    15,     0,    19
 };
 
 static const yytype_int8 yycheck[] =
 {
-      16,    26,    27,     0,     8,    30,     0,    11,     3,     4,
-      31,    32,    33,    34,    10,    40,     9,    14,    13,    12,
-      36,    37,    38,    44,     3,     4,     3,     4,    11,    45,
-       3,     4,     3,     4,    13,    11,    13,     6,    12,     9,
-      13,     3,     4,     5,     6,     7,     8,    12,    11,    -1,
-      12,    -1,    12,    14,    12
+      16,    26,    27,     0,     8,    10,    31,    11,     3,     4,
+       0,    32,    33,    34,    35,    11,    41,    14,    13,     3,
+       4,    37,    38,    39,    45,     3,     4,     3,     4,    13,
+      46,     3,     4,     6,    11,    13,    11,    13,     3,     4,
+       5,     6,     7,     8,    12,     9,     9,    12,    12,    12,
+       9,    12,    14,    -1,    12
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -721,8 +721,8 @@ static const yytype_uint8 yystos[] =
        0,     3,     4,    16,    17,    18,    19,    20,    21,    22,
        0,     8,    10,    11,    11,    14,    23,     6,    19,    20,
        3,     4,     5,     6,     7,     8,    12,    12,    22,     9,
-      12,    24,    21,    21,    21,    23,    23,    23,    23,     9,
-      12,    13,    13,    13,    21,    23,    13
+       9,    12,    24,    21,    21,    21,    23,    23,    23,    23,
+       9,    12,    13,    13,    13,    21,    23,    13
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -1678,14 +1678,14 @@ YYSTYPE yylval;
 
 /* Line 1455 of yacc.c  */
 #line 138 "prscfg.y"
-    { MakeScalarParam((yyval.node), struct, (yyvsp[(1) - (6)].atom), (yyvsp[(4) - (6)].node)); SetParent( (yyval.node), (yyvsp[(4) - (6)].node) ); }
+    { MakeScalarParam((yyval.node), array, (yyvsp[(1) - (4)].atom), NULL); }
     break;
 
   case 21:
 
 /* Line 1455 of yacc.c  */
-#line 142 "prscfg.y"
-    { (yyval.str)=NULL; }
+#line 139 "prscfg.y"
+    { MakeScalarParam((yyval.node), struct, (yyvsp[(1) - (6)].atom), (yyvsp[(4) - (6)].node)); SetParent( (yyval.node), (yyvsp[(4) - (6)].node) ); }
     break;
 
   case 22:
@@ -1698,7 +1698,14 @@ YYSTYPE yylval;
   case 23:
 
 /* Line 1455 of yacc.c  */
-#line 147 "prscfg.y"
+#line 144 "prscfg.y"
+    { (yyval.str)=NULL; }
+    break;
+
+  case 24:
+
+/* Line 1455 of yacc.c  */
+#line 148 "prscfg.y"
     {
 			OptDef	*str;
 			NameAtom	*idx;
@@ -1712,10 +1719,10 @@ YYSTYPE yylval;
 		}
     break;
 
-  case 24:
+  case 25:
 
 /* Line 1455 of yacc.c  */
-#line 158 "prscfg.y"
+#line 159 "prscfg.y"
     {
 			OptDef	*str;
 			NameAtom	*idx;
@@ -1733,7 +1740,7 @@ YYSTYPE yylval;
 
 
 /* Line 1455 of yacc.c  */
-#line 1636 "y.tab.c"
+#line 1643 "y.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -1945,7 +1952,7 @@ YYSTYPE yylval;
 
 
 /* Line 1675 of yacc.c  */
-#line 172 "prscfg.y"
+#line 173 "prscfg.y"
 
 
 static int
@@ -2061,7 +2068,28 @@ plainOptDef(OptDef *def, OptDef *list) {
 				list = plainOptDef(def->paramValue.structval, list);
 				break;
 			case arrayType:
-				list = plainOptDef(def->paramValue.arrayval, list);
+				if (def->paramValue.arrayval == NULL) {
+					ptr = malloc(sizeof(*ptr));
+					if (!ptr) {
+						out_warning(CNF_NOMEMORY, "No memory");
+						freeCfgDef(def);
+						freeCfgDef(list);
+						return NULL;
+					}
+					*ptr = *def;
+					if (compileName(ptr)) {
+						freeName(ptr->name);
+						free(ptr);
+						freeCfgDef(def);
+						freeCfgDef(list);
+						return NULL;
+					}
+					ptr->parent = NULL;
+					ptr->next = list;
+					list = ptr;
+				} else {
+					list = plainOptDef(def->paramValue.arrayval, list);
+				}
 				break;
 			default:
 				out_warning(CNF_INTERNALERROR, "Unkown paramType: %d", def->paramType);
diff --git a/third_party/confetti/prscfg.h b/third_party/confetti/prscfg.h
index 7012260257015a10a0403b4fff27381aed2129fe..ceeeab4e29ef39c42b1620fc38014a62d1adc38f 100644
--- a/third_party/confetti/prscfg.h
+++ b/third_party/confetti/prscfg.h
@@ -49,6 +49,4 @@ typedef	enum ConfettyError {
 	CNF_INTERNALERROR
 } ConfettyError;
 
-#define CNF_FLAG_STRUCT_NEW 0x01
-
 #endif