From e5e2d596bf830c007e71c7683022be4aab578384 Mon Sep 17 00:00:00 2001 From: Tom Gabsow Date: Thu, 18 Jun 2026 09:52:29 +0300 Subject: [PATCH] MOD-16382 Vendor RedisModuleEvent_ClusterTopologyChange (event id 20) Mirror the new server event from redis/redis#15350 so modules built against this SDK can subscribe to cluster topology change notifications. The event carries no data payload (the module reads cluster info via the existing APIs), so only the event id and subevent constants are vendored. Relates-to: RED-148990 Co-Authored-By: Claude Opus 4.8 --- redismodule.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/redismodule.h b/redismodule.h index 7f2e448..b21dde4 100644 --- a/redismodule.h +++ b/redismodule.h @@ -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. */ @@ -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. */ @@ -731,6 +736,11 @@ static const RedisModuleEvent #define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_TRIM_BACKGROUND 2 #define _REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_TRIM_NEXT 3 +#define REDISMODULE_SUBEVENT_CLUSTER_TOPOLOGY_CHANGE_STARTUP 0 +#define REDISMODULE_SUBEVENT_CLUSTER_TOPOLOGY_CHANGE_TOPOLOGY_CHANGED 1 +#define REDISMODULE_SUBEVENT_CLUSTER_TOPOLOGY_CHANGE_PRIMARY_CHANGED 2 +#define _REDISMODULE_SUBEVENT_CLUSTER_TOPOLOGY_CHANGE_NEXT 3 + /* RedisModuleClientInfo flags. */ #define REDISMODULE_CLIENTINFO_FLAG_SSL (1<<0) #define REDISMODULE_CLIENTINFO_FLAG_PUBSUB (1<<1)