Skip to content

Commit 5d56931

Browse files
committed
redismodule.h with DelayTrimming flags
1 parent 69baff4 commit 5d56931

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

redismodule.h

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ typedef long long ustime_t;
4646
/* API versions. */
4747
#define REDISMODULE_APIVER_1 1
4848

49-
/* Version of the RedisModuleTypeMethods structure. Once the RedisModuleTypeMethods
49+
/* Version of the RedisModuleTypeMethods structure. Once the RedisModuleTypeMethods
5050
* structure is changed, this version number needs to be changed synchronistically. */
5151
#define REDISMODULE_TYPE_METHOD_VERSION 5
5252

@@ -67,11 +67,14 @@ typedef long long ustime_t;
6767
#define REDISMODULE_OPEN_KEY_NOEFFECTS (1<<20)
6868
/* Allow access expired key that haven't deleted yet */
6969
#define REDISMODULE_OPEN_KEY_ACCESS_EXPIRED (1<<21)
70+
/* Allow access trimmed key that haven't deleted yet */
71+
#define REDISMODULE_OPEN_KEY_ACCESS_TRIMMED (1<<22)
72+
7073

7174
/* Mask of all REDISMODULE_OPEN_KEY_* values. Any new mode should be added to this list.
7275
* Should not be used directly by the module, use RM_GetOpenKeyModesAll instead.
7376
* Located here so when we will add new modes we will not forget to update it. */
74-
#define _REDISMODULE_OPEN_KEY_ALL REDISMODULE_READ | REDISMODULE_WRITE | REDISMODULE_OPEN_KEY_NOTOUCH | REDISMODULE_OPEN_KEY_NONOTIFY | REDISMODULE_OPEN_KEY_NOSTATS | REDISMODULE_OPEN_KEY_NOEXPIRE | REDISMODULE_OPEN_KEY_NOEFFECTS | REDISMODULE_OPEN_KEY_ACCESS_EXPIRED
77+
#define _REDISMODULE_OPEN_KEY_ALL REDISMODULE_READ | REDISMODULE_WRITE | REDISMODULE_OPEN_KEY_NOTOUCH | REDISMODULE_OPEN_KEY_NONOTIFY | REDISMODULE_OPEN_KEY_NOSTATS | REDISMODULE_OPEN_KEY_NOEXPIRE | REDISMODULE_OPEN_KEY_NOEFFECTS | REDISMODULE_OPEN_KEY_ACCESS_EXPIRED | REDISMODULE_OPEN_KEY_ACCESS_TRIMMED
7578

7679
/* List push and pop */
7780
#define REDISMODULE_LIST_HEAD 0
@@ -126,7 +129,7 @@ typedef long long ustime_t;
126129
#define REDISMODULE_HASH_CFIELDS (1<<2)
127130
#define REDISMODULE_HASH_EXISTS (1<<3)
128131
#define REDISMODULE_HASH_COUNT_ALL (1<<4)
129-
#define REDISMODULE_HASH_EXPIRE_TIME (1<<5)
132+
#define REDISMODULE_HASH_EXPIRE_TIME (1<<5)
130133

