X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/7d8c555e92954b02d40c15702476fd48e55c4f94..be6f639564a472a54371ecf846a132218c7039ae:/src/debug.c?ds=sidebyside diff --git a/src/debug.c b/src/debug.c index 940a0380..966e0eb4 100644 --- a/src/debug.c +++ b/src/debug.c @@ -100,7 +100,7 @@ void computeDatasetDigest(unsigned char *final) { mixDigest(digest,key,sdslen(key)); /* Make sure the key is loaded if VM is active */ - o = lookupKeyRead(db,keyobj); + o = dictGetEntryVal(de); aux = htonl(o->type); mixDigest(digest,&aux,sizeof(aux)); @@ -159,7 +159,7 @@ void computeDatasetDigest(unsigned char *final) { xorDigest(digest,eledigest,20); zzlNext(zl,&eptr,&sptr); } - } else if (o->encoding == REDIS_ENCODING_RAW) { + } else if (o->encoding == REDIS_ENCODING_SKIPLIST) { zset *zs = o->ptr; dictIterator *di = dictGetIterator(zs->dict); dictEntry *de; @@ -212,26 +212,7 @@ 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; @@ -256,7 +237,6 @@ void debugCommand(redisClient *c) { robj *val; char *strenc; - 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; @@ -301,6 +281,12 @@ void debugCommand(redisClient *c) { d = sdscatprintf(d, "%02x",digest[j]); addReplyStatus(c,d); sdsfree(d); + } else if (!strcasecmp(c->argv[1]->ptr,"sleep") && c->argc == 3) { + double dtime = strtod(c->argv[2]->ptr,NULL); + long long utime = dtime*1000000; + + usleep(utime); + addReply(c,shared.ok); } else { addReplyError(c, "Syntax error, try DEBUG [SEGFAULT|OBJECT |SWAPIN |SWAPOUT |RELOAD]");