From 05557f6de7fd7a4ae29614ae2cde78cd08ebd1b9 Mon Sep 17 00:00:00 2001 From: antirez Date: Mon, 6 Apr 2009 10:29:36 +0200 Subject: [PATCH] Don't accept SAVE if BGSAVE is in progress --- TODO | 4 ++++ redis.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/TODO b/TODO index a8108a7aa..7040af2c1 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,6 @@ BEFORE REDIS 1.0.0-rc1 +- Remove max number of args limit - GETSET - Fix pure-PHP lib version 4 for the new protocol - persistent expires @@ -9,6 +10,9 @@ BEFORE REDIS 1.0.0-rc1 - replication automated tests - replication non stopping master<->slave syncronization - an external tool able to perform the 'difference' between two Redis servers. It's like 'diff', but against Redis servers, and the output is the set of commands needed to turn the first server into the second, suitable to be sent via netcat. +- Shutdown must kill other background savings before to start saving. Otherwise the DB can get replaced by the child that rename(2) after the parent for some reason. +- Add missing commands in documentation +- Document replication $ ./redis-diff 192.168.1.1 192.168.1.2 > diff.txt $ cat diff.txt | nc 192.168.1.1 6379 diff --git a/redis.c b/redis.c index 3d225ba93..00df17e67 100644 --- a/redis.c +++ b/redis.c @@ -2310,6 +2310,10 @@ static void typeCommand(redisClient *c) { } static void saveCommand(redisClient *c) { + if (server.bgsaveinprogress) { + addReplySds(c,sdsnew("-ERR background save in progress\r\n")); + return; + } if (rdbSave(server.dbfilename) == REDIS_OK) { addReply(c,shared.ok); } else { -- GitLab