Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
de499f7f
Commit
de499f7f
authored
Aug 29, 2012
by
antirez
Browse files
Sentinel: INFO command implementation.
parent
b65f3c21
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/sentinel.c
View file @
de499f7f
...
...
@@ -366,6 +366,7 @@ dictType leaderVotesDictType = {
/* =========================== Initialization =============================== */
void
sentinelCommand
(
redisClient
*
c
);
void
sentinelInfoCommand
(
redisClient
*
c
);
struct
redisCommand
sentinelcmds
[]
=
{
{
"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
},
{
"unsubscribe"
,
unsubscribeCommand
,
-
1
,
""
,
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
...
...
@@ -2046,6 +2048,65 @@ numargserr:
(
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 ======================= */
/* Is this instance down from our point of view? */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment