mirror of
https://github.com/fluencelabs/redis
synced 2025-05-06 16:02:14 +00:00
Modules: add new flags to context, replica state + more.
This commit is contained in:
parent
efb6495a44
commit
8651e6a10d
32
src/module.c
32
src/module.c
@ -1551,6 +1551,21 @@ int RM_GetSelectedDb(RedisModuleCtx *ctx) {
|
|||||||
*
|
*
|
||||||
* * REDISMODULE_CTX_FLAGS_OOM_WARNING: Less than 25% of memory remains before
|
* * REDISMODULE_CTX_FLAGS_OOM_WARNING: Less than 25% of memory remains before
|
||||||
* reaching the maxmemory level.
|
* 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) {
|
int RM_GetContextFlags(RedisModuleCtx *ctx) {
|
||||||
|
|
||||||
@ -1593,6 +1608,20 @@ int RM_GetContextFlags(RedisModuleCtx *ctx) {
|
|||||||
flags |= REDISMODULE_CTX_FLAGS_SLAVE;
|
flags |= REDISMODULE_CTX_FLAGS_SLAVE;
|
||||||
if (server.repl_slave_ro)
|
if (server.repl_slave_ro)
|
||||||
flags |= REDISMODULE_CTX_FLAGS_READONLY;
|
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. */
|
/* OOM flag. */
|
||||||
@ -1601,6 +1630,9 @@ int RM_GetContextFlags(RedisModuleCtx *ctx) {
|
|||||||
if (retval == C_ERR) flags |= REDISMODULE_CTX_FLAGS_OOM;
|
if (retval == C_ERR) flags |= REDISMODULE_CTX_FLAGS_OOM;
|
||||||
if (level > 0.75) flags |= REDISMODULE_CTX_FLAGS_OOM_WARNING;
|
if (level > 0.75) flags |= REDISMODULE_CTX_FLAGS_OOM_WARNING;
|
||||||
|
|
||||||
|
/* Presence of children processes. */
|
||||||
|
if (hasActiveChildProcess()) flags |= REDISMODULE_CTX_FLAGS_ACTIVE_CHILD;
|
||||||
|
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,7 +89,22 @@
|
|||||||
#define REDISMODULE_CTX_FLAGS_REPLICATED (1<<12)
|
#define REDISMODULE_CTX_FLAGS_REPLICATED (1<<12)
|
||||||
/* Redis is currently loading either from AOF or RDB. */
|
/* Redis is currently loading either from AOF or RDB. */
|
||||||
#define REDISMODULE_CTX_FLAGS_LOADING (1<<13)
|
#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_GENERIC (1<<2) /* g */
|
||||||
#define REDISMODULE_NOTIFY_STRING (1<<3) /* $ */
|
#define REDISMODULE_NOTIFY_STRING (1<<3) /* $ */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user