X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/120b9ba8f82699f1987be17ccde597bcfa9fae46..72690afdd26b118589ddec3915cdb4790b9d4812:/src/debug.c diff --git a/src/debug.c b/src/debug.c index 47d4c85d..c1fc26cf 100644 --- a/src/debug.c +++ b/src/debug.c @@ -177,7 +177,26 @@ void computeDatasetDigest(unsigned char *final) { void debugCommand(redisClient *c) { if (!strcasecmp(c->argv[1]->ptr,"segfault")) { *((char*)-1) = 'x'; + } else if (!strcasecmp(c->argv[1]->ptr,"flushcache")) { + if (!server.ds_enabled) { + addReplyError(c, "DEBUG FLUSHCACHE called with diskstore off."); + return; + } else if (server.bgsavethread != (pthread_t) -1) { + addReplyError(c, "Can't flush cache while BGSAVE is in progress."); + return; + } else { + /* To flush the whole cache we need to wait for everything to + * be flushed on disk... */ + cacheForcePointInTime(); + emptyDb(); + addReply(c,shared.ok); + return; + } } else if (!strcasecmp(c->argv[1]->ptr,"reload")) { + if (server.ds_enabled) { + addReply(c,shared.ok); + return; + } if (rdbSave(server.dbfilename) != REDIS_OK) { addReply(c,shared.err); return; @@ -198,11 +217,12 @@ void debugCommand(redisClient *c) { redisLog(REDIS_WARNING,"Append Only File loaded by DEBUG LOADAOF"); addReply(c,shared.ok); } else if (!strcasecmp(c->argv[1]->ptr,"object") && c->argc == 3) { - dictEntry *de = dictFind(c->db->dict,c->argv[2]->ptr); + dictEntry *de; robj *val; char *strenc; - if (!de) { + if (server.ds_enabled) lookupKeyRead(c->db,c->argv[2]); + if ((de = dictFind(c->db->dict,c->argv[2]->ptr)) == NULL) { addReply(c,shared.nokeyerr); return; }