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
278bd6e3
Commit
278bd6e3
authored
Oct 17, 2019
by
antirez
Browse files
Modules: add new flags to context, replica state + more.
parent
61d9a154
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/module.c
View file @
278bd6e3
...
...
@@ -1517,6 +1517,21 @@ int RM_GetSelectedDb(RedisModuleCtx *ctx) {
*
* * REDISMODULE_CTX_FLAGS_OOM_WARNING: Less than 25% of memory remains before
* reaching the maxmemory level.
*
* * REDISMODULE_CTX_FLAGS_REPLICA_IS_STALE: No active link with the master.
*
* * REDISMODULE_CTX_FLAGS_REPLICA_IS_CONNECTING: The replica is trying to
* connect with the master.
*
* * REDISMODULE_CTX_FLAGS_REPLICA_IS_TRANSFERRING: Master -> Replica RDB
* transfer is in progress.
*
* * REDISMODULE_CTX_FLAGS_REPLICA_IS_ONLINE: The replica has an active link
* with its master. This is the
* contrary of STALE state.
*
* * REDISMODULE_CTX_FLAGS_ACTIVE_CHILD: There is currently some background
* process active (RDB, AUX or module).
*/
int
RM_GetContextFlags
(
RedisModuleCtx
*
ctx
)
{
...
...
@@ -1559,6 +1574,20 @@ int RM_GetContextFlags(RedisModuleCtx *ctx) {
flags
|=
REDISMODULE_CTX_FLAGS_SLAVE
;
if
(
server
.
repl_slave_ro
)
flags
|=
REDISMODULE_CTX_FLAGS_READONLY
;
/* Replica state flags. */
if
(
server
.
repl_state
==
REPL_STATE_CONNECT
||
server
.
repl_state
==
REPL_STATE_CONNECTING
)
{
flags
|=
REDISMODULE_CTX_FLAGS_REPLICA_IS_CONNECTING
;
}
else
if
(
server
.
repl_state
==
REPL_STATE_TRANSFER
)
{
flags
|=
REDISMODULE_CTX_FLAGS_REPLICA_IS_TRANSFERRING
;
}
else
if
(
server
.
repl_state
==
REPL_STATE_CONNECTED
)
{
flags
|=
REDISMODULE_CTX_FLAGS_REPLICA_IS_ONLINE
;
}
if
(
server
.
repl_state
!=
REPL_STATE_CONNECTED
)
flags
|=
REDISMODULE_CTX_FLAGS_REPLICA_IS_STALE
;
}
/* OOM flag. */
...
...
@@ -1567,6 +1596,9 @@ int RM_GetContextFlags(RedisModuleCtx *ctx) {
if
(
retval
==
C_ERR
)
flags
|=
REDISMODULE_CTX_FLAGS_OOM
;
if
(
level
>
0
.
75
)
flags
|=
REDISMODULE_CTX_FLAGS_OOM_WARNING
;
/* Presence of children processes. */
if
(
hasActiveChildProcess
())
flags
|=
REDISMODULE_CTX_FLAGS_ACTIVE_CHILD
;
return
flags
;
}
...
...
src/redismodule.h
View file @
278bd6e3
...
...
@@ -89,7 +89,22 @@
#define REDISMODULE_CTX_FLAGS_REPLICATED (1<<12)
/* Redis is currently loading either from AOF or RDB. */
#define REDISMODULE_CTX_FLAGS_LOADING (1<<13)
/* The replica has no link with its master, note that
* there is the inverse flag as well:
*
* REDISMODULE_CTX_FLAGS_REPLICA_IS_ONLINE
*
* The two flags are exclusive, one or the other can be set. */
#define REDISMODULE_CTX_FLAGS_REPLICA_IS_STALE (1<<14)
/* The replica is trying to connect with the master.
* (REPL_STATE_CONNECT and REPL_STATE_CONNECTING states) */
#define REDISMODULE_CTX_FLAGS_REPLICA_IS_CONNECTING (1<<15)
/* THe replica is receiving an RDB file from its master. */
#define REDISMODULE_CTX_FLAGS_REPLICA_IS_TRANSFERRING (1<<16)
/* The replica is online, receiving updates from its master. */
#define REDISMODULE_CTX_FLAGS_REPLICA_IS_ONLINE (1<<17)
/* There is currently some background process active. */
#define REDISMODULE_CTX_FLAGS_ACTIVE_CHILD (1<<18)
#define REDISMODULE_NOTIFY_GENERIC (1<<2)
/* g */
#define REDISMODULE_NOTIFY_STRING (1<<3)
/* $ */
...
...
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