From 5c78f876661497a8588eed48b5c04cb6848280f4 Mon Sep 17 00:00:00 2001 From: antirez Date: Mon, 12 May 2014 10:01:59 +0200 Subject: [PATCH] RESTORE: reply with -BUSYKEY special error code. The error when the target key is busy was a generic one, while it makes sense to be able to distinguish between the target key busy error and the others easily. --- src/cluster.c | 2 +- src/redis.c | 2 ++ src/redis.h | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/cluster.c b/src/cluster.c index ddea84be..d9d90419 100644 --- a/src/cluster.c +++ b/src/cluster.c @@ -3791,7 +3791,7 @@ void restoreCommand(redisClient *c) { /* Make sure this key does not already exist here... */ if (!replace && lookupKeyWrite(c->db,c->argv[1]) != NULL) { - addReplyError(c,"Target key name is busy."); + addReply(c,shared.busykeyerr); return; } diff --git a/src/redis.c b/src/redis.c index 38737ea0..5afb24dd 100644 --- a/src/redis.c +++ b/src/redis.c @@ -1316,6 +1316,8 @@ void createSharedObjects(void) { "-EXECABORT Transaction discarded because of previous errors.\r\n")); shared.noreplicaserr = createObject(REDIS_STRING,sdsnew( "-NOREPLICAS Not enough good slaves to write.\r\n")); + shared.busykeyerr = createObject(REDIS_STRING,sdsnew( + "-BUSYKEY Target key name already exists.\r\n")); shared.space = createObject(REDIS_STRING,sdsnew(" ")); shared.colon = createObject(REDIS_STRING,sdsnew(":")); shared.plus = createObject(REDIS_STRING,sdsnew("+")); diff --git a/src/redis.h b/src/redis.h index b234185b..9c5507bb 100644 --- a/src/redis.h +++ b/src/redis.h @@ -548,7 +548,7 @@ struct sharedObjectsStruct { *emptymultibulk, *wrongtypeerr, *nokeyerr, *syntaxerr, *sameobjecterr, *outofrangeerr, *noscripterr, *loadingerr, *slowscripterr, *bgsaveerr, *masterdownerr, *roslaveerr, *execaborterr, *noautherr, *noreplicaserr, - *oomerr, *plus, *messagebulk, *pmessagebulk, *subscribebulk, + *busykeyerr, *oomerr, *plus, *messagebulk, *pmessagebulk, *subscribebulk, *unsubscribebulk, *psubscribebulk, *punsubscribebulk, *del, *rpop, *lpop, *lpush, *emptyscan, *minstring, *maxstring, *select[REDIS_SHARED_SELECT_CMDS],