diff options
-rw-r--r-- | src/config.c | 15 | ||||
-rw-r--r-- | tests/unit/introspection.tcl | 23 |
2 files changed, 28 insertions, 10 deletions
diff --git a/src/config.c b/src/config.c index 9856af3c0..c714b1994 100644 --- a/src/config.c +++ b/src/config.c @@ -1171,18 +1171,13 @@ struct rewriteConfigState *rewriteConfigReadOldFile(char *path) { * Append the line and populate the option -> line numbers map. */ rewriteConfigAppendLine(state,line); - /* Translate options using the word "slave" to the corresponding name - * "replica", before adding such option to the config name -> lines - * mapping. */ - char *p = strstr(argv[0],"slave"); - if (p) { - sds alt = sdsempty(); - alt = sdscatlen(alt,argv[0],p-argv[0]); - alt = sdscatlen(alt,"replica",7); - alt = sdscatlen(alt,p+5,strlen(p+5)); + /* If this is a alias config, replace it with the original name. */ + standardConfig *s_conf = lookupConfig(argv[0]); + if (s_conf && s_conf->flags & ALIAS_CONFIG) { sdsfree(argv[0]); - argv[0] = alt; + argv[0] = sdsnew(s_conf->alias); } + /* If this is sentinel config, we use sentinel "sentinel <config>" as option to avoid messing up the sequence. */ if (server.sentinel_mode && argc > 1 && !strcasecmp(argv[0],"sentinel")) { diff --git a/tests/unit/introspection.tcl b/tests/unit/introspection.tcl index 2bee01e7c..9b5575d75 100644 --- a/tests/unit/introspection.tcl +++ b/tests/unit/introspection.tcl @@ -594,3 +594,26 @@ test {CONFIG REWRITE handles rename-command properly} { } } {} {external:skip} +test {CONFIG REWRITE handles alias config properly} { + start_server {tags {"introspection"} overrides {hash-max-listpack-entries 20 hash-max-ziplist-entries 21}} { + assert_equal [r config get hash-max-listpack-entries] {hash-max-listpack-entries 21} + assert_equal [r config get hash-max-ziplist-entries] {hash-max-ziplist-entries 21} + r config set hash-max-listpack-entries 100 + + r config rewrite + restart_server 0 true false + + assert_equal [r config get hash-max-listpack-entries] {hash-max-listpack-entries 100} + } + # test the order doesn't matter + start_server {tags {"introspection"} overrides {hash-max-ziplist-entries 20 hash-max-listpack-entries 21}} { + assert_equal [r config get hash-max-listpack-entries] {hash-max-listpack-entries 21} + assert_equal [r config get hash-max-ziplist-entries] {hash-max-ziplist-entries 21} + r config set hash-max-listpack-entries 100 + + r config rewrite + restart_server 0 true false + + assert_equal [r config get hash-max-listpack-entries] {hash-max-listpack-entries 100} + } +} {} {external:skip} |