diff options
author | antirez <antirez@gmail.com> | 2018-09-19 12:02:37 +0200 |
---|---|---|
committer | antirez <antirez@gmail.com> | 2018-09-19 12:02:37 +0200 |
commit | 3213e8de921ef55896f740fb55e9469bbe2a22c4 (patch) | |
tree | 1b02a767b33a06124c777fe729abd6f3e2b74970 /src/module.c | |
parent | 777cc5b98738df0156b1c822d7fb7851b5ffb4a6 (diff) | |
download | redis-cluster-api-improvements.tar.gz |
Module cluster flags: add RM_SetClusterFlags() API.cluster-api-improvements
Diffstat (limited to 'src/module.c')
-rw-r--r-- | src/module.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/module.c b/src/module.c index 9b7365fe2..57e7c92f3 100644 --- a/src/module.c +++ b/src/module.c @@ -4132,6 +4132,31 @@ int RM_GetClusterNodeInfo(RedisModuleCtx *ctx, const char *id, char *ip, char *m return REDISMODULE_OK; } +/* Set Redis Cluster flags in order to change the normal behavior of + * Redis Cluster, especially with the goal of disabling certain functions. + * This is useful for modules that use the Cluster API in order to create + * a different distributed system, but still want to use the Redis Cluster + * message bus. Flags that can be set: + * + * CLUSTER_MODULE_FLAG_NO_FAILOVER + * CLUSTER_MODULE_FLAG_NO_REDIRECTION + * + * With the following effects: + * + * NO_FAILOVER: prevent Redis Cluster slaves to failover a failing master. + * Also disables the replica migration feature. + * + * NO_REDIRECTION: Every node will accept any key, without trying to perform + * partitioning according to the user Redis Cluster algorithm. + * Slots informations will still be propagated across the + * cluster, but without effects. */ +void RM_SetClusterFlags(RedisModuleCtx *ctx, uint64_t flags) { + if (flags & REDISMODULE_CLUSTER_FLAG_NO_FAILOVER) + server.cluster_module_flags |= CLUSTER_MODULE_FLAG_NO_FAILOVER; + if (flags & REDISMODULE_CLUSTER_FLAG_NO_REDIRECTION) + server.cluster_module_flags |= CLUSTER_MODULE_FLAG_NO_REDIRECTION; +} + /* -------------------------------------------------------------------------- * Modules Timers API * @@ -4708,4 +4733,5 @@ void moduleRegisterCoreAPI(void) { REGISTER_API(BlockedClientDisconnected); REGISTER_API(SetDisconnectCallback); REGISTER_API(GetBlockedClientHandle); + REGISTER_API(SetClusterFlags); } |