From 6b056d29f31c01188c4758ade8900c847bbd025c Mon Sep 17 00:00:00 2001 From: "zhaozhao.zz" Date: Fri, 22 Nov 2019 16:38:49 +0800 Subject: [PATCH] block: propagate BRPOPLPUSH as RPOPLPUSH when unblock --- src/server.c | 1 + src/server.h | 2 +- src/t_list.c | 17 +++++------------ 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/server.c b/src/server.c index 3ad8664fc..210c4415d 100644 --- a/src/server.c +++ b/src/server.c @@ -2464,6 +2464,7 @@ void initServerConfig(void) { server.pexpireCommand = lookupCommandByCString("pexpire"); server.xclaimCommand = lookupCommandByCString("xclaim"); server.xgroupCommand = lookupCommandByCString("xgroup"); + server.rpoplpushCommand = lookupCommandByCString("rpoplpush"); /* Slow log */ server.slowlog_log_slower_than = CONFIG_DEFAULT_SLOWLOG_LOG_SLOWER_THAN; diff --git a/src/server.h b/src/server.h index 22e484462..1975646ed 100644 --- a/src/server.h +++ b/src/server.h @@ -1159,7 +1159,7 @@ struct redisServer { *lpopCommand, *rpopCommand, *zpopminCommand, *zpopmaxCommand, *sremCommand, *execCommand, *expireCommand, *pexpireCommand, *xclaimCommand, - *xgroupCommand; + *xgroupCommand, *rpoplpushCommand; /* Fields used only for stats */ time_t stat_starttime; /* Server start time */ long long stat_numcommands; /* Number of processed commands */ diff --git a/src/t_list.c b/src/t_list.c index 9bbd61de3..eaeaa8e48 100644 --- a/src/t_list.c +++ b/src/t_list.c @@ -653,20 +653,13 @@ int serveClientBlockedOnList(client *receiver, robj *key, robj *dstkey, redisDb if (!(dstobj && checkType(receiver,dstobj,OBJ_LIST))) { - /* Propagate the RPOP operation. */ - argv[0] = shared.rpop; - argv[1] = key; - propagate(server.rpopCommand, - db->id,argv,2, - PROPAGATE_AOF| - PROPAGATE_REPL); rpoplpushHandlePush(receiver,dstkey,dstobj, value); - /* Propagate the LPUSH operation. */ - argv[0] = shared.lpush; - argv[1] = dstkey; - argv[2] = value; - propagate(server.lpushCommand, + /* Propagate the RPOPLPUSH operation. */ + argv[0] = shared.rpoplpush; + argv[1] = key; + argv[2] = dstkey; + propagate(server.rpoplpushCommand, db->id,argv,3, PROPAGATE_AOF| PROPAGATE_REPL); -- GitLab