mirror of
https://github.com/fluencelabs/redis
synced 2025-03-30 22:31:03 +00:00
Sentinel: INFO command implementation.
This commit is contained in:
parent
8246e58abe
commit
58186b9dcf
@ -366,6 +366,7 @@ dictType leaderVotesDictType = {
|
|||||||
/* =========================== Initialization =============================== */
|
/* =========================== Initialization =============================== */
|
||||||
|
|
||||||
void sentinelCommand(redisClient *c);
|
void sentinelCommand(redisClient *c);
|
||||||
|
void sentinelInfoCommand(redisClient *c);
|
||||||
|
|
||||||
struct redisCommand sentinelcmds[] = {
|
struct redisCommand sentinelcmds[] = {
|
||||||
{"ping",pingCommand,1,"",0,NULL,0,0,0,0,0},
|
{"ping",pingCommand,1,"",0,NULL,0,0,0,0,0},
|
||||||
@ -373,7 +374,8 @@ struct redisCommand sentinelcmds[] = {
|
|||||||
{"subscribe",subscribeCommand,-2,"",0,NULL,0,0,0,0,0},
|
{"subscribe",subscribeCommand,-2,"",0,NULL,0,0,0,0,0},
|
||||||
{"unsubscribe",unsubscribeCommand,-1,"",0,NULL,0,0,0,0,0},
|
{"unsubscribe",unsubscribeCommand,-1,"",0,NULL,0,0,0,0,0},
|
||||||
{"psubscribe",psubscribeCommand,-2,"",0,NULL,0,0,0,0,0},
|
{"psubscribe",psubscribeCommand,-2,"",0,NULL,0,0,0,0,0},
|
||||||
{"punsubscribe",punsubscribeCommand,-1,"",0,NULL,0,0,0,0,0}
|
{"punsubscribe",punsubscribeCommand,-1,"",0,NULL,0,0,0,0,0},
|
||||||
|
{"info",sentinelInfoCommand,-1,"",0,NULL,0,0,0,0,0}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* This function overwrites a few normal Redis config default with Sentinel
|
/* This function overwrites a few normal Redis config default with Sentinel
|
||||||
@ -2046,6 +2048,65 @@ numargserr:
|
|||||||
(char*)c->argv[1]->ptr);
|
(char*)c->argv[1]->ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sentinelInfoCommand(redisClient *c) {
|
||||||
|
char *section = c->argc == 2 ? c->argv[1]->ptr : "default";
|
||||||
|
sds info = sdsempty();
|
||||||
|
int defsections = !strcasecmp(section,"default");
|
||||||
|
int sections = 0;
|
||||||
|
|
||||||
|
if (c->argc > 2) {
|
||||||
|
addReply(c,shared.syntaxerr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcasecmp(section,"server") || defsections) {
|
||||||
|
if (sections++) info = sdscat(info,"\r\n");
|
||||||
|
sds serversection = genRedisInfoString("server");
|
||||||
|
info = sdscatlen(info,serversection,sdslen(serversection));
|
||||||
|
sdsfree(serversection);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcasecmp(section,"sentinel") || defsections) {
|
||||||
|
dictIterator *di;
|
||||||
|
dictEntry *de;
|
||||||
|
int master_id = 0;
|
||||||
|
|
||||||
|
if (sections++) info = sdscat(info,"\r\n");
|
||||||
|
info = sdscatprintf(info,
|
||||||
|
"# Sentinel\r\n"
|
||||||
|
"sentinel_masters:%lu\r\n"
|
||||||
|
"sentinel_tilt:%d\r\n"
|
||||||
|
"sentinel_running_scripts:%d\r\n"
|
||||||
|
"sentinel_scripts_queue_length:%ld\r\n",
|
||||||
|
dictSize(sentinel.masters),
|
||||||
|
sentinel.tilt,
|
||||||
|
sentinel.running_scripts,
|
||||||
|
listLength(sentinel.scripts_queue));
|
||||||
|
|
||||||
|
di = dictGetIterator(sentinel.masters);
|
||||||
|
while((de = dictNext(di)) != NULL) {
|
||||||
|
sentinelRedisInstance *ri = dictGetVal(de);
|
||||||
|
char *status = "ok";
|
||||||
|
|
||||||
|
if (ri->flags & SRI_O_DOWN) status = "odown";
|
||||||
|
else if (ri->flags & SRI_S_DOWN) status = "sdown";
|
||||||
|
info = sdscatprintf(info,
|
||||||
|
"master%d:name=%s,status=%s,address=%s:%d,"
|
||||||
|
"slaves=%lu,sentinels=%lu\r\n",
|
||||||
|
master_id++, ri->name, status,
|
||||||
|
ri->addr->ip, ri->addr->port,
|
||||||
|
dictSize(ri->slaves),
|
||||||
|
dictSize(ri->sentinels)+1);
|
||||||
|
}
|
||||||
|
dictReleaseIterator(di);
|
||||||
|
}
|
||||||
|
|
||||||
|
addReplySds(c,sdscatprintf(sdsempty(),"$%lu\r\n",
|
||||||
|
(unsigned long)sdslen(info)));
|
||||||
|
addReplySds(c,info);
|
||||||
|
addReply(c,shared.crlf);
|
||||||
|
}
|
||||||
|
|
||||||
/* ===================== SENTINEL availability checks ======================= */
|
/* ===================== SENTINEL availability checks ======================= */
|
||||||
|
|
||||||
/* Is this instance down from our point of view? */
|
/* Is this instance down from our point of view? */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user