summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOran Agra <oran@redislabs.com>2019-12-23 10:15:52 +0200
committerOran Agra <oran@redislabs.com>2019-12-23 10:15:52 +0200
commit660645c7421fab93b69205ff7208e577ef225f0d (patch)
treebeed0d689d613077e6fd3ed4973005e36cc617ee
parent324e22accf457edc996971bc97f5474349cd7c4c (diff)
downloadredis-660645c7421fab93b69205ff7208e577ef225f0d.tar.gz
modules don't signalModifiedKey in setKey() since that's done (optionally) in RM_CloseKey
-rw-r--r--src/db.c6
-rw-r--r--src/module.c6
-rw-r--r--src/server.h2
-rw-r--r--src/t_string.c2
4 files changed, 8 insertions, 8 deletions
diff --git a/src/db.c b/src/db.c
index 32bb35652..bb93a6071 100644
--- a/src/db.c
+++ b/src/db.c
@@ -220,7 +220,7 @@ void dbOverwrite(redisDb *db, robj *key, robj *val) {
* unless 'keepttl' is true.
*
* All the new keys in the database should be created via this interface. */
-void genericSetKey(redisDb *db, robj *key, robj *val, int keepttl) {
+void genericSetKey(redisDb *db, robj *key, robj *val, int keepttl, int signal) {
if (lookupKeyWrite(db,key) == NULL) {
dbAdd(db,key,val);
} else {
@@ -228,12 +228,12 @@ void genericSetKey(redisDb *db, robj *key, robj *val, int keepttl) {
}
incrRefCount(val);
if (!keepttl) removeExpire(db,key);
- signalModifiedKey(db,key);
+ if (signal) signalModifiedKey(db,key);
}
/* Common case for genericSetKey() where the TTL is not retained. */
void setKey(redisDb *db, robj *key, robj *val) {
- genericSetKey(db,key,val,0);
+ genericSetKey(db,key,val,0,1);
}
/* Return true if the specified key exists in the specified database.
diff --git a/src/module.c b/src/module.c
index 705ffec2c..afeb9c046 100644
--- a/src/module.c
+++ b/src/module.c
@@ -2128,7 +2128,7 @@ RedisModuleString *RM_RandomKey(RedisModuleCtx *ctx) {
int RM_StringSet(RedisModuleKey *key, RedisModuleString *str) {
if (!(key->mode & REDISMODULE_WRITE) || key->iter) return REDISMODULE_ERR;
RM_DeleteKey(key);
- setKey(key->db,key->key,str);
+ genericSetKey(key->db,key->key,str,0,0);
key->value = str;
return REDISMODULE_OK;
}
@@ -2208,7 +2208,7 @@ int RM_StringTruncate(RedisModuleKey *key, size_t newlen) {
if (key->value == NULL) {
/* Empty key: create it with the new size. */
robj *o = createObject(OBJ_STRING,sdsnewlen(NULL, newlen));
- setKey(key->db,key->key,o);
+ genericSetKey(key->db,key->key,o,0,0);
key->value = o;
decrRefCount(o);
} else {
@@ -3597,7 +3597,7 @@ int RM_ModuleTypeSetValue(RedisModuleKey *key, moduleType *mt, void *value) {
if (!(key->mode & REDISMODULE_WRITE) || key->iter) return REDISMODULE_ERR;
RM_DeleteKey(key);
robj *o = createModuleObject(mt,value);
- setKey(key->db,key->key,o);
+ genericSetKey(key->db,key->key,o,0,0);
decrRefCount(o);
key->value = o;
return REDISMODULE_OK;
diff --git a/src/server.h b/src/server.h
index 8e354c03d..c6d40f704 100644
--- a/src/server.h
+++ b/src/server.h
@@ -2032,7 +2032,7 @@ int objectSetLRUOrLFU(robj *val, long long lfu_freq, long long lru_idle,
#define LOOKUP_NOTOUCH (1<<0)
void dbAdd(redisDb *db, robj *key, robj *val);
void dbOverwrite(redisDb *db, robj *key, robj *val);
-void genericSetKey(redisDb *db, robj *key, robj *val, int keepttl);
+void genericSetKey(redisDb *db, robj *key, robj *val, int keepttl, int signal);
void setKey(redisDb *db, robj *key, robj *val);
int dbExists(redisDb *db, robj *key);
robj *dbRandomKey(redisDb *db);
diff --git a/src/t_string.c b/src/t_string.c
index 8ccd69eb9..3174e9ccd 100644
--- a/src/t_string.c
+++ b/src/t_string.c
@@ -84,7 +84,7 @@ void setGenericCommand(client *c, int flags, robj *key, robj *val, robj *expire,
addReply(c, abort_reply ? abort_reply : shared.null[c->resp]);
return;
}
- genericSetKey(c->db,key,val,flags & OBJ_SET_KEEPTTL);
+ genericSetKey(c->db,key,val,flags & OBJ_SET_KEEPTTL,1);
server.dirty++;
if (expire) setExpire(c,c->db,key,mstime()+milliseconds);
notifyKeyspaceEvent(NOTIFY_STRING,"set",key,c->db->id);