Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion redismodule.h
Original file line number Diff line number Diff line change
Expand Up @@ -520,7 +520,8 @@ typedef void (*RedisModuleEventLoopOneShotFunc)(void *user_data);
#define REDISMODULE_EVENT_KEY 17
#define REDISMODULE_EVENT_CLUSTER_SLOT_MIGRATION 18
#define REDISMODULE_EVENT_CLUSTER_SLOT_MIGRATION_TRIM 19
#define _REDISMODULE_EVENT_NEXT 20 /* Next event flag, should be updated if a new event added. */
#define REDISMODULE_EVENT_CLUSTER_TOPOLOGY_CHANGE 20
#define _REDISMODULE_EVENT_NEXT 21 /* Next event flag, should be updated if a new event added. */

typedef struct RedisModuleEvent {
uint64_t id; /* REDISMODULE_EVENT_... defines. */
Expand Down Expand Up @@ -639,6 +640,10 @@ static const RedisModuleEvent
RedisModuleEvent_ClusterSlotMigrationTrim = {
REDISMODULE_EVENT_CLUSTER_SLOT_MIGRATION_TRIM,
1
},
RedisModuleEvent_ClusterTopologyChange = {
REDISMODULE_EVENT_CLUSTER_TOPOLOGY_CHANGE,
1
};

/* Those are values that are used for the 'subevent' callback argument. */
Expand Down Expand Up @@ -731,6 +736,9 @@ static const RedisModuleEvent
#define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_TRIM_BACKGROUND 2
#define _REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_TRIM_NEXT 3

/* RedisModuleEvent_ClusterTopologyChange has no meaningful subevent. */
#define _REDISMODULE_SUBEVENT_CLUSTER_TOPOLOGY_CHANGE_NEXT 0

/* RedisModuleClientInfo flags. */
#define REDISMODULE_CLIENTINFO_FLAG_SSL (1<<0)
#define REDISMODULE_CLIENTINFO_FLAG_PUBSUB (1<<1)
Expand Down Expand Up @@ -895,6 +903,26 @@ typedef struct RedisModuleClusterSlotMigrationTrimInfo {

#define RedisModuleClusterSlotMigrationTrimInfo RedisModuleClusterSlotMigrationTrimInfoV1

/* Reason flags reported in RedisModuleClusterTopologyChangeInfo.change_flags.
* More than one bit may be set when several changes were collapsed into a
* single (debounced) RedisModuleEvent_ClusterTopologyChange notification. */
#define REDISMODULE_CLUSTER_TOPOLOGY_CHANGE_FLAG_SLOT (1<<0) /* Slot ownership changed. */
#define REDISMODULE_CLUSTER_TOPOLOGY_CHANGE_FLAG_ROLE (1<<1) /* A node changed its primary/replica role. */
#define REDISMODULE_CLUSTER_TOPOLOGY_CHANGE_FLAG_STATE (1<<2) /* The cluster OK/FAIL state changed. */
#define REDISMODULE_CLUSTER_TOPOLOGY_CHANGE_FLAG_NODE (1<<3) /* A node joined or left the cluster. */

#define REDISMODULE_CLUSTER_TOPOLOGY_CHANGE_INFO_VERSION 1

typedef struct RedisModuleClusterTopologyChangeInfo {
uint64_t version; /* Not used since this structure is never passed
from the module to the core right now. Here
for future compatibility. */
uint64_t change_flags; /* Bitmask of REDISMODULE_CLUSTER_TOPOLOGY_CHANGE_FLAG_*
reasons that contributed to this notification. */
} RedisModuleClusterTopologyChangeInfoV1;

#define RedisModuleClusterTopologyChangeInfo RedisModuleClusterTopologyChangeInfoV1

typedef enum {
REDISMODULE_ACL_LOG_AUTH = 0, /* Authentication failure */
REDISMODULE_ACL_LOG_CMD, /* Command authorization failure */
Expand Down