From c1d2036976f9add960a739f2f8bdfcffcca39f66 Mon Sep 17 00:00:00 2001 From: Aleksey Demakov <ademakov@gmail.com> Date: Thu, 9 Feb 2012 15:01:36 +0400 Subject: [PATCH] Fix reload configuration problem for setups with gaps in arrays. --- cfg/tarantool_box_cfg.c | 3 +++ test/box/configuration.result | 4 ++++ test/box/configuration.test | 3 +-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cfg/tarantool_box_cfg.c b/cfg/tarantool_box_cfg.c index b0d6e2747e..1044259140 100644 --- a/cfg/tarantool_box_cfg.c +++ b/cfg/tarantool_box_cfg.c @@ -2005,6 +2005,7 @@ dup_tarantool_cfg(tarantool_cfg* dst, tarantool_cfg* src) { while (src->space[i->idx_name__space] != NULL) { ARRAYALLOC(dst->space, i->idx_name__space + 1, _name__space, 0, 0); + dst->space[i->idx_name__space]->__confetti_flags = src->space[i->idx_name__space]->__confetti_flags; dst->space[i->idx_name__space]->enabled = src->space[i->idx_name__space]->enabled; dst->space[i->idx_name__space]->cardinality = src->space[i->idx_name__space]->cardinality; dst->space[i->idx_name__space]->estimated_rows = src->space[i->idx_name__space]->estimated_rows; @@ -2017,6 +2018,7 @@ dup_tarantool_cfg(tarantool_cfg* dst, tarantool_cfg* src) { while (src->space[i->idx_name__space]->index[i->idx_name__space__index] != NULL) { ARRAYALLOC(dst->space[i->idx_name__space]->index, i->idx_name__space__index + 1, _name__space__index, 0, 0); + dst->space[i->idx_name__space]->index[i->idx_name__space__index]->__confetti_flags = src->space[i->idx_name__space]->index[i->idx_name__space__index]->__confetti_flags; if (dst->space[i->idx_name__space]->index[i->idx_name__space__index]->type) free(dst->space[i->idx_name__space]->index[i->idx_name__space__index]->type);dst->space[i->idx_name__space]->index[i->idx_name__space__index]->type = src->space[i->idx_name__space]->index[i->idx_name__space__index]->type == NULL ? NULL : strdup(src->space[i->idx_name__space]->index[i->idx_name__space__index]->type); if (src->space[i->idx_name__space]->index[i->idx_name__space__index]->type != NULL && dst->space[i->idx_name__space]->index[i->idx_name__space__index]->type == NULL) return CNF_NOMEMORY; @@ -2030,6 +2032,7 @@ dup_tarantool_cfg(tarantool_cfg* dst, tarantool_cfg* src) { while (src->space[i->idx_name__space]->index[i->idx_name__space__index]->key_field[i->idx_name__space__index__key_field] != NULL) { ARRAYALLOC(dst->space[i->idx_name__space]->index[i->idx_name__space__index]->key_field, i->idx_name__space__index__key_field + 1, _name__space__index__key_field, 0, 0); + dst->space[i->idx_name__space]->index[i->idx_name__space__index]->key_field[i->idx_name__space__index__key_field]->__confetti_flags = src->space[i->idx_name__space]->index[i->idx_name__space__index]->key_field[i->idx_name__space__index__key_field]->__confetti_flags; dst->space[i->idx_name__space]->index[i->idx_name__space__index]->key_field[i->idx_name__space__index__key_field]->fieldno = src->space[i->idx_name__space]->index[i->idx_name__space__index]->key_field[i->idx_name__space__index__key_field]->fieldno; if (dst->space[i->idx_name__space]->index[i->idx_name__space__index]->key_field[i->idx_name__space__index__key_field]->type) free(dst->space[i->idx_name__space]->index[i->idx_name__space__index]->key_field[i->idx_name__space__index__key_field]->type);dst->space[i->idx_name__space]->index[i->idx_name__space__index]->key_field[i->idx_name__space__index__key_field]->type = src->space[i->idx_name__space]->index[i->idx_name__space__index]->key_field[i->idx_name__space__index__key_field]->type == NULL ? NULL : strdup(src->space[i->idx_name__space]->index[i->idx_name__space__index]->key_field[i->idx_name__space__index__key_field]->type); if (src->space[i->idx_name__space]->index[i->idx_name__space__index]->key_field[i->idx_name__space__index__key_field]->type != NULL && dst->space[i->idx_name__space]->index[i->idx_name__space__index]->key_field[i->idx_name__space__index__key_field]->type == NULL) diff --git a/test/box/configuration.result b/test/box/configuration.result index d9cde07982..e84f963d5b 100644 --- a/test/box/configuration.result +++ b/test/box/configuration.result @@ -197,6 +197,10 @@ lua box.space[0].enabled --- - true ... +reload configuration +--- +ok +... # Test field type conflict in keys diff --git a/test/box/configuration.test b/test/box/configuration.test index 97356e8737..b1a9ba605e 100644 --- a/test/box/configuration.test +++ b/test/box/configuration.test @@ -36,7 +36,6 @@ print """ """ # stop current server server.stop() -# start server from config with different boolean represenation server.deploy("box/tarantool_bug876541.cfg") # check values exec admin "lua box.cfg.wal_fsync_delay" @@ -47,11 +46,11 @@ print """ """ # stop current server server.stop() -# start server from config with different boolean represenation server.deploy("box/tarantool_bug928413.cfg") # check values exec admin "lua box.cfg.wal_fsync_delay" exec admin "lua box.space[0].enabled" +exec admin "reload configuration" print """ # Test field type conflict in keys -- GitLab