Commit 89e11486 authored by zhenwei pi's avatar zhenwei pi
Browse files

Introduce redis module ctx flag 'server startup'



A module may be loaded only during initial stage, a typical case is
connection type shared library.

Introduce REDISMODULE_CTX_FLAGS_SERVER_STARTUP context flag
to tell the module the stage of Redis. Then the module gets the flag
by RedisModule_GetContextFlags(ctx), tests flags and returns error in
onload handler.
Suggested-by: default avatarOran Agra <oran@redislabs.com>
Signed-off-by: default avatarzhenwei pi <pizhenwei@bytedance.com>
parent 8a59c193
...@@ -3531,8 +3531,6 @@ int RM_GetSelectedDb(RedisModuleCtx *ctx) { ...@@ -3531,8 +3531,6 @@ int RM_GetSelectedDb(RedisModuleCtx *ctx) {
* context is using RESP3. * context is using RESP3.
* *
* * REDISMODULE_CTX_FLAGS_SERVER_STARTUP: The Redis instance is starting * * REDISMODULE_CTX_FLAGS_SERVER_STARTUP: The Redis instance is starting
*
* * REDISMODULE_CTX_FLAGS_SENTINEL: The Redis instance is in sentinel mode
*/ */
int RM_GetContextFlags(RedisModuleCtx *ctx) { int RM_GetContextFlags(RedisModuleCtx *ctx) {
int flags = 0; int flags = 0;
...@@ -3622,9 +3620,6 @@ int RM_GetContextFlags(RedisModuleCtx *ctx) { ...@@ -3622,9 +3620,6 @@ int RM_GetContextFlags(RedisModuleCtx *ctx) {
if (listLength(server.loadmodule_queue) > 0) if (listLength(server.loadmodule_queue) > 0)
flags |= REDISMODULE_CTX_FLAGS_SERVER_STARTUP; flags |= REDISMODULE_CTX_FLAGS_SERVER_STARTUP;
   
if (server.sentinel_mode)
flags |= REDISMODULE_CTX_FLAGS_SENTINEL;
return flags; return flags;
} }
   
......
...@@ -164,13 +164,11 @@ typedef struct RedisModuleStreamID { ...@@ -164,13 +164,11 @@ typedef struct RedisModuleStreamID {
#define REDISMODULE_CTX_FLAGS_ASYNC_LOADING (1<<23) #define REDISMODULE_CTX_FLAGS_ASYNC_LOADING (1<<23)
/* Redis is starting. */ /* Redis is starting. */
#define REDISMODULE_CTX_FLAGS_SERVER_STARTUP (1<<24) #define REDISMODULE_CTX_FLAGS_SERVER_STARTUP (1<<24)
/* The instance is running in sentinel mode */
#define REDISMODULE_CTX_FLAGS_SENTINEL (1<<25)
/* Next context flag, must be updated when adding new flags above! /* Next context flag, must be updated when adding new flags above!
This flag should not be used directly by the module. This flag should not be used directly by the module.
* Use RedisModule_GetContextFlagsAll instead. */ * Use RedisModule_GetContextFlagsAll instead. */
#define _REDISMODULE_CTX_FLAGS_NEXT (1<<26) #define _REDISMODULE_CTX_FLAGS_NEXT (1<<25)
/* Keyspace changes notification classes. Every class is associated with a /* Keyspace changes notification classes. Every class is associated with a
* character for configuration purposes. * character for configuration purposes.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment