Sentinel: when writing config on disk, remember sentinels runid.

This commit is contained in:
antirez 2013-11-19 11:11:43 +01:00
parent 5450833d02
commit 0a35f65301

View File

@ -1320,10 +1320,11 @@ char *sentinelHandleConfiguration(char **argv, int argc) {
{ {
return "Wrong hostname or port for slave."; return "Wrong hostname or port for slave.";
} }
} else if (!strcasecmp(argv[0],"known-sentinel") && argc == 4) { } else if (!strcasecmp(argv[0],"known-sentinel") &&
(argc == 4 || argc == 5)) {
sentinelRedisInstance *si; sentinelRedisInstance *si;
/* known-sentinel <name> <ip> <port> */ /* known-sentinel <name> <ip> <port> [runid] */
ri = sentinelGetMasterByName(argv[1]); ri = sentinelGetMasterByName(argv[1]);
if (!ri) return "No such master with specified name."; if (!ri) return "No such master with specified name.";
if ((si = createSentinelRedisInstance(NULL,SRI_SENTINEL,argv[2], if ((si = createSentinelRedisInstance(NULL,SRI_SENTINEL,argv[2],
@ -1331,6 +1332,7 @@ char *sentinelHandleConfiguration(char **argv, int argc) {
{ {
return "Wrong hostname or port for sentinel."; return "Wrong hostname or port for sentinel.";
} }
if (argc == 5) si->runid = sdsnew(argv[4]);
} else { } else {
return "Unrecognized sentinel configuration statement."; return "Unrecognized sentinel configuration statement.";
} }
@ -1442,8 +1444,10 @@ void rewriteConfigSentinelOption(struct rewriteConfigState *state) {
while((de = dictNext(di2)) != NULL) { while((de = dictNext(di2)) != NULL) {
ri = dictGetVal(de); ri = dictGetVal(de);
line = sdscatprintf(sdsempty(), line = sdscatprintf(sdsempty(),
"sentinel known-sentinel %s %s %d", "sentinel known-sentinel %s %s %d%s%s",
master->name, ri->addr->ip, ri->addr->port); master->name, ri->addr->ip, ri->addr->port,
ri->runid ? " " : "",
ri->runid ? ri->runid : "");
rewriteConfigRewriteLine(state,"sentinel",line,1); rewriteConfigRewriteLine(state,"sentinel",line,1);
} }
dictReleaseIterator(di2); dictReleaseIterator(di2);