Throw load error when replicaof config is before active-replica or multi-master configs (#666)

* load error when replicaof is set before multi-master or active-replica

* only an issue if enabled
This commit is contained in:
Malavan Sotheeswaran 2023-06-01 13:38:34 -04:00 committed by GitHub
parent dc419a4e6e
commit 05430586d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -749,6 +749,18 @@ void loadServerConfigFromString(char *config) {
g_pserver->fActiveReplica = CONFIG_DEFAULT_ACTIVE_REPLICA;
err = "argument must be 'yes' or 'no'"; goto loaderr;
}
if (listLength(g_pserver->masters) && g_pserver->fActiveReplica) {
err = "must not set replica-of config before active-replica config"; goto loaderr;
}
} else if (!strcasecmp(argv[0], "multi-master") && argc == 2) {
g_pserver->enable_multimaster = yesnotoi(argv[1]);
if (g_pserver->enable_multimaster == -1) {
g_pserver->enable_multimaster = CONFIG_DEFAULT_ENABLE_MULTIMASTER;
err = "argument must be 'yes' or 'no'"; goto loaderr;
}
if (listLength(g_pserver->masters) && g_pserver->enable_multimaster) {
err = "must not set replica-of config before multi-master config"; goto loaderr;
}
} else if (!strcasecmp(argv[0], "tls-allowlist")) {
if (argc < 2) {
err = "must supply at least one element in the allow list"; goto loaderr;
@ -2798,7 +2810,6 @@ standardConfig configs[] = {
createBoolConfig("replica-serve-stale-data", "slave-serve-stale-data", MODIFIABLE_CONFIG, g_pserver->repl_serve_stale_data, 1, NULL, NULL),
createBoolConfig("replica-read-only", "slave-read-only", MODIFIABLE_CONFIG, g_pserver->repl_slave_ro, 1, NULL, NULL),
createBoolConfig("replica-ignore-maxmemory", "slave-ignore-maxmemory", MODIFIABLE_CONFIG, g_pserver->repl_slave_ignore_maxmemory, 1, NULL, NULL),
createBoolConfig("multi-master", NULL, IMMUTABLE_CONFIG, g_pserver->enable_multimaster,CONFIG_DEFAULT_ENABLE_MULTIMASTER, NULL, NULL),
createBoolConfig("jemalloc-bg-thread", NULL, MODIFIABLE_CONFIG, cserver.jemalloc_bg_thread, 1, NULL, updateJemallocBgThread),
createBoolConfig("activedefrag", NULL, MODIFIABLE_CONFIG, cserver.active_defrag_enabled, 0, isValidActiveDefrag, NULL),
createBoolConfig("syslog-enabled", NULL, IMMUTABLE_CONFIG, g_pserver->syslog_enabled, 0, NULL, NULL),