131134
#define REDISMODULE_CONFIG_DEFAULT 0 /* This is the default for a module config. */
132135
#define REDISMODULE_CONFIG_IMMUTABLE (1ULL<<0) /* Can this value only be set at startup? */
@@ -215,11 +218,13 @@ typedef struct RedisModuleStreamID {
215218
#define REDISMODULE_CTX_FLAGS_SERVER_STARTUP (1<<24)
216219
/* This context can call execute debug commands. */
217220
#define REDISMODULE_CTX_FLAGS_DEBUG_ENABLED (1<<25)
221+
/* Trim is in progress due to slot migration. */
222+
#define REDISMODULE_CTX_TRIM_IN_PROGRESS (1<<26)
218223

219224
/* Next context flag, must be updated when adding new flags above!
220225
This flag should not be used directly by the module.
221226
* Use RedisModule_GetContextFlagsAll instead. */
222-
#define _REDISMODULE_CTX_FLAGS_NEXT (1<<26)
227+
#define _REDISMODULE_CTX_FLAGS_NEXT (1<<27)
223228

224229
/* Keyspace changes notification classes. Every class is associated with a
225230
* character for configuration purposes.
@@ -272,6 +277,7 @@ This flag should not be used directly by the module.
272277
#define REDISMODULE_CLUSTER_FLAG_NONE 0
273278
#define REDISMODULE_CLUSTER_FLAG_NO_FAILOVER (1<<1)
274279
#define REDISMODULE_CLUSTER_FLAG_NO_REDIRECTION (1<<2)
280+
#define REDISMODULE_CLUSTER_FLAG_NO_TRIM (1<<3)
275281

276282
#define REDISMODULE_NOT_USED(V) ((void) V)
277283

@@ -515,7 +521,8 @@ typedef void (*RedisModuleEventLoopOneShotFunc)(void *user_data);
515521
#define REDISMODULE_EVENT_KEY 17
516522
#define REDISMODULE_EVENT_CLUSTER_SLOT_MIGRATION 18
517523
#define REDISMODULE_EVENT_CLUSTER_SLOT_MIGRATION_TRIM 19
518-
#define _REDISMODULE_EVENT_NEXT 20 /* Next event flag, should be updated if a new event added. */
524+
#define REDISMODULE_EVENT_CLUSTER_UNOWNEDKEYS 20
525+
#define _REDISMODULE_EVENT_NEXT 21 /* Next event flag, should be updated if a new event added. */
519526

520527
typedef struct RedisModuleEvent {
521528
uint64_t id; /* REDISMODULE_EVENT_... defines. */
@@ -604,7 +611,7 @@ static const RedisModuleEvent
604611
/* Deprecated since Redis 7.0, not used anymore. */
605612
__attribute__ ((deprecated))
606613
RedisModuleEvent_ReplBackup = {
607-
REDISMODULE_EVENT_REPL_BACKUP,
614+
REDISMODULE_EVENT_REPL_BACKUP,
608615
1
609616
},
610617
RedisModuleEvent_ReplAsyncLoad = {
@@ -634,6 +641,10 @@ static const RedisModuleEvent
634641
RedisModuleEvent_ClusterSlotMigrationTrim = {
635642
REDISMODULE_EVENT_CLUSTER_SLOT_MIGRATION_TRIM,
636643
1
644+
},
645+
RedisModuleEvent_ClusterUnownedKeys = {
646+
REDISMODULE_EVENT_CLUSTER_UNOWNEDKEYS,
647+
1
637648
};
638649

639650
/* Those are values that are used for the 'subevent' callback argument. */
@@ -726,6 +737,10 @@ static const RedisModuleEvent
726737
#define REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_TRIM_BACKGROUND 2
727738
#define _REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_TRIM_NEXT 3
728739

740+
#define REDISMODULE_SUBEVENT_CLUSTER_UNOWNEDKEYS_DETECTED 0
741+
#define REDISMODULE_SUBEVENT_CLUSTER_UNOWNEDKEYS_RESOLVED 1
742+
#define _REDISMODULE_SUBEVENT_CLUSTER_UNOWNEDKEYS_NEXT 2
743+
729744
/* RedisModuleClientInfo flags. */
730745
#define REDISMODULE_CLIENTINFO_FLAG_SSL (1<<0)
731746
#define REDISMODULE_CLIENTINFO_FLAG_PUBSUB (1<<1)
@@ -1343,6 +1358,7 @@ REDISMODULE_API void (*RedisModule_GetRandomBytes)(unsigned char *dst, size_t le
13431358
REDISMODULE_API void (*RedisModule_GetRandomHexChars)(char *dst, size_t len) REDISMODULE_ATTR;
13441359
REDISMODULE_API void (*RedisModule_SetDisconnectCallback)(RedisModuleBlockedClient *bc, RedisModuleDisconnectFunc callback) REDISMODULE_ATTR;
13451360
REDISMODULE_API void (*RedisModule_SetClusterFlags)(RedisModuleCtx *ctx, uint64_t flags) REDISMODULE_ATTR;
1361+
REDISMODULE_API uint64_t (*RedisModule_GetClusterFlags)(RedisModuleCtx *ctx) REDISMODULE_ATTR;
13461362
REDISMODULE_API unsigned int (*RedisModule_ClusterKeySlot)(RedisModuleString *key) REDISMODULE_ATTR;
13471363
REDISMODULE_API unsigned int (*RedisModule_ClusterKeySlotC)(const char *keystr, size_t keylen) REDISMODULE_ATTR;
13481364
REDISMODULE_API const char *(*RedisModule_ClusterCanonicalKeyNameInSlot)(unsigned int slot) REDISMODULE_ATTR;
@@ -1740,6 +1756,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
17401756
REDISMODULE_GET_API(GetRandomBytes);
17411757
REDISMODULE_GET_API(GetRandomHexChars);
17421758
REDISMODULE_GET_API(SetClusterFlags);
1759+
REDISMODULE_GET_API(GetClusterFlags);
17431760
REDISMODULE_GET_API(ClusterKeySlot);
17441761
REDISMODULE_GET_API(ClusterKeySlotC);
17451762
REDISMODULE_GET_API(ClusterCanonicalKeyNameInSlot);
@@ -1828,9 +1845,8 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
18281845
REDISMODULE_GET_API(ConfigSetEnum);
18291846
REDISMODULE_GET_API(ConfigSetNumeric);
18301847

1831-
18321848
#ifdef REDISMODULE_RLEC_API_DEFS
1833-
REDISMODULE_RLEC_API_DEFS
1849+
REDISMODULE_RLEC_API_DEFS
18341850
#endif
18351851

18361852
if (RedisModule_IsModuleNameBusy && RedisModule_IsModuleNameBusy(name)) return REDISMODULE_ERR;

0 commit comments

Comments
 (0)