diff options
author | Guy Benoish <guy.benoish@redislabs.com> | 2018-03-22 17:22:26 +0700 |
---|---|---|
committer | Guy Benoish <guy.benoish@redislabs.com> | 2018-03-22 17:22:26 +0700 |
commit | fa00e20b165c5e55f437ceddde9f492cafd38143 (patch) | |
tree | 67bce0d4b6420751f6b3234528e248536ae336b3 | |
parent | 3a5bf75ede389981f1e63b305dad431c8ccc91ea (diff) | |
download | redis-fa00e20b165c5e55f437ceddde9f492cafd38143.tar.gz |
Make blocking list commands send keyspace notifications
-rw-r--r-- | src/blocked.c | 1 | ||||
-rw-r--r-- | src/t_list.c | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/blocked.c b/src/blocked.c index f438c3353..6fb274d4b 100644 --- a/src/blocked.c +++ b/src/blocked.c @@ -283,6 +283,7 @@ void handleClientsBlockedOnKeys(void) { if (listTypeLength(o) == 0) { dbDelete(rl->db,rl->key); + notifyKeyspaceEvent(NOTIFY_GENERIC,"del",rl->key,rl->db->id); } /* We don't call signalModifiedKey() as it was already called * when an element was pushed on the list. */ diff --git a/src/t_list.c b/src/t_list.c index c7e6aac00..1414ff31a 100644 --- a/src/t_list.c +++ b/src/t_list.c @@ -639,6 +639,10 @@ int serveClientBlockedOnList(client *receiver, robj *key, robj *dstkey, redisDb addReplyMultiBulkLen(receiver,2); addReplyBulk(receiver,key); addReplyBulk(receiver,value); + + /* Notify event. */ + char *event = (where == LIST_HEAD) ? "lpop" : "rpop"; + notifyKeyspaceEvent(NOTIFY_LIST,event,key,receiver->db->id); } else { /* BRPOPLPUSH */ robj *dstobj = @@ -663,6 +667,9 @@ int serveClientBlockedOnList(client *receiver, robj *key, robj *dstkey, redisDb db->id,argv,3, PROPAGATE_AOF| PROPAGATE_REPL); + + /* Notify event ("lpush" was notified by rpoplpushHandlePush). */ + notifyKeyspaceEvent(NOTIFY_LIST,"rpop",key,receiver->db->id); } else { /* BRPOPLPUSH failed because of wrong * destination type. */ |