X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/b39619d8e73273cd679f560854e34a9a974d9eb4..4c5f0966b2e582981d9fdaf3b511c6cf4ac4d4d5:/src/debug.c diff --git a/src/debug.c b/src/debug.c index a727962e..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